struts2中针对session使用的过滤器
?? 在基于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失效的话,会退回到登录页面。