1.登录页面:login.jsp
<div id="login"> <h1>登录</h1> <form id="form_login" action="LoginServlet" method="post"> <input type="text" required="required" placeholder="用户名" name="login_name" id="login_name"></input> <input type="password" required="required" placeholder="密码" name="login_pass" id="login_pass"></input> 自动登录时间<select name="savetime" style="margin-bottom: 10px; font-size: 13px;margin-left: 10px;border-radius: 4px;background-color: #2D2D3F;"> <option value="7">一 周</option> <option value="30">一个月</option> </select><br> <button class="but" type="submit">登录</button> </form> </div>
2.登录页login.jsp对应的servlet:
@WebServlet(name = "LoginServlet") public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); //1.处理跨域请求 setResponseAccess(response); //2.接收传过来的数据 String name = request.getParameter("name"); //得到jsp页面传过来的参数login_name String pwd = request.getParameter("pass"); System.out.println("账号=="+name+"\n"); System.out.println("密码=="+pwd+"\n"); String savetime=request.getParameter("savetime"); System.out.println("保存时间=="+savetime+"\n"); //3.连接数据库 LoginUserDao loginUserDao=new LoginUserDao(); //4.根据接收的数据,查询数据库 boolean flag=loginUserDao.getSelect(name,pwd); System.out.print("====flag===="+flag+"\n"); //5.返回前台信息 if (flag){ int saveTime=Integer.parseInt(savetime);//这里接受的表单值为天来计算的 int seconds=saveTime*24*60*60; Cookie cookie = new Cookie("user", name+"=="+pwd); cookie.setMaxAge(seconds); response.addCookie(cookie); System.out.println("设置cooke登录=="+"\n"); request.setAttribute("name",name); request.getRequestDispatcher("home.jsp").forward(request,response); }else { PrintWriter out; out=response.getWriter(); out.write("账号或密码错误!"+"\n"); } } //处理跨域请求方法 private void setResponseAccess(HttpServletResponse response) { // 允许该域发起跨域请求 response.setHeader("Access-Control-Allow-Origin", "*");//*允许任何域 // 允许的外域请求方式 response.setHeader("Access-Control-Allow-Methods", "POST, GET"); // 在999999秒内,不需要再发送预检验请求,可以缓存该结果 response.setHeader("Access-Control-Max-Age", "999999"); // 允许跨域请求包含某请求头,x-requested-with请求头为异步请求 response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); } }3.过滤器:
LoginFilter
public class LoginFilter implements Filter { public LoginFilter(){ System.out.println("LoginFilter过滤器构造"); } public void destroy() { System.out.println("LoginFilter过滤器销毁"); } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1; Cookie[] cookies = request.getCookies(); String[] cooks = null; String username = null; String password = null; if (cookies != null) { for (Cookie coo : cookies) { String aa = coo.getValue(); cooks = aa.split("=="); if (cooks.length == 2) { username = cooks[0]; password = cooks[1]; } } } //3.连接数据库 LoginUserDao loginUserDao=new LoginUserDao(); //4.根据接收的数据,查询数据库 boolean flag=loginUserDao.getSelect(username,password); System.out.print("====cooke检测连接数据库是否成功flag===="+flag+"\n"); if (flag) { System.out.println("从cooke中取出开始跳转=="+"\n"); System.out.println("从cooke中取出=="+username+"\n"); request.setAttribute("login_name",username); // request.getSession().setAttribute("login_name",username); request.getRequestDispatcher("home.jsp").forward(request, response); }else{ arg2.doFilter(request,response); } } public void init(FilterConfig arg0) throws ServletException { System.out.println("过滤器初始化"); } }
4.web.xml配置:
<filter> <filter-name>LoginFilter</filter-name> <filter-class>com.utils.LoginFilter</filter-class><!--全路径 从根包开始一直到类名--> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/login.jsp</url-pattern><!--只过滤登录页--> </filter-mapping>
<!--servlet类路径配置--> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.servlet.LoginServlet</servlet-class> </servlet> <!--servlet类映射配置--> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping>
<welcome-file-list><!--默认首页地址--> <welcome-file>login.jsp</welcome-file> </welcome-file-list>