<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实现。