日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTPSession对象知识总结

發布時間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTPSession对象知识总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTTPSession對象


HTTPSession對象的特點;


1.HTTPSession對象是保存在服務器端的;
2.HTTPSession允許存儲任何數據類型;
3.HTTPSession存儲數據大小無限制;
4.HTTPSession對象存儲數據結構為key:value


HTTPSession對象的使用


創建HTTPSession對象;
在HttpSession對象的創建是通過request.getSession();方法創建的,這個方法會判斷請求中是否有sessionID,如果有則返回此ID對應的HTTPSession對象,如果沒有則會創建一個新的HTTPSession對象并為此對象創建一個sessionID,在響應中通過cookie寫回到客戶端瀏覽器中;
Request.getSession()方法還有一個重載方法,為request.getSession(true|false);如果參數為true則作用于無參方法相同,如果參數為false則會根據sessionID返回對應的HTTPSession對象,如果沒有sessionID則不會創建新的HTTPSession對象;

代碼示例:
(包括向session對象中添加數據,配置session對象銷毀時間,以及銷毀方法)

package com.bjsxt.servlet;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.PrintWriter; import java.net.URLEncoder;/*** HttpSession對象創建過程* */ public class CreateHttpSessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /*(前提是只有ie和谷歌瀏覽器)獲取請求頭,利用請求頭判斷是什么客戶端瀏覽器如果含有Chrome則是谷歌瀏覽器,如果沒有則是ie*/String header = req.getHeader("User-Agent");HttpSession session = req.getSession();//HttpSession session = req.getSession(false);if(header.indexOf("Chrome")!=-1){session.setAttribute("key","谷歌"); // 銷毀當前的HTTPSession對象session.invalidate();}else{session.setAttribute("key","ie");} // session.setAttribute("key","value");String id = session.getId();System.out.println(session);System.out.println("sessionId:"+id);PrintWriter out = resp.getWriter();out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");out.println("<HTML>");out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");out.println("<BODY>");out.println("Create HttpSession"+id);out.println("</BODY>");out.println("</HTML>");out.flush();out.close();} }

Xml配置文件

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"> <servlet><servlet-name>createHttpSessionServlet</servlet-name><servlet-class>com.bjsxt.servlet.CreateHttpSessionServlet</servlet-class></servlet><servlet-mapping><servlet-name>createHttpSessionServlet</servlet-name><url-pattern>/createSession.do</url-pattern></servlet-mapping> 配置session對象銷毀的時間為1分鐘; <session-config><session-timeout>1</session-timeout> </session-config> </web-app>

注意:服務端會根據不同的客戶端瀏覽器創建不同的HTTPSession對象;


獲取HTTPSession中的數據;


1.通過key 獲取HTTPSession中的數據,返回object;
Session.getAttribute(“key”);
2.獲取sessionID,返回String
Session.getId();

package com.bjsxt.servlet;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder;/*** 獲取HTTPSession中的數據* */ public class GetHttpSessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session = req.getSession();String value = (String)session.getAttribute("key"); // 由于中文需要進行編碼resp.setContentType("text/html;charset=utf-8");PrintWriter out = resp.getWriter();out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");out.println("<HTML>");out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");out.println("<BODY>");out.println("Value:"+ value);out.println("</BODY>");out.println("</HTML>");out.flush();out.close();} }

Xml配置文件

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"> <servlet><servlet-name>getHttpSessionServlet</servlet-name><servlet-class>com.bjsxt.servlet.GetHttpSessionServlet</servlet-class></servlet><servlet-mapping><servlet-name>getHttpSessionServlet</servlet-name><url-pattern>/getSession.do</url-pattern></servlet-mapping> </web-app>

HTTPSession對象的銷毀


1.在xml中設置HTTPSession對象的銷毀時間(時間以分鐘計算);

<session-config> <session-timeout>1</session-timeout> </session-config>

2.利用HTTPSession對象的invalidate()方法,銷毀;
詳情請看創建HTTPSession對象的代碼部分;


HTTPSession對象的生命周期


HTTPSession對象的生命周期并不確定,它的創建取決于什么時候第一次調用getSession()或getSession(true)方法,生命周期結束取決于xml文件中配置的銷毀時間或是調用invalidate()方法,如果沒有配置銷毀時間,或是沒有調用invalidate()方法,默認銷毀時間為30分鐘;


使用HTTPSession對象存儲數據的建議


HTTPSession對象是保存在瀏覽器中的,安全性較高;可以在HTTPSession對象中存儲數據;
但由于HTTPSession對象的生命周期不固定,所以不建議存儲業務數據;一般情況下可以存儲一些客戶登錄信息;

總結

以上是生活随笔為你收集整理的HTTPSession对象知识总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。