简单理解:Cookie可以存放客户端提交给服务器的信息
特点:Cookie存放在客户端硬盘里,属于离线存放,所以安全性差。
存放时间由setMaxAge()中的数值决定,以秒为单位。
Cookie的写入:(1)创建Cookie对象(2)设定Cookie属性(setMaxAge())
(3)调用respond.addCookie(Cookie c)方法写入客户端
Cookie的读取:获取Cookie数组(如:Cookie a[]=request.getCookies(); )
cookie.getName()可返回Cookie的名字,类型为String
这里多提一点,request.getCookies()方法可以返回客户端的Cookie对象,结果是一个cookie数组
查看网页Cookie:在网页中按F12进入开发者模式(检查),选择应用程序,左列中选择Cookie查看
开始实现功能:
逻辑图:
Login.jsp
<body>
<%
//自动显示曾用用户名
String username="";
String password="";
//返回客户端的cookie对象,结果是一个cookie数组
Cookie[] cookies=request.getCookies();
if(cookies!=null)
{
for(int i=0;i<cookies.length;i++)
{
Cookie currentC=cookies[i];
if(currentC.getName().equals("username"))
{
username=currentC.getValue();
}
if(currentC.getName().equals("password"))
{
password=currentC.getValue();
}
}
}
%>
<form action="Login_do.jsp" method="post">
用户名:<input type="text" name="username" value="<%=username%>"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
<script src="Login_.js"></script>
</body>
Login_do.jsp
<body>
<%
//获取请求参数
String username=request.getParameter("username");
String password=request.getParameter("password");
if(username!=null&&password!=null&&username.trim().equals("admin")&&password.equals("123"))
{
//可以登陆,但无Cookies
//Cookie存储这个用户的登录信息,保存60s
Cookie c=new Cookie("username",username);
Cookie p=new Cookie("password",password);
p.setMaxAge(60*60*24*10);
c.setMaxAge(60*60*24*10);
response.addCookie(c);
response.addCookie(p);
}
//实现自动登录
else
{
//有Cookies,获取Cookie数组对象
Cookie[] cookies=request.getCookies();
if(cookies!=null&&cookies.length>0)
{
for(Cookie cookie:cookies){
//获取Cookie的名字
String CookieName=cookie.getName();
//找到Cookie中的username
if("username".equals(CookieName)){
//将Cookies中的值返还给请求参数
String name=cookie.getValue();
username=name;
}
if("password".equals(CookieName)){
String pword=cookie.getValue();
password=pword;
}
}
}
}
if(username!=null&&password!=null&&username.trim().equals("admin")&&password.equals("123"))
{
out.print("Hello! admin");
}else{
//如果既没有请求参数又没有cookie,就重定向到登录页面
response.sendRedirect("Login.jsp");
}
%>
</body>
参考文章:
cookie是什么?有什么用?cookie详解,一篇文章彻底搞懂cookie_cookie的作用_秃头披风侠.的博客-CSDN博客