Springboot配置静态不拦截及视图渲染页面指向

本文介绍如何在Spring MVC项目中正确配置静态资源拦截与视图解析,确保控制器能正常返回页面。通过在MyMVCConfig配置类中设置资源处理器及内部资源视图解析器,解决页面找不到的问题。

在config包下新建MyMVCConfig继承WebMvcConfigurationSupport

// 设置静态资源不拦截
	protected void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/js/**").addResourceLocations("/js/");
		registry.addResourceHandler("/image/**").addResourceLocations("/image/");
		registry.addResourceHandler("/css/**").addResourceLocations("/css/");
	}

在项目中配置了拦截器后,controller无法返回页面了,报错信息说找不到页面,配置文件什么的都没有动,最后通过在MyMVCConfig配置类中重新指定页面才解决问题:

// 重新配置页面指向
	@Bean
	public InternalResourceViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		viewResolver.setPrefix("/page/");	//页面所在位置
		viewResolver.setSuffix(".jsp");
		viewResolver.setViewClass(JstlView.class);
		return viewResolver;
	}

在 Spring Boot 中,你可以使用拦截器(Interceptor)来拦截页面请求。下面是一个简单的示例,展示了如何在 Spring Boot 中配置和使用拦截器。 首先,你需要创建一个拦截器类,实现 Spring 的 HandlerInterceptor 接口。例如,你可以创建一个名为 MyInterceptor 的拦截器类: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行拦截操作,返回 true 表示继续处理,返回 false 表示拦截 // 可以在这里进行权限验证、日志记录等操作 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后调用,但是在视图渲染之前(Controller 方法调用之后) // 可以在这里对 modelAndView 进行处理,添加公共数据等操作 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 整个请求(包括视图渲染)完成之后调用 // 可以在这里进行一些资源清理操作 } } ``` 然后,在你的应用程序中配置拦截器。你可以创建一个配置类,实现 WebMvcConfigurer 接口,并重写 addInterceptors 方法: ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class MyInterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // 添加你的拦截器类,并指定拦截的路径 registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); } } ``` 在上述示例中,我们将 MyInterceptor 拦截器添加到了所有路径("/**")上。你可以根据需要修改拦截的路径。 现在,当你启动应用程序并访问页面时,拦截器会拦截请求并执行相应的操作。你可以在 preHandle 方法中进行权限验证等操作,也可以在 postHandle 方法中对模型和视图进行处理。 请注意,拦截器在 Spring Boot 中只能拦截页面请求,并拦截静态资源请求。如果你需要拦截静态资源请求,可以考虑使用过滤器(Filter)来实现。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值