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); }
}
}