目录:
1.介绍Cookie
2.Cookie的特点
3.关于使用Cookie的实例( 重点 )
4.总结
一、什么是Cookie
“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie。
二、Cookie的特点
1.需要遵循浏览器的同源策略。
(即 两个网站即使根域名相同,端口或者子域名不同,那这两个网站就分别有自己的cookie,而且不能操作彼此的cookie)
2. 内存大小有限制。(每个浏览器对其个数的限制不相同,每个域名在20~50之间,大小一般都限制在4K)
3. 在本地可以被更改(所以不能放置敏感数据)
三、Cookie的使用案例
3.1、场景描述
假设场景,当我们登录某一网站时大多数情况下
当第二次输入账号时往往就不需要再次填入了,这就是通过简单的Cookie方法所实现的
3.2.1、具体实例
未使用 Cookie前
首先呢我自制了一个简单的登录登录系统
具体效果如下
登录成功后
admin 是 唯一账户
当登陆失败时
页面就会清空
3.2.2、使用Cookie改善程序
使我们再输错账号时不必再次输入账号
附上使用Cookie改善后关键部分源码
后端
第24、25行为 关键处
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet(urlPatterns = "/login")
public class ServletTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.sendRedirect("error.jsp");//因为使用get会产很不安全所以一般采用post
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
String uname = req.getParameter("uname");
String upass = req.getParameter("upass");
if(uname.equals("admin")&&upass.equals("123")){//这里我就不引用数据库了直接假设 账号为admin 密码为123
session.setAttribute("adminAccount",uname);
resp.sendRedirect("success.jsp");//登陆成功
}else{
Cookie cookie = new Cookie("username",uname);//将值存入Cookie当中
resp.addCookie(cookie); //将Cookie值返回给前端
resp.sendRedirect("index.jsp");//账号密码输错后返回到自己原本页面
}
}
}
前端
关键处
3-17行
24行
只附上了关键的部分
注意 value 值
<body>
<%
Cookie[] cookies = request.getCookies();
String value = "";
if(cookies.length>0){
for (Cookie cookie : cookies) {
if (cookie.getName().equals("username")) {
value = cookie.getValue();
break;
}
}
pageContext.setAttribute("usernameCookie", value);
}
%>
<h1 class="container text-center">正在进行登录操作</h1>
<form action="login" method="post" >
<div class="form-group container">
<label class="control-label" for="name1">用户名</label>
<div>
<input type="text" name="uname" value="${usernameCookie}" placeholder="请输入您的用户名" id="name1" class="form-control" required/>
<label id="name-bg"></label>
</div>
</div>
修改后
四、总结
以上是我对于Cookie的小见解
如有什么不对的地方还请xdm纠正