java的使用者登入怎樣記住上次登入的使用者名稱和密碼?
阿新 • • 發佈:2019-01-23
java實現,使用者在登入登入介面時可以記住上一次登入的使用者名稱。本人認為可以有兩種解決方案:
第一:使用資料庫實現;具體實現為,新建表login。最簡單的設計為裡面有兩個欄位,一個欄位為使用者名稱,另外一個為本機IP地址。
第二:可以使用Cookie技術來實現;具體的實現程式碼如下(注:程式碼實現的是記錄上一次登入的時間,把時間改為使用者名稱即可):
package com.fenuang.sevlvet; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class firstservlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 設定介面編碼方式 resp.setContentType("text/html;charset=utf-8"); resp.getWriter().write("程式開啟"); // 設定時間格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 獲取當前時間 String cutTime = sdf.format(new Date()); /** * 先把所有的cookie放入陣列 */ Cookie[] cookies = req.getCookies(); String lastTime = null; /** * 查詢陣列是否有lastTime的cookie */ if (cookies != null) { for (Cookie cookie : cookies) { // 如果有上次的登陸痕跡 if (cookie.getName().equals("lastTime")) { // 把時間顯示在瀏覽器 lastTime = cookie.getValue(); resp.getWriter().write("歡迎回來! 您上次登入是在:" + lastTime); // 更新cookie cookie.setValue(cutTime); // 設定過期時間一個月 cookie.setMaxAge(1 * 30 * 24 * 60 * 60); // 把更新的資料傳送到瀏覽器儲存起來 resp.addCookie(cookie); break; } } } if (cookies == null || lastTime == null) { // 沒有cookie 建立物件 // 顯示當前時間 resp.getWriter().write("你好,歡迎登入 這是您的第一次" + cutTime); // 把資料儲存到cookie中 Cookie cookie = new Cookie("lastTime", cutTime); // 設定過期時間 cookie.setMaxAge(1 * 30 * 60 * 24 * 60); // 儲存到伺服器 resp.addCookie(cookie); } } } 配置的xml檔案 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 配置servlet --> <!-- servlet配置 --> <servlet> <!--內部名稱 --> <servlet-name>firstservlet</servlet-name> <!-- 全名 /first/src/firstservlet/firstservlet.java --> <servlet-class>com.fenuang.sevlvet.firstservlet</servlet-class> <!-- 讓servlet物件自動載入 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>firstservlet</servlet-name> <!-- servlet對映 路徑 訪問servlet的名稱 --> <url-pattern>/first</url-pattern> </servlet-mapping> </web-app>