在基于struts2开发的web项目中,经常会用到filter过滤器,对session进行验证。如果session失效,则提示登录失效并返回到登录页面。
如下便是简单的实现过程。
首先是Filter:
public class FirstFilter implements Filter {
public void init(FilterConfig cong) {
// do nothing
}
public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) {
try {
HttpServletRequest requst = (HttpServletRequest) srequest;
HttpServletResponse response = (HttpServletResponse) sresponse;
HttpSession session = requst.getSession();
//从session从取出userid,如果为空说明没有登录,将其转到登录页面.
Object obj = session.getAttribute("userId");
if (obj == null) {
//跳转到登陆页面
response.sendRedirect("/Expert_DataBase/pages/loginTransfer.jsp");
} else {
//如果存在则跳出过滤器继续执行
chain.doFilter(srequest, sresponse);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void destroy() {
//do nothing
}
}
接下来要在web.xml里对filter进行配置
<!-- Struts2 -->
<!-- 配置Struts2的session的Filter -->
<filter>
<!-- 声明filter -->
<filter-name>struts-session</filter-name>
<filter-class>com.zxt.expert.util.FirstFilter</filter-class>
</filter>
<!-- 定义Struts2的session Filter拦截的URL -->
<filter-mapping>
<filter-name>struts-session</filter-name>
<url-pattern>/formengine/zsf_switchSystemMenu.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-session</filter-name>
<url-pattern>/expertsinfo/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-session</filter-name>
<url-pattern>/taskinfo/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-session</filter-name>
<url-pattern>/attachment/*</url-pattern>
</filter-mapping>
……
这个可以自己添加需要进行过滤的路径。
如此,便可以实现对session的过滤了,如果session失效的话,会退回到登录页面。