1、概念
2、Cookie
1)创建和发送
CookieServlet.java
package net.pp.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "CookieServlet", urlPatterns = "/cookie")
public class CookieServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建和发送cookie
Cookie cookie = new Cookie("goods", "cup");//不能使用中文
cookie.setMaxAge(60*10);//设置cookie持久化时间
//cookie.setMaxAge(0);//设置cookie持久化时间0,删除cookie
cookie.setPath("/hello/getCookie");//设置路径
response.addCookie(cookie);//发送cookie给客户端
}
}
结果是:
2)常见API
注意:
当关闭浏览器后,完成一个会话。再重新打开浏览器,内存中的Cookie消失。解决办法是,设置一个方法cookie.setMaxAge();cookie会留在浏览器中。
2、Session
1) Session对象的获取和创建
2)使用Session域对象存取数据
3)Session的生命周期
4)Session持久化
SessionServlet.java
package net.pp.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(name = "SessionServlet", urlPatterns = "/session")
public class SessionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//第一次访问时没有session,服务器会自动创建一个session对象
//之后再次访问的时候已经存在了session对象,直接获取这个对象
HttpSession session = request.getSession();
String sessionId = session.getId();
response.getWriter().write("JSESSIONID=" + sessionId);
}
}
SaveSession.java
package net.pp.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet(name = "SaveSessionServlet", urlPatterns = "/saveSession")
public class SaveSessionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
//创建一个cookie覆盖之前的服务器自动生成是JSESSION
Cookie cookie = new Cookie("JSESSIONID", session.getId());
//设置持久化时间
cookie.setMaxAge(60*60);
response.addCookie(cookie);
session.setAttribute("goods", "love");
}
}
GetSessionServlet.java
package net.pp.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(name = "GetSessionServlet", urlPatterns = "/getSession")
public class GetSessionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取session
HttpSession session = request.getSession();
String goods = (String) session.getAttribute("goods");
response.getWriter().write(goods+"");
}
}
结果是: