1. 程式人生 > >filter實現自動登入的程式碼

filter實現自動登入的程式碼

@WebFilter("/AutoLoginFilter") public class AutoLoginFilter implements Filter {

public void init(FilterConfig fConfig) throws ServletException {              }     public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {         HttpServletRequest request=(HttpServletRequest)req;         //獲得一個名為autologin的cookie         Cookie[]cookies=request.getCookies();         String autologin=null;         for(int i=0;cookies!=null&&i<cookies.length;i++) {             if("autologin".equals(cookies[i].getName())){                 //找到了指定的cookies                 autologin=cookies[i].getValue();                 break;             }         }if(autologin!=null) {             //做自動登入             String []parts=autologin.split("-");             String username=parts[0];             String password=parts[1];             //檢查使用者名稱和密碼             if("itcast".equals(username)&&("123456").equals(password)) {                 //登入成功,將使用者狀態儲存到session域                 User user=new User();                 user.setUsername(username);                 user.setPassword(password);                 request.getSession().setAttribute("user", user);             }         }         chain.doFilter(request, response);     }

public void destroy() {              }

@WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet {  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {     //獲得使用者名稱和密碼      String username=request.getParameter("username");      String password=request.getParameter("password");      //檢查使用者名稱和密碼      if("itcast".equals(username)&&"123456".equals(password)) {          //登入成功          //將使用者資訊存入session域中          User user=new User();          user.setUsername(username);          user.setPassword(password);          request.getSession().setAttribute("user", user);//把第二個user儲存到第一個user          //傳送自動登陸的cookie(要想長久的儲存,需要儲存到cookie中)        String autoLogin=request.getParameter("autologin");        //getParameter返回的是String型別        if(autoLogin!=null) {            Cookie cookie=new Cookie("autologin", username+"-"+password);            cookie.setMaxAge(Integer.parseInt(autoLogin));            //Integer.parseInt用於將字串轉化為數字            cookie.setPath(request.getContextPath());            response.addCookie(cookie);        }        response.sendRedirect(request.getContextPath()+"/index.jsp");                }else {          request.setAttribute("errerMsg", "使用者名稱或密碼錯誤");          request.getRequestDispatcher("/login.jsp").forward(request, response);      }              }

         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {         // TODO Auto-generated method stub         doGet(request, response);     }

}

}