Java Filter 和 interceptors 拦截器 综合使用问题

来源:互联网 发布:股票主力分析软件 编辑:程序博客网 时间:2024/06/05 03:37

文章纯原创,刚开始接触,如有大神请多开车,不要赶下车...

正文:

1、起因:

环境是在SSM下搭建的,一个后台管理系统为了限制用户未登录的情况下只能访问 登录页面(login.jsp),登录页面当中也引用了一些静态资源文件如:css, js, image 等。

2、filter 和 interceptors的环境配置:

filter 针对性的拦截配置文件

web.xml 配置文件中设置
<!-- 登录过滤器 -->
<filter>
<filter-name>PrivilegeFilter</filter-name>
<filter-class>com.zxl.filter.PrivilegeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrivilegeFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.html</url-pattern>
</filter-mapping>

interceptors 拦截器配置:

实体类:

public class BackManageInterceptor implements HandlerInterceptor {

@Override

public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2) throws Exception {

}

}

springmvc.xml:

<!-- 拦截器 -->
<mvc:interceptors>
<bean class="com.zxl.interceptor.BackManageInterceptor"></bean>
</mvc:interceptors>

3、错误情况:

按照上面等配置的话一开始访问登录页面的话,filter 文件中进行判断如果是 login.jsp 的访问路径的话,进行忽略。但是interceptors 拦截器就把登录页面的一些样式.css 和部分图片进行拦截了,登录页面显示异常。同时无法访问登录用户调用数据库验证用户是否存在问题。

因此在 interceptors 拦截器页面的 preHandle  方法内添加后缀为登录页面的控制器,后缀为静态资源文件的一些文件设置,此时在运行的话,访问login.jsp登录页面正常,进入各个页面的控制器方法或者静态 .jsp 页面也正常访问。

我在登录后的页面当中添加了退出登录的按钮,清空session,并 请求转发到 login.jsp 页面,此时再进行访问 非登录页面的时候,任何 .jsp 成功拦截并跳转登录页面,任何控制器方法成功拦截,跳转登录页面。

但是如果在地址栏直接访问项目当中的静态资源文件的话,也能成功。这里就不知道问题所在了,看看有没有了解的。

原创粉丝点击