好的,樓主,我現在把實現這個業務的簡單化示例做出來過你。 要實現題目這個功能,我們需要使用Cookie瀏覽器緩存來做到。Cookie與Session的最大不同,就在于它們的生命周期,Cookie通過設置后,生命周期可以與Session一樣,或者比它長久。 通常來說,根據我的習慣,對于一些通用的業務能夠,我希望把它們封裝到一個工具類里面,使用方法就是直接調用它的靜態方法。 CookieTool.java 源代碼: /** * 設置cookie(接口方法) * @param response * @param name cookie名字 * @param value cookie值 * @param maxAge cookie生命周期 以秒為單位 */ public static void addCookie(HttpServletResponse response,String name,String value,int maxAge){ Cookie cookie = new Cookie(name,value); cookie.setPath("/"); if(maxAge>0) cookie.setMaxAge(maxAge); response.addCookie(cookie); } /** * 根據名字獲取cookie(接口方法) * @param request * @param name cookie名字 * @return */ public static Cookie getCookieByName(HttpServletRequest request,String name){ Map cookieMap = ReadCookieMap(request); if(cookieMap.containsKey(name)){ Cookie cookie = (Cookie)cookieMap.get(name); return cookie; }else{ return null; } } /** * 將cookie封裝到Map里面(非接口方法) * @param request * @return */ private static Map ReadCookieMap(HttpServletRequest request){ Map cookieMap = new HashMap(); Cookie[] cookies = request.getCookies(); if(null!=cookies){ for(Cookie cookie : cookies){ cookieMap.put(cookie.getName(), cookie); } } return cookieMap; } 好了,工具類的靜態方法已經定義好了。 我先假定樓主對表現層提交表單到業務層是有概念的, 這里存在兩種情況: (1)客戶端沒有登錄記錄,則進入登錄頁面 (2)客戶端存在有效的登錄記錄,進入登錄后的頁面。 因此在顯示登錄頁面之前就要通過一個業務方法進行判斷,其中最核心的是: Cookie cokLoginName = CookieTool.getCookieByName(request,"loginName"); Cookie cokLoginPwd = CookieTool.getCookieByName(request,"loginPwd"); if (cokLoginName != null && cokLoginPwd != null && cokLoginName.getValue()!=null && cokLoginPwd.getValue()!=null){ String loginName = cokLoginName.getValue(); String loginPwd = cokLoginPwd.getValue(); //檢查到客戶端保存了用戶的密碼,進行該賬戶的驗證 //這里要使用你自己的賬戶驗證方法 //如果賬戶驗證成功,則跳轉到登錄成功的頁面 //如果賬戶驗證失敗,則 CookieTool.addCookie(response,"loginName",null,0); //清除Cookie CookieTool.addCookie(response,"loginPwd",null,0); //清除Cookie //然后跳轉到登錄頁面 } 其次就是在登錄JSP頁面的表單所提交到的登錄Action。這里假設表單提交到的是Servlet,讀取表單參數樓主應該沒有問題吧?我這里只關注和插入Cookie代碼。 插入的地方在賬戶密碼的正確性經過驗證,在跳轉頁面之前。假設儲存用戶輸入的帳號和密碼字段分別為String username,String password。 int loginMaxAge = 30*24*60*60; //定義賬戶密碼的生命周期,這里是一個月。單位為秒 if ( 單選框 ) { CookieTool.addCookie(response , "loginName" , username , loginMaxAge); CookieTool.addCookie(response , "loginPwd" , password , loginMaxAge); } 希望我提供的工具類和方法會對樓主有幫助!有什么問題請給我留言!謝謝!