<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> </head> <body> <body> 用户登录<br>${msg} <form action="login" method="post"> 用户名:<input type="text" name="userName"><br> 密 码:<input type="password" name="password"><br> <input type="checkbox" name="auto" value="true"> 七天内内自动登录<br> <input type="submit" value="提交"> </form> </body> </body> </html> |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 测试进入主页 </body> </html> |
package test.mylo.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/login") public class LoginSetvlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userName = request.getParameter("userName"); String password = request.getParameter("password"); String auto = request.getParameter("auto"); if(userName.equals("Mylo") && password.equals("Mylo")) { if(auto!=null && auto.equals("true")) { Cookie cookie = new Cookie("auto", userName +"="+password); cookie.setMaxAge(24 * 3600 * 7); response.addCookie(cookie); } request.getSession().setAttribute("loginUser", userName +"="+password); request.getRequestDispatcher("/1.jsp").forward(request, response); }else { request.getSession().setAttribute("msg", "账号或者密码有误"); response.sendRedirect(request.getContextPath() + "/index.jsp"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } |
package test.mylo.servlet; 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.annotation.WebFilter; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** 逻辑:拦截所有的请求,放行index.jsp 和login的请求 判断当前的session里面是否有登录的信息 如果有的话就放行, 如果当前的session里面没有登录的信息,判断cookie里面是否有登录信息,如果有的话 放行 如果当前的session里面既没有登录信息,cookie里面也没有登录信息,就表示是第一次登录 如果请求的不是登录的方法(login)那么就让他进入到登录页面 */ @WebFilter("/*") public class AutoFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse) resp; String user =(String) request.getSession().getAttribute("loginUser"); if(user == null) { Cookie[] cookies = request.getCookies(); boolean flag = false; if(cookies != null) { for (Cookie c : cookies) { if(c.getName().equals("auto")) { String value = c.getValue(); request.setAttribute("loginUser", value); flag = true; break; } } } System.out.println( request.getRequestURI()); if(flag || request.getRequestURI().endsWith("index.jsp") || request.getRequestURI().endsWith("login")) { chain.doFilter(request, response); }else { response.sendRedirect(request.getContextPath() + "/index.jsp"); } }else { chain.doFilter(request, response); } } public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } @Override public void destroy() { // TODO Auto-generated method stub } } |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |