SpringMVC——WebMvcConfigurer
WebMvcConfigurer
是 Spring MVC 提供的一个接口,允许你自定义 Spring MVC 的配置。通过实现这个接口,你可以注册拦截器、添加视图控制器、配置视图解析器等,以满足你的应用程序特定需求。这个接口提供了多个回调方法,你可以选择性地实现这些方法。
WebMvcConfigurer
接口的主要方法如下:
1、
addInterceptors:
用于注册拦截器。你可以通过该方法添加自定义拦截器,拦截器可用于在请求处理之前或之后执行一些操作。
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**") // 对所有请求应用拦截器
.excludePathPatterns("/login", "/register"); // 排除登录和注册页面
}
LoginInterceptor类
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 在请求处理之前进行登录验证
// 这里可以检查用户是否已登录,例如检查 session 中是否有登录信息
// 示例:假设登录信息存储在 session 的 "user" 属性中
Object user = request.getSession().getAttribute("user");
if (user == null) {
// 用户未登录,重定向到登录页面
response.sendRedirect("/login");
return false; // 中断请求,不继续执行
}
// 用户已登录,允许请求继续执行
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// 请求处理之后,渲染视图之前的操作
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// 请求处理完成后的操作
}
}
2、addViewControllers:
用于注册简单的视图控制器。通过该方法,你可以直接将一个 URL 映射到视图名称,而无需编写控制器方法。
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/home").setViewName("home");
registry.addViewController("/login").setViewName("login");
}
3、configureViewResolvers:
用于配置视图解析器。通过该方法,你可以配置视图解析器,以决定如何解析视图名称。
@Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp("/WEB-INF/views/", ".jsp"); }
4、addResourceHandlers
用于配置静态资源处理。通过该方法,你可以添加处理静态资源的处理程序。:
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/public-resources/"); }
5、configureDefaultServletHandling
配置静态资源的处理。通过该方法,你可以启用或禁用默认的 Servlet 处理静态资源。:
@Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); }
6、addCorsMappings
配置跨域资源共享。:
@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("https://example.com") .allowedMethods("GET", "POST") .maxAge(3600); }
7、configurePathMatch:用于配置路径匹配规则。
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false)
.setUseTrailingSlashMatch(true);
}
8、configureContentNegotiation:用于配置内容协商策略。
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false)
.favorParameter(true)
.parameterName("format")
.ignoreAcceptHeader(true)
.useJaf(false)
.defaultContentType(MediaType.APPLICATION_JSON)
.mediaType("xml", MediaType.APPLICATION_XML);
}
这是 WebMvcConfigurer
接口的一小部分,实际上它还提供其他方法,允许程序员更详细地配置 Spring MVC 的行为。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!