servlet拦截器在WebSphere 8.5中运行时不起作用
时间: 2017-10-13来源:开源中国
前景提要
HDC调试需求开发(15万预算),能者速来!>>>
我的项目中融合了SPring框架,但是我想在项目中使用servlet自定义拦截器,而不是使用Spring配置的拦截器。
我想要实现的功能是:
当用户访问应用时,如果没有登陆,则被拦截器拦截到,跳转到登陆页面,登陆成功后,返回登陆查询页面。
我的写法如下:
web.xml <filter> <filter-name>userLoginServletFilter1</filter-name> <filter-class>com.filter.UserLoginServletFilter2</filter-class> </filter> <!-- 拦截所有的URL,判断是否登陆--> <filter-mapping> <filter-name>userLoginServletFilter1</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
filter类 package com.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class UserLoginServletFilter implements Filter { @Override public void destroy() { System.out.println("destroy"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpSession s = req.getSession(); if(req.getRequestURI().endsWith("login.jsp") || req.getRequestURI().endsWith("UserLoginServlet")) { System.out.println("Filter1 start"); filterChain.doFilter(request, response); System.out.println("filter1 end"); return ; } if(null == s.getAttribute("user")) { System.out.println("Filter1 start.."); ((HttpServletResponse)response).sendRedirect("login.jsp"); return; } else { System.out.println("Filter1 start...."); filterChain.doFilter(request, response); } } @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("init"); } } UserLoginServletFilter
我的web.xml总出了这个拦截器只有一个编码过滤器,实际运行中发现,在本地tomcat中运行时,我想要的功能能够正常实现;
但是在服务器上的WebSphere 8.5中运行时,这个拦截器首次(清除IE缓存)在IE或者火狐上登陆时能正常被拦截器拦截(日志正常打印),且跳到登陆页面,登陆成功即可进入查询页面。但是我在这个查询页面不操作,等待session过期后,再次刷新这个查询页面 ,发现拦截器的日志并没有打印出来,但是也跳到了登陆页面,但是在登陆页面输入信息后,点击登陆,发现拦截器日志仍旧没有打印,而且留在了登陆页面(输入的信息没有了,怀疑是再次刷新了登陆页面),但是如果打开浏览器的调试模式,就能够正常登陆进去了,这是什么原因?
这个问题在IE和火狐上都有问题,只有谷歌浏览器不会出现这种情况,急求大神帮助。。。。

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行