天天看點

servlet過濾器2 解決使用者非法線上 filter

剛才搞了一個字元集的filter,正好,把這個對使用者是否線上,做個過濾器,隻要使用者session失效或者其他什麼因素,反正掉線了,就自動轉到登入頁面,或者說更進階一些,你記一下跳轉來之前的url位址,登入之後再跳回去~~

package com.tarena.web.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 UserFilter implements Filter {       @Override    public void init(FilterConfig filterConfig) throws ServletException {       }       // 判斷使用者合法性    private boolean process(HttpServletRequest request,            HttpServletResponse response) {        boolean bool = false;         String uri = request.getServletPath();         String action = uri.substring(uri.lastIndexOf("/")+1,uri.lastIndexOf("."));        if(action.equals("login")||action.equals("regist")){            bool = true;        }        HttpSession session = request.getSession(false);        if(session!=null&&session.getAttribute("user")!=null){            bool = true;        }        return bool;    }       @Override    public void doFilter(ServletRequest servletRequest,            ServletResponse servletResponse, FilterChain filterChain)            throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) servletRequest;        HttpServletResponse response = (HttpServletResponse) servletResponse;        if(process(request,response)){            filterChain.doFilter(servletRequest,servletResponse);        }else{            response.sendRedirect("login.jsp");        }    }       @Override    public void destroy() {       }   }

web.xml

<filter>        <filter-name>UserFilter</filter-name>        <filter-class>com.tarena.web.filter.UserFilter</filter-class>    </filter>    <filter>        <filter-name>CharacterEncodingFilter</filter-name>        <filter-class>com.tarena.web.filter.CharacterEncodingFilter</filter-class>        <init-param>            <param-name>ignore</param-name>            <param-value>true</param-value>        </init-param>        <init-param>            <param-name>encoding</param-name>            <param-value>UTF-8</param-value>        </init-param>    </filter>         <filter-mapping>        <filter-name>UserFilter</filter-name>        <url-pattern>*.jsp</url-pattern>    </filter-mapping>