<input name="" type="checkbox" value="" checked="checked" />記住我的選擇
這只是html的代碼,是沒有「記住」的功能的。要實現這個功能還回必須用到其它動態答網站編程語言,如asp,php,jsp等,這些編程語言都有個叫「cookie」的東東,用來在客戶端保存信息的,用它就能「記住」用戶的選擇了。
『貳』 如何在javaEE中使用cookie實現記住用戶明名密碼下次自動登錄
例如:在用戶提交用戶名和密碼之後,進入到loginServlet後,通過獲取頁面上checkbox的值來判斷用戶是否需要記住密碼,如果需要的話,使用:Cookie cookie = new Cookie("testkey","testvalue");cookie.setMaxAge(3600);// 有效時間,單位是秒cookie.setPath("abc");response.addCookie(cookie);如上幾句來保存cookie。在登錄頁面的時候,需要使用:Cookie[] cookies = request.getCookies();for (int i = 0; cookies != null && i < cookies.length; i++) { System.out.println(cookies[i].getName() + "=" + cookies[i].getValue());}來獲取cookie的值判斷用戶曾經是否已經記住密碼,如果是的話,則直接調用cookie的值來進行登錄,如果不是,則正常登錄
『叄』 java 開發,然後我想問下,jsp 頁面那個checkbox 框記住密碼是怎麼實現的
好的,樓主,我現在把實現這個業務的簡單化示例做出來過你。
要實現題目這個功能,我們需要使用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<String,Cookie> 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<String,Cookie> ReadCookieMap(HttpServletRequest request){
Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
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);
}
希望我提供的工具類和方法會對樓主有幫助!有什麼問題請給我留言!謝謝!
『肆』 jsp中不能提取cookie!
//這是一個servlet的,你改成JSP的就可以用,你可以參照裡面的邏輯去做一下,說不定可以幫你(這道題是記住用戶自動登陸)
package servlets;
import java.io.IOException;
import java.io.PrintWriter;
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 Login extends HttpServlet {
public Login() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cookie : cookies){
out.println("用戶名:"+cookie.getName()+"<br />");
out.println("密碼:"+cookie.getValue()+"<br />");
out.println(cookie.getName() + ",您好!歡迎來到登陸頁面!!");
}
}else{
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>Login Servlet</TITLE></HEAD>");
out.println(" <BODY><form action='Login' method='post'>");
out.print("<p>用戶名:<input name='name' type='text' /></p>" +
"<p>密碼:<input name='pwd' type='password' /></p>" +
"<p><input name='jizhu' type='checkbox' />記住我</p>" +
"<p><input name='sub' type='submit' value='登錄' /></p>");
out.println("</form> </BODY>");
out.println("</HTML>");
}
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
String jizhu = request.getParameter("jizhu");
if(jizhu != null){
Cookie mycookie = new Cookie(name,pwd);
mycookie.setMaxAge(60*60*24*7);
mycookie.setPath("/");
response.addCookie(mycookie);
}
if(name.equals("haha") && pwd.equals("123")){
out.println(name + ",您好!歡迎來到登陸頁面!!");
}else{
out.println("登陸失敗!!");
}
out.flush();
out.close();
}
public void init() throws ServletException {
}
}
『伍』 我用jsp做了個登錄頁面,想讓它記住密碼,下次登錄時不需要再輸入密碼,怎樣實現
使用Cookie實現。