javaweb之Session簡單例子(兩個頁面一個存資料,一個取資料)和session的一些基本內容
阿新 • • 發佈:2019-01-08
package test.session; import java.io.IOException; 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; //購買servlet public class SessionDemo1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String sessionId = session.getId(); // 將回寫給瀏覽器的Cookie覆蓋,設定上有效期,那麼這個session也就有有效期了 Cookie cookie = new Cookie("JSESSIONID", sessionId); cookie.setPath("/day07"); // 設定有效期為30分鐘 cookie.setMaxAge(60 * 30); response.addCookie(cookie); session.setAttribute("name", "洗衣機"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
package test.session; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; //結賬servelt public class SessionDemo2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setHeader("Content-type", "text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); String product = (String) session.getAttribute("name"); out.print("您購買的商品是:" + product); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } // 第一次執行getSession建立Session // 關閉瀏覽器後sesson沒死,三十分鐘沒人用才死 // session也是伺服器中的web資源,session的配置要在web.xml中配置 /* * 配置session60分鐘沒人用摧毀 <session-config> <session-timeout>60</session-timeout> * </session-config> */ // 程式中摧毀session session.invalidate(); /* * request.getSession(false);不建立session,只獲取session,效能稍微高點,這個在購買的時候用,比如使用者購買用的request * .getSession();這個得到session * 但是到購物車檢視就不要重新建立session了,直接request.getSession(false); * ,如果用request.getSession();的話,使用者直接點購物車也會建立session */ // session是基於cookie的。伺服器為瀏覽器建立的session的id,會通過cookie回寫給瀏覽器,這個cookie是沒有設定有效期的,瀏覽器一關就失效了 // 設定session的有效期,就是設定回寫給瀏覽器的cookie的有效期。這個Cookie叫JSESSIONID // 沒有設定有效期的時候開啟瀏覽器做一些session操作,然後重開一個瀏覽器 拿到的session是沒有原來的操作的 // 沒有設定有效期的session,也就是瀏覽器程序的session,在瀏覽器中新開選項卡和基於本瀏覽器開啟新的瀏覽器是一個視窗(根據不同瀏覽器而言是不同的IE7開啟兩個視窗session的id是不同的,IE8開啟兩個視窗session的id就相同)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <a href="/day07/servlet/SessionDemo1">購買</a> <a href="/day07/servlet/SessionDemo2">結賬</a> </body> </html>