我要访问的路径是:http://localhost/sp/demo/data,sp是我的项目名称,我想拦截以/demo开头的url
1、spring配置文件中需要配置的信息:
<!-- 自定义spring拦截器,控制用户操作时的访问权限 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/demo/**" />
<mvc:exclude-mapping path="/login/**" />
<bean class="cn.ddx.interceptor.PermsInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
2、自定义的拦截器代码:
package cn.ddx.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class PermsInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("This is preHandle.");
return true;
}
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("This is afterCompletion.");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("This is postHandle.");
}
}
3、web.xml文件中spring的配置信息:
<!-- 配置spring的mvc -->
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>/</url-pattern> 这里是关键,我开始配置的是/*根本拦截不到,后来改成/就可以了
</servlet-mapping>
如果这里配置成/*,那么拦截器配置信息需要修改成:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**/demo/**" />
<mvc:exclude-mapping path="/login/**" />
<bean class="cn.ddx.interceptor.PermsInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
PS:/和/*还是有区别的:
<url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)
=====================================================================================
参考链接:http://blog.youkuaiyun.com/A_lele123/article/details/43704457
本文详细介绍了如何在 Spring MVC 中配置拦截器来限制以特定路径开头的 URL 访问,并提供了完整的配置示例及代码实现。
2017

被折叠的 条评论
为什么被折叠?



