Spring mvc 始终在url中添加尾随斜杠
我将SpringMVC与Spring控制器一起使用。如果url末尾不存在尾随斜杠,我希望始终添加它。我该怎么做Spring mvc 始终在url中添加尾随斜杠,spring-mvc,Spring Mvc,我将SpringMVC与Spring控制器一起使用。如果url末尾不存在尾随斜杠,我希望始终添加它。我该怎么做 www.mysite.com/something -> www.mysite.com/something/ www.mysite.com/somethingelse/ -> www.mysite.com/somethingelse/ 您可以使用HandlerInterceptor实现这一点: 拦截器将检查请求URI是否以斜杠结尾。 如果是,则处理请求;如果不是,则使用带有
www.mysite.com/something -> www.mysite.com/something/
www.mysite.com/somethingelse/ -> www.mysite.com/somethingelse/
您可以使用
HandlerInterceptor
实现这一点:
拦截器将检查请求URI是否以斜杠结尾。
如果是,则处理请求;如果不是,则使用带有尾随斜杠的相同URI重定向响应。
在下面的示例中,我忽略带有查询字符串的请求,因为我不知道您希望如何处理这种情况
拦截器:
@组件
公共类TrailingSlashInterceptor扩展HandlerInterceptorAdapter实现HandlerInterceptor{
@凌驾
公共布尔预处理(HttpServletRequest请求、HttpServletResponse响应、对象处理程序)引发异常{
if(StringUtils.isBlank(request.getQueryString())&&!request.getRequestURI().endsWith(“/”){
response.sendRedirect(request.getRequestURL().append(“/”).toString());
返回false;
}
返回true;
}
}
在配置中注册并映射拦截器:
@Autowired
私有跟踪slashinterceptor跟踪slashinterceptor;
@凌驾
公共无效附加接收器(侦听器注册表){
登记处
.addInterceptor(trailingSlashInterceptor)
.addPathPatterns(“/**”)
.ExcludePathPathPatterns(“/static/**”);
}
我注意到,在JSP中,如果有的话,必须将URL以斜杠开头,例如:
使用此方法,所有没有尾部斜杠的请求将临时重定向(302)到带有尾部斜杠的同一URI。您如何运行此应用程序?Tomcat、Jetty、独立或嵌入式?@diginoise Tomcat。