一共兩個頁面
當直接訪問產品列表的時候,會判斷用戶是否登陸,若是用戶沒有登陸,則直接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