(1)cookie的简单运用
loginServlet
@WebServlet("/cookie/login")
public class loginServlet extends HttpServlet{
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");//设置请求的编码
resp.setContentType("text/html;charset=utf-8");//设置输出的类型和编码
PrintWriter out = resp.getWriter();//获取一个输出流
String username = req.getParameter("username");
System.out.println(username);
//添加cookie
Cookie cookie = new Cookie("currentName",username);
resp.addCookie(cookie);
out.print("欢迎:"+username+"<br/>");
out.print("<a href='/cookie/list'>收件箱</a>");
}
}
listServlet
@WebServlet("/cookie/list")
public class listServlet extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");//设置请求的编码
resp.setContentType("text/html;charset=utf-8");//设置输出的类型和编码
PrintWriter out = resp.getWriter();//获取一个输出流
String username = "";
//获取多个cookie
Cookie[] cookie = req.getCookies();
for (Cookie cookie2 : cookie) {
String name = cookie2.getName();
String value = cookie2.getValue();
System.out.println("name:"+name+"value:"+value);
if("currentName".equals(name)){
username=value;
}
}
// String username = req.getParameter("username");
// System.out.println(username);
out.print("欢迎:"+username+"<br/>");
for (int i = 0; i < 10; i++) {
out.print("<a href='/cookie/getmail'>一份邮件</a><br/>");
}
}
}
lgetServlet
@WebServlet("/cookie/getmail")
public class lgetServlet extends HttpServlet{
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");//设置请求的编码
resp.setContentType("text/html;charset=utf-8");//设置输出的类型和编码
PrintWriter out = resp.getWriter();//获取一个输出流
String username = "";
//获取多个cookie
Cookie[] cookie = req.getCookies();
for (Cookie cookie2 : cookie) {
String name = cookie2.getName();
String value = cookie2.getValue();
System.out.println("name:"+name+"value:"+value);
if("currentName".equals(name)){
username=value;
}
}
// String username = req.getParameter("username");
// System.out.println(username);
out.print("欢迎:"+username+"<br/>");
out.print("涂大帅哥");
}
}
(2)cookie的细节
1、在cookie中属性名和属性值不能使用中文–解决方案:使用UrlEncoder.encode(string,“UTF-8”)编码,使用UrlDncoder.decode(string,“UTF-8”)解码
2、cookie的分类:会话cookie:关闭浏览器之后cookie就会销毁,持久化cookie:cookie可以保存指定时间段
3、删除cookie:cookie.setMaxAge(0)
(3)cookie的路径和缺陷