一、Session
1. 概念:伺服器端會話技術,在一次會話的多次請求間共享資料,将資料儲存在伺服器端的對象中。
2. 常用方法:
擷取HttpSession對象:
HttpSession session = request.getSession();
使用HttpSession對象:
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)
3. 原理: Session的實作是依賴于Cookie的。
4. session的特點:
- session用于存儲一次會話的多次請求的資料,存在伺服器端
- session可以存儲任意類型,任意大小的資料
5. session與Cookie的差別:
- session存儲資料在伺服器端,Cookie在用戶端
- session沒有資料大小限制,Cookie有
- session資料安全,Cookie相對于不安全
6. session的銷毀時間:
- 伺服器關閉
- session對象調用invalidate() 。
- session預設失效時間 30分鐘(可修改tomcat下的web.xml檔案中的session-config)
<session-config> <session-timeout>30</session-timeout> </session-config>
7. session與cookie的差別:
- session存儲資料在伺服器端,Cookie在用戶端
- session沒有資料大小限制,Cookie有
- session資料安全,Cookie相對于不安全
8. 其它
- 當用戶端關閉,伺服器不關閉,兩次擷取session在預設情況下不是同一個,但可以通過建立cookie,設定存活時間進行存儲
Cookie c = new Cookie("JSESSIONID",session.getId()); c.setMaxAge(60*60); response.addCookie(c);
當用戶端不關閉,伺服器關閉,兩次擷取session也不是用一個,但是為確定資料不丢失,tomcat自動完成以下工作:
session的鈍化:在伺服器正常關閉之前,将session對象系列化到硬碟上
session的活化:在伺服器啟動後,将session檔案轉化為記憶體中的session對象即可。
二、Session案例
1. 需求:将session持久化存儲
2. 代碼實作:
編寫SessionServlet:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL1kkaNd3ZU10dRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyMTO2AzM1UTMyEDOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
編寫SessionServlet2:
3. 結果
續:
三、JSP入門
1. 概念:Java Server Pages -> java伺服器端頁面,既可以指定定義html标簽,又可以定義java代碼。
2. 原理:JSP本質上就是一個Servlet
3. JSP的腳本:JSP定義Java代碼的方式
- <% 代碼 %>:定義的java代碼,在service方法中。service方法中可以定義什麼,該腳本中就可以定義什麼。
- <%! 代碼 %>:定義的java代碼,在jsp轉換後的java類的成員位置。
- <%= 代碼 %>:定義的java代碼,會輸出到頁面上。輸出語句中可以定義什麼,該腳本中就可以定義什麼。
4. JSP的内置對象(九個):在jsp頁面中不需要擷取和建立,可以直接使用的對象
1.PageContext javax.servlet.jsp.PageContext JSP的頁面容 器
2.request javax.servlet.http.HttpServletrequest 擷取使用者的請求資訊
3.response javax.servlet.http.HttpServletResponse 伺服器向用戶端的回應資訊
4.session javax.servlet.http.HttpSession 用來儲存每一個使用者的資訊
5.application javax.servlet.ServletContext 表示所有使用者的共享資訊
6.config javax.servlet.ServletConfig 伺服器配置資訊,可以取得初始化參數
7.out javax.servlet.jsp.jspWriter 頁面輸出
8.page java.lang.object)
9.exception java.lang.Throwable
四、案例
- 編寫JSPServlet: 續:
逆水行舟之servlet學習第四天(下) 逆水行舟之servlet學習第四天(下) - 編寫JSPShopping.jsp 續:
逆水行舟之servlet學習第四天(下) 逆水行舟之servlet學習第四天(下) - 結果
逆水行舟之servlet學習第四天(下)
補充:
response.getWriter()和out.write()的差別:
- 在tomcat伺服器真正給用戶端做出響應之前,會先找response緩沖區資料,再找out緩沖區資料。
- response.getWriter()資料輸出永遠在out.write()之前
not learn to live:
難過的不是你不知道,是知道了卻什麼也做不了。這是生活給予你的無力感,更是自己對生活的一種縱容。