Cookie
----------------------------------------------------------------------
范例1: 创建cookie
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>cookie</servlet-name>
<servlet-class>com.itcast.servlet.cookie.CookieServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>showServlet</servlet-name>
<servlet-class>com.itcast.servlet.cookie.ShowServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cookie</servlet-name>
<url-pattern>/cookie</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>showServlet</servlet-name>
<url-pattern>/showServlet</url-pattern>
</servlet-mapping>
</web-app>
CookieServlet.java:
public class CookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
// 创建Cookie
Cookie cookie = new Cookie("user1", "Tom");
cookie.setMaxAge(10);
// 将cookie写入客户端
resp.addCookie(cookie);
resp.getWriter().print("<h3>cookie已经创建!</h3>");
}
}
测试:
-----------------------------------------------------------
范例2: 获取cookies
ShowServlet.java:
public class ShowServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("GBK");
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
// 获取客户端cookies
Cookie []cookies = req.getCookies();
// 判断是否有cookie
Cookie cookie = null;
if (cookies != null) {
// 遍历cookies
for (int i=0; i<cookies.length; i++) {
cookie = cookies[i];
// 判断是否是指定的cookie名称
if ("user1".equals(cookie.getName())) {
// 拿到cookie的值
String cookieValue = cookie.getValue();
out.print("<h3>cookie的值: " + cookieValue + "</h3>");
break; // 退出循环
}
}
} else {
out.print("<h3>Cookie不存在或者已经过期!</h3>");
}
}
}
测试: 在创建cookie后10秒之内访问http://localhost:8080/servlet_cookie/showServlet
10秒后再访问就会过期:
--------------------------------------------------
范例3: 删除cookie
setMaxAge(value);
value: -1, 默认值, 表示浏览器关闭之后cookie销毁
value: 0, 表示立即删除cookie
value: 正数, 表示从创建cookie的那一刻起开始计时, 到达这个设定的时间(单位: 秒), cookie就会销毁
-------------------------------------------
范例4: 保存密码
LoginServlet.java:
LoginClServlet.java: