㈠ jsp 用Cookie實現自動登錄
1.新建login.jsp和index.jsp。
2.在login.jsp中新建表單,跳轉到index.jsp並提交name。
3.在index.jsp中新建如下代碼:
㈡ 鎬ユ眰鍩轟簬JSP鐨勪粠A緋葷粺鑷鍔ㄧ櫥褰曞埌B緋葷粺錛屽苟璺寵漿鍒癇緋葷粺鏌愪竴欏甸潰鐨勫疄鐜頒唬鐮侊紝鍦ㄧ嚎絳夛紒
鎴戝綋鏃跺ぇ鑷寸殑鍋氭硶鏄浜嬪厛鎶夾緋葷粺鐨勭殑鐢ㄦ埛鍚嶅拰瀵嗙爜淇濆瓨涓浠藉埌session涓錛岀劧鍚庢斁涓涓鏍¢獙鐢ㄦ埛鐨勫勭悊JSP鏂囦歡鍒癇緋葷粺涓錛岀劧鍚庡湪鐐瑰嚮閾炬帴鐨勬椂鍊欐妸A緋葷粺鐨勭敤鎴峰瘑鐮佷互form褰㈠紡鎻愪氦緇橞緋葷粺涓鐨勯偅涓狫SP澶勭悊鏂囦歡錛孞SP鏍¢獙姝g『鍚庤煩杞鍒板瑰簲欏甸潰銆傝繖鏍峰仛瀛樺湪瀹夊叏椋庨櫓銆傘
㈢ jsp如何實現自動登錄功能
1、在登錄頁面中添加一個復選框,讓用戶選擇是否願意在一定時間內實現自動登陸,例如兩周。
代碼:
<input type="checkbox" name="autologin">兩周內自動登錄
2、在負責處理登錄過程的Servlet中,判斷用戶是否選擇了該復選框。如果是,則執行這兩個操作:向用戶發送兩個Cookie,以及向資料庫寫入一條相應的記錄。
代碼:
Cookie ckUsername, ckSessionid;
if (autologin.equals("on")) {
// 如果用戶選擇了「兩周內自動登錄」,則向用戶發送兩個cookie。
// 一個cookie記錄用戶名,另一個記錄唯一的驗證碼,
// 並將此驗證碼寫入資料庫,以備用戶返回時查詢。(防止偽造cookie)
ckUsername = new Cookie("autoLoginUser", user.getUsername()); // user是代表用戶的bean
ckUsername.setMaxAge(60 * 60 * 24 * 14); //設置Cookie有效期為14天
res.addCookie(ckUsername);
sessionid = session.getId(); // 取得當前的session id
ckSessionid = new Cookie("sessionid", sessionid);
ckSessionid.setMaxAge(60 * 60 * 24 * 14);
res.addCookie(ckSessionid);
// 在資料庫中插入相應記錄
userSessionDAO.insertUserSession(user, sessionid);
}
3、實現自動登錄。因為用戶下次訪問的時候,可能直接訪問網站的任何頁面(例如通過收藏夾),而不一定是首頁或者登錄頁面,所以我們需要用Filter攔截到達該網站的所有請求,並執行自動登錄。
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession(true);
String username;
String sessionid; // 此sessionid是上次用戶登錄時保存於用戶端的識別碼,用於用戶後續訪問的自動登錄。不是本次訪問的session id。
Cookie[] cookies;
CookieManager cm = new CookieManager(); // CookieManager是一個自定義的類,用於從Cookie數組中查找並返回指定名稱的Cookie值。
boolean isAutoLogin;
// 如果session中沒有user對象,則創建一個。
User user = (User) session.getAttribute("user");
if (user == null) {
user = new User(); // 此時user中的username屬性為"",表示用戶未登錄。
}
// 如果user對象的username為"",表示用戶未登錄。則執行自動登錄過程。
// 否則不自動登錄。
if (user.getUsername().equals("")) {
// 檢查用戶瀏覽器是否發送了上次登錄的用戶名和sessionid,
// 如果是,則為用戶自動登陸。
cookies = request.getCookies();
username = cm.getCookieValue(cookies, "autoLoginUser");
sessionid = cm.getCookieValue(cookies, "sessionid");
isAutoLogin = userSessionDAO.getAutoLoginState(username, sessionid); // 如果在資料庫中找到了相應記錄,則說明可以自動登錄。
if (isAutoLogin) {
user.setUsername(username);
user.setNickname(DBUtil.getNickName(username));
session.setAttribute("user", user); // 將user bean添加到session中。
}
}
chain.doFilter(req, resp);
}
㈣ 利用JavaWeb設計簡易聊天室,具體要求看補充
利用JavaWeb設計簡易聊天室
這樣你什麼柑橘
比較