首页 > 代码库 > cookie自动登录的实现
cookie自动登录的实现
cookie自动登录是指把用户登录的信息按期限(自定)保存在客户端,当用户请求登录时判断客户端用没有cookie对象,有的话填充值,否则登录界面的输入框为空,不进行填充。
登录界面之前在添加一个选择登录的jsp页面,通过选择“去登录”,servlet判断客户端此次有没有cookie对象。所以需要添加一个JSP页面和一个servlet。
index.jsp部分代码:
<body>
<a href="http://www.mamicode.com/t31/AdminSer?status=auto">先去登录</a>
</body>
login.jsp部分代码:
<body>
<form action="/t31/AdminSer" method="post">
管理员姓名:<input type="text" name="aname" value="http://www.mamicode.com/${requestScope.aname}" /><br/>
管理员密码:<input type="text" name="apass" value="http://www.mamicode.com/${requestScope.apass}" /><br/>
${requestScope.error}<br/>
<select name="auto">
<option value="http://www.mamicode.com/0">不自动填充</option>
<option value="http://www.mamicode.com/7">一周</option>
<option value="http://www.mamicode.com/30">一月</option>
</select><br/>
<input type="submit" value="http://www.mamicode.com/提交" />
<input type="hidden" name="status" value="http://www.mamicode.com/login" />
</form>
</body>
servlet部分代码:
if(status.equals("login")){
String aname = request.getParameter("aname");
String apass = request.getParameter("apass");
if (aname.equals(apass)) {
/*将用户登录名放到session中*/
HttpSession session = request.getSession();
session.setAttribute("aname", aname);
/*判断用户是否需要保存自己的登录信息 */
Cookie anameCookie=new Cookie("aname",aname);
Cookie apassCookie=new Cookie("apass",apass);
/*计算保存时间*/
anameCookie.setMaxAge(60*60*24*Integer.parseInt(request.getParameter("auto")));
apassCookie.setMaxAge(anameCookie.getMaxAge());
/*response代表响应 */
response.addCookie(anameCookie);
response.addCookie(apassCookie);
/*页面重定向*/
response.sendRedirect("/t31/queryStudent.jsp");
} else{
request.setAttribute("error", "登录失败");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}else if(status.equals("auto")){
Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies){
if(cookie.getName().equals("aname")){
request.setAttribute("aname", cookie.getValue());
}
if(cookie.getName().equals("apass")){
request.setAttribute("apass", cookie.getValue());
}
}
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
创建cookie
Cookie cookie = new Cookie(String name,String value);
response.addCookie(cookie);
查询cookie
//如果没有cookie,则返回null。
Cookie[] cookies = request.getCookies();
String name = cookie.getName();
String value = http://www.mamicode.com/cookie.getValue();
cookie的限制
cookie可以禁止
cookie的大小有限制(4k左右)
cookie的数量也有限制(浏览器大约能保存300个)
cookie的值叧能是字符串,要考虑编码问题。
cookie不安全
保存和查询Cookie流程
a. 浏览器向服务器发送addCookie请求
服务器中的AddCookieServlet创建了两个Cookie:cookie和cookie2
b. 服务器端执行语句response.addCookie(cookie);生成消息头“set-cookie”,
并将两个Cookie以键值对的方式(“name=aaa”、“passwd=123”)存放在消息头中发 送给浏览器
c. 浏览器将Cookie信息保存到本地内存中
d. 浏览器继续向服务器发送请求(带着消息头cookie)
服务器端的FindCookieServlet找到Cookie信息,并显示给浏览器
cookie自动登录的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。