一共两个页面
当直接访问产品列表的时候,会判断用户是否登陆,若是用户没有登陆,则直接3秒跳转.
若是用户登陆,则不进行跳转
登陆页面:对于登陆页面来讲,直接输入用户名,密码.和数据库进行对比,进行登陆.
并进行密码的本地保存html
ps 通常是须要对密码加密进行本地保存的
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>login</servlet-name> <jsp-file>/Login.jsp</jsp-file> <init-param> <param-name>driver</param-name> <param-value>com.mysql.cj.jdbc.Driver</param-value> </init-param> <init-param> <param-name>url</param-name> <param-value>jdbc:mysql://47.94.95.84:32786/test</param-value> </init-param> <init-param> <param-name>user</param-name> <param-value>test</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>**</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login.html</url-pattern> </servlet-mapping> </web-app>
<%@ page import="java.sql.Connection" %> <%@ page import="java.sql.PreparedStatement" %> <%@ page import="java.sql.ResultSet" %> <%@ page import="java.sql.DriverManager" %><%-- Created by IntelliJ IDEA. User: ming Date: 19-3-13 Time: 下午10:02 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登陆页面</title> </head> <form action="./login.html" method="post"> <input type="text" name="username" id="username"/> <input type="password" name="password" id="password"/> <input type="submit" value="submit"/> </form> <script> // js脚本,读取客户端的cookie let cookie = {}; let all = document.cookie; let list = all.split(";"); for(let i = 0; i < list.length; i++){ let p = list[i].indexOf("="); let space = list[i].indexOf(" "); let name = list[i].substring(space + 1, p); let value = list[i].substring(p+1); value = decodeURIComponent(value); cookie[name]=value; } // 填充到value if(cookie["flage"] == "true") { document.getElementById("username").setAttribute("value", cookie["user"]); document.getElementById("password").setAttribute("value", cookie["password"]); } </script> <body> <% String dbdriver = config.getInitParameter("driver"); String dburl = config.getInitParameter("url"); String dbuser = config.getInitParameter("user"); String dbpassword = config.getInitParameter("password"); // 链接对象 Connection connection = null; // 操做 PreparedStatement preparedStatement = null; // 结果 ResultSet resultSet = null; // 用户id String mid = null; // 标志位 boolean falge = false; try{ Class.forName(dbdriver); // 得到链接 connection = DriverManager.getConnection(dburl, dbuser, dbpassword); // 编写sql验证ID 密码 String sql = "SELECT mid FROM member WHERE name = ? AND password = ?"; // 实例化操做对象 preparedStatement = connection.prepareStatement(sql); // 设置查询内容 preparedStatement.setString(1, request.getParameter("username")); preparedStatement.setString(2, request.getParameter("password")); // 执行查询 resultSet = preparedStatement.executeQuery(); // 若是能够查询到,表示合法用户 if(resultSet.next()){ mid = resultSet.getString(1); // 修改标志位 falge = true; } }catch (Exception e){ e.printStackTrace(); }finally { try{ resultSet.close(); preparedStatement.close(); connection.close(); }catch (Exception e){ e.printStackTrace(); } } // 判断是否登陆成功 if(falge){ // 登陆成功 // 保存session 保存cookie session.setAttribute("mid", mid); // 保存cookie Cookie cookieMid = new Cookie("mid", mid); Cookie cookieUser = new Cookie("user", request.getParameter("username")); Cookie cookiePassword = new Cookie("password", request.getParameter("password")); // 增长登陆态cookie Cookie cookieFlage = new Cookie("flage", "true"); // 客户端增长Cookie response.addCookie(cookieMid); response.addCookie(cookieUser); response.addCookie(cookiePassword); response.addCookie(cookieFlage); // 设置定时跳转 response.setHeader("refresh", "3;URL=product.jsp"); %> 登陆成功即将跳转到首页产品界面 未跳转点击<a hre="./product.jsp">点击此处</a> <% }else{ // 查询用户是否已经登陆 if(session.getAttribute("mid") == null) { Cookie cookieFlage = new Cookie("flage", "false"); response.addCookie(cookieFlage); } } %> </body> </html>
<%-- Created by IntelliJ IDEA. User: ming Date: 19-3-14 Time: 下午2:51 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> 此为商品列表 <script> // 判断当前登陆态 // js脚本,读取客户端的cookie let cookie = {}; let all = document.cookie; let list = all.split(";"); for(let i = 0; i < list.length; i++){ let p = list[i].indexOf("="); let space = list[i].indexOf(" "); let name = list[i].substring(space + 1, p); let value = list[i].substring(p+1); value = decodeURIComponent(value); cookie[name]=value; } // 获取登陆状态 if(cookie["flage"] != "true"){ // 登陆状态 alert("请您登陆 3秒将会跳转"); } </script> <% // 服务器端验证 if(session.getAttribute("mid") == null) { // 执行页面跳转 response.setHeader("refresh", "2;URL=/login.html"); } %> </body> </html>
产品界面经过本地cookie和服务器的session进行双向验证.java