Cookie
1. 什么是Cookie?
是在用户浏览网站时由网络服务器创建的小块数据,并由用户的网络浏览器放置在用户的计算机或其他设备上。Cookie 放置在用于访问网站的设备上,并且在会话期间可能会在用户的设备上放置多个 cookie。
Cookie 在网络上提供有用且有时必不可少的功能。它们使 Web 服务器能够在用户的设备上存储状态信息(例如添加到在线商店的购物车中的商品)或跟踪用户的浏览活动(包括单击特定按钮、登录或记录在过去)。它们还可以用于保存用户先前在表单字段中输入的信息,例如姓名、地址、密码和支付卡号,以供后续使用。
2. 直接看例子
这里用两个数相加后再进行平方的运算作为例子,内含注释简单易懂
(1)Addnumber类
package com.xiaoming;
import java.io.IOException;
import java.net.http.HttpRequest;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Addnumber extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest req , HttpServletResponse res) throws IOException, ServletException{
int i = Integer.parseInt(req.getParameter("num1"));//从请求中获取到num1的值
int j = Integer.parseInt(req.getParameter("num2"));//从请求中获取到num2的值
int count = i + j;
// 创建Cookie对象,注意两个参数的值均为String,所以下面就把count转换成字符串
Cookie cookie = new Cookie("count", count + "");
// 把请求添加到Cookie中
res.addCookie(cookie);
res.sendRedirect("sq");//把请求重定向到sq
}
}
(2)Sqnumber类
package com.xiaoming;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Sqnumber extends HttpServlet{
public void doGet(HttpServletRequest req , HttpServletResponse res) throws IOException
{
int k = 0;
// 为什么要用数组的原因:因为getCookies()会把所有的Cookie以数组的形式返回回来,要自己选择需要用哪个
Cookie cookie[] = req.getCookies();
// 循环查找,找到count并获得它的值
for(Cookie m : cookie) {
if(m.getName().equals("count"))
k = Integer.parseInt(m.getValue());
}
k = k * k;
PrintWriter out = res.getWriter();
out.println("Result is " + k);
System.out.println("Sqnumber called");
}
}
(3)index.html
<!DOCTYPE html>
<html>
<body>
<form action="add" method="get">
<!-- 注意,上面action定向到add,方法是get -->
输入第一个数 : <input type="text" name="num1"><br>
输入第二个数 : <input type="text" name="num2"><br>
<input type="submit">
</form>
</body>
</html>
(4)web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_7.xsd" id="WebApp_ID" version="3.1">
<servlet>
<servlet-name>addnumber</servlet-name>
<servlet-class>com.xiaoming.Addnumber</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addnumber</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>sqnumber</servlet-name>
<servlet-class>com.xiaoming.Sqnumber</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sqnumber</servlet-name>
<url-pattern>/sq</url-pattern>
</servlet-mapping>
</web-app>
3.运行index.html
如图所示,输入2,7
点击提交,结果如图