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+"");
}
}
結果是: