Cookie,复数形式Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(通常经过加密),由客户端暂时或永久保存的信息 ,底层采用HashMap键值对<凭证,数据>的形式存放。
登录页面代码:
<%//从客户端获取存放的所有Cookie,查看其中是否有免登陆凭证,若有,则直接跳转至登录页面
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("loginUser")) {
//获取免登陆的Cookie对应的标签的用户名
String userName = cookie.getValue();
//把免登陆的用户名,存放在request的属性中,它会转发到下个页面,能够继续使用
request.setAttribute("loginUser", userName);
request.getRequestDispatcher("loginSuccess.jsp").forward(request, response);
}
}
}
%>
<form action="login.jsp" method="post">
用户名:<input type="text" name="userName"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登陆"><br>
</form>
验证页面代码:
//request对象,是后台把来自前端的请求信息,封装后的对象,里面放置了所有的请求头、请求体信息
//request:请求
//response:响应
String name = request.getParameter("userName");
String pass = request.getParameter("password");
//获取访问者的IP地址
System.out.println("浏览器的地址信息:" + request.getRemoteAddr());
//模拟从数据库中查出账号、密码是否匹配,再返回客户端结果
if("csdn".equals(name) && "123456".equals(pass)){
//登陆成功,跳转页面之前,为了免登陆,把当前用户的登录凭证,存入客户端的Cookie中
Cookie cookie = new Cookie("loginUser","csdn");
cookie.setMaxAge(10 * 24 * 3600);//10天免登陆
//Cookie是由服务器决定,并命令客户端(浏览器),添加或删除一个Cookie
//response:响应
response.addCookie(cookie);
//密码等关键信息,存放在Cookie中不安全
//登陆成功,跳转成功页面
request.getRequestDispatcher("loginSuccess.jsp").forward(request,response);
}else {
//登录失败,跳转失败页面
request.getRequestDispatcher("loginFailed.jsp").forward(request,response);
}
成功页面:
用户名:<%= request.getAttribute("loginUser")%><br>
密码:<%= request.getParameter("password")%>