第一次登录时如果勾选了“记住用记名”选项,cookie里存储用户名
第2-n次登录时 首选判断cookie里有没有用户信息,如果用,从cookie里取得用户名
我们计划向cookie里放置以下信息
用户名:username
cookie的常用操作
新建: Cookie C=new Cookie(key,value)
setMaxAge(0) 不记录cookie
setMaxAge(-1) session级别的cookie,随session失效而失效
setMaxAge(72460*60) 单位为秒
正整数和负整数的区别:
负整数时存在浏览器里
正整数时存在本地磁盘里
setPath("/") 访问路径设置
登录页改造
<form action="loginServlet" method="post">
用户名:<input type="text" name="username" /><br>
密码:<input type="password" name="password" /><br>
记住用户名:<input type="checkbox" name="flag" value="1"/><br>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>
LoginServlet关键代码
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
......
//是否勾选了记住用户名功能
String[] flags=request.getParameterValues("flag");
String flag="0";
if(flags!=null&&!flags.equals("")){
flag="1";
}
......
//是否用户名错误--->根据用户名查询tab_user表中是否有该条记录
IUserService service=new UserServiceImpl();
List<TabUser> userList=service.getUserByName(username);
if(userList!=null&&userList.size()>0){
//是否密码错误 ---根据用户名和密码两项进行查询
TabUser dbuser= service.getUserByNameAndPwd(username, password);
if(dbuser!=null){//如果查询到用户了。进入登录后的处理
//将用户信息存放到session
......
if("1".equals(flag)){//记住密码
//需要向cookie里存储数据
//step1 存储用户名
Cookie c=new Cookie("username",username);
c.setMaxAge(1*24*60*60);
c.setPath("/");
//将cookie放到响应里
response.addCookie(c);
}else{//不记住密码,就清除cookie
//删除(思路就是替换原来的cookie,并设置它的生存时间为0):
Cookie c=new Cookie("username",username);
c.setMaxAge(0);
c.setPath("/");
//将cookie放到响应里
response.addCookie(c);
}
......
}
登录页默认密码
<%
//自动登录判断
String username="";
//读取cookie
Cookie[] cookies=request.getCookies();
if(cookies!=null){
//循环读取cookie
for(Cookie c:cookies){
String name=c.getName();
if(name.equals("username")){
username=c.getValue();
request.setAttribute("username", username);
}
}
}
%>
<form action="loginServlet" method="post">
用户名:<input type="text" name="username" value="${username }"><br>
密码:<input type="password" name="password" /><br>
记住用户名:<input type="checkbox" name="flag" value="1"/><br>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>
在Chrome设置中查看&删除Cookie
在Chrome地址栏中输入:chrome://settings/content/cookies,打开Cookie设置,可以查看&删除Cookie。