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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Servlet】Session的特点和使用

發布時間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Servlet】Session的特点和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Session

Session用來存儲用戶的不同請求的共享數據。作用范圍:一次會話

Request 對象解決了一次請求內的不同Servlet 的數據共享問題,那么一個用戶的不同請求的處理需要使用相同的數據怎么辦呢?
使用session 技術。

session 原理:
用戶使用瀏覽器第一次向服務器發送請求,服務器在接受到請求后,調用對應的Servlet 進行處理。在處理過程中會給用戶創建一個session 對象,用來存儲用戶請求處理相關的公共數據,并將此session 對象的JSESSIONID 以Cookie 的形式存儲在瀏覽器中(臨時存儲,瀏覽器關閉即失效)。
用戶在發起第二次請求及后續請求時,請求信息中會附帶JSESSIONID,服務器在接收到請求后,調用對應的Servlet 進行請求處理,同時根據JSESSIONID 返回其對應的session 對象。

特點:
Session 技術是依賴Cookie 技術的服務器端的數據存儲技術。
由服務器進行創建
每個用戶獨立擁有一個session
默認存儲時間為30分鐘(在30分鐘內,session對象沒有被使用,則自動銷毀)

HttpSession hs = req.getSession(); //如果有則返回,沒有則創建新的session(單例模式?) hs.setMaxInactiveInterval(int seconds); // 在指定的時間內,如果發起了新的請求,重新計時

設置session強制失效

hs.invalidate();

作用:
解決了一個用戶的不同請求的數據共享問題。

使用:
創建Session 對象
存儲數據到session 對象
獲取session 對象
獲取數據從session 對象
如果獲取session 中不存在的數據返回null。

注意:
只要不關閉瀏覽器,并且session 不失效的情況下,同一個用戶的任意請求在項目的任意Servlet 中獲取到的都是同一個session對象。

作用域:
一次會話(瀏覽器關閉就失效)

案例:

登錄練習使用,詳見源碼

SessionServlet.java

package com.bjsxt.servlet;import java.io.IOException;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /*** session技術學習:* 問題:* 一個用戶的不同請求處理的數據共享怎么辦?* 解決:* 使用session技術* 原理:* 用戶第一次訪問服務器,服務器會創建一個session對象給此用戶,并將* 該session對象的JSESSIONID使用Cookie技術存儲到瀏覽器中,保證* 用戶的其他請求能夠獲取到同一個session對象,也保證了不同請求能夠獲取到* 共享的數據。* 特點:* 存儲在服務器端* 服務器進行創建* 依賴Cookie技術* 一次會話* 默認存儲時間是30分鐘* 作用:* 解決了一個用戶不同請求處理的數據共享問題* 使用:* 創建session對象/獲取session對象HttpSession hs=req.getSession();如果請求中擁有session的標識符也就是JSESSIONID,則返回其對應的session隊形如果請求中沒有session的標識符也就是JSESSIONID,則創建新的session對象,并將其JSESSIONID作為從cookie數據存儲到瀏覽器內存中* 如果session對象是失效了,也會重新創建一個session對象,并將其JSESSIONID存儲在瀏覽器內存中。* 設置session存儲時間* hs.setMaxInactiveInterval(int seconds);* 注意:* 在指定的時間內session對象沒有被使用則銷毀,如果使用了則重新計時。* 設置session強制失效* hs.invalidate();* 存儲和獲取數據* 存儲:hs.setAttribute(String name,Object value);* 獲取:hs.getAttribute(String name) 返回的數據類型為Object* 注意:* 存儲的動作和取出的動作發生在不同的請求中,但是存儲要先于取出執行。* 使用時機:* 一般用戶在登陸web項目時會將用戶的個人信息存儲到Sesion中,供該用戶的其他請求使用。* 總結:* session解決了一個用戶的不同請求的數據共享問題,只要在JSESSIONID不失效和session對象不失效的情況下。* 用戶的任意請求在處理時都能獲取到同一個session對象。* 作用域:* 一次會話* 在JSESSIONID和SESSION對象不失效的情況下為整個項目內。* session失效處理:* 將用戶請求中的JSESSIONID和后臺獲取到的SESSION對象的JSESSIONID進行比對,如果一致* 則session沒有失效,如果不一致則證明session失效了。重定向到登錄頁面,讓用戶重新登錄。* 注意:* JSESSIONID存儲在了Cookie的臨時存儲空間中,瀏覽器關閉即失效。* * @author MyPC**/ public class SessionServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//設置請求編碼格式req.setCharacterEncoding("utf-8");//設置響應編碼格式resp.setContentType("text/html;charset=utf-8");//獲取請求信息String name="張三";//處理請求信息//創建session對象HttpSession hs=req.getSession();//設置session的存儲時間//hs.setMaxInactiveInterval(5);System.out.println(hs.getId());//設置session強制失效//hs.invalidate();//存儲數據hs.setAttribute("name",name);//響應處理結果//直接響應resp.getWriter().write("session學習");//請求轉發//重定向} }

top.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="cn.hanquan.orm.po.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標題文檔</title> <link href="/09-Manager/css/style.css" rel="stylesheet" type="text/css" /> <script language="JavaScript" src="/09-Manager/js/jquery.js"></script> <script type="text/javascript">$(function() {//退出功能$("#out").click(function() {var flag = window.confirm("你真的要退出嗎?");if (flag) {window.top.location.href = "/09-Manager/UserServlet?oper=out";}})}) </script></head><body style="background:url(/09-Manager/images/topbg.gif) repeat-x;"><div class="topleft"><a href="/09-Manager/main/main.jsp" target="_parent"><img src="/09-Manager/images/logo.png" title="系統首頁" /></a></div><div class="topright"><!-- 退出 --> <ul><li><a href="javascript:void(0)" id="out">退出</a></li></ul><!-- 用戶名 --><div class="user"><span><%=((User)session.getAttribute("user")).getUname()%></span></div> </div></body> </html>

總結

以上是生活随笔為你收集整理的【Servlet】Session的特点和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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