[TOC]
# cookie
## 服務器端向客戶端發送一個Cookie
### 創建Cookie:
~~~
Cookie cookie = new Cookie(String cookieName,String cookieValue);
~~~
示例:
~~~
Cookie cookie = new Cookie("username","zhangsan");
~~~
那么該cookie會以響應頭的形式發送給客戶端:
**注意:Cookie中不能存儲中文**
### 設置Cookie在客戶端的持久化時間:
~~~
cookie.setMaxAge(int seconds); ---時間秒
~~~
注意:如果不設置持久化時間,cookie會存儲在瀏覽器的內存中,瀏覽器關閉 cookie信息銷毀(會話級別的cookie),如果設置持久化時間,cookie信息會 被持久化到瀏覽器的磁盤文件里
示例:
cookie.setMaxAge(10*60);
設置cookie信息在瀏覽器的磁盤文件中存儲的時間是10分鐘,過期瀏覽器 自動刪除該cookie信息
### 設置Cookie的攜帶路徑:
~~~
cookie.setPath(String path);
~~~
注意:如果不設置攜帶路徑,那么該cookie信息會在訪問產生該cookie的 web資源所在的路徑都攜帶cookie信息
示例:
cookie.setPath("/WEB16");
代表訪問WEB16應用中的任何資源都攜帶cookie
cookie.setPath("/WEB16/cookieServlet");
代表訪問WEB16中的cookieServlet時才攜帶cookie信息
### 向客戶端發送cookie:
response.addCookie(Cookie cookie);
### 刪除客戶端的cookie:
如果想刪除客戶端的已經存儲的cookie信息,那么就使用同名同路徑的持久化時 間為0的cookie進行覆蓋即可
## 服務器端接受客戶端Cookie
cookie信息是以請求頭的方式發送到服務器端的:
### 通過request獲得所有的Cookie:
~~~
Cookie[] cookies = request.getCookies();
~~~
遍歷Cookie數組,通過Cookie的名稱獲得我們想要的Cookie
~~~
for(Cookie cookie : cookies){
if(cookie.getName().equals(cookieName)){
String cookieValue = cookie.getValue();
}
}
~~~
# session
## 獲得Session對象
~~~
HttpSession session = request.getSession();
~~~
此方法會獲得專屬于當前會話的Session對象,
如果服務器端沒有該會話的Session 對象會創建一個新的Session返回,
如果已經有了屬于該會話的Session直接將已有的Session返回(實質就是根據JSESSIONID判斷該客戶端是否在服務器上已經存在session了)
## session中存取數據(session也是一個域對象)
Session也是存儲數據的區域對象,所以session對象也具有如下三個方法:
~~~
session.setAttribute(String name,Object obj);
Object session.getAttribute(String name);
session.removeAttribute(String name);
~~~
## Session對象的生命周期
創建:第一次執行request.getSession()時創建
銷毀:
1)服務器(非正常)關閉時
2)session過期/失效(默認30分鐘)
問題:時間的起算點 從何時開始計算30分鐘?
從不操作服務器端的資源開始計時
可以在工程的web.xml中進行配置
~~~
<session-config>
<session-timeout>30</session-timeout>
</session-config>
~~~
3)手動銷毀session
~~~
session.invalidate();
~~~
作用范圍:
默認在一次會話中,也就是說在,一次會話中任何資源公用一個session對象
- 基礎
- 編譯和安裝
- scanner類(鍵盤錄入)
- Random類(隨機數)
- 數組
- 方法
- 類
- ArrayList集合
- char與int
- eclipse
- IDEA
- 變量與常量
- 常用API
- String,StringBuffer,StringBuilder
- 正則,Date,DateFormat,Calendar
- 包裝類,System,Math,Arrays,BigInteger,BigDecimal
- 集合,迭代器,增強for,泛型
- List,set,判斷集合唯一
- map,Entry,HashMap,Collections
- 異常
- IO
- File
- 遞歸
- 字節流
- 字符流
- IO流分類
- 轉換流
- 緩沖流
- 流的操作規律
- properties
- 序列化流與反序列化流
- 打印流
- commons-IO
- IO流總結
- 多線程
- 線程池
- 線程安全
- 線程同步
- 死鎖
- lock接口
- ThreadLoad
- 等待喚醒機制
- 線程狀態
- jdbc
- DBUtils
- 連接池DBCP
- c3p0連接池
- 網絡編程
- 多線程socket上傳圖片
- 反射
- xml
- 設計模式
- 裝飾器模式
- web service
- tomcat
- Servlet
- response
- request
- session和cookie
- JSP
- EL
- JSTL
- 事務
- 監聽器Listener
- 過濾器Filter
- json
- linux安裝軟件
- 反射詳解
- 類加載器和注解
- 動態代理
- jedis
- Hibernate
- 簡介
- 創建映射文件
- Hibernate核心配置文件
- 事務和增刪改查
- HibernateUtils
- 持久化對象的三種狀態
- 檢索方式
- query
- Criteria
- SQLQuery
- 持久化類
- 主鍵生成策略
- 緩存
- 事務管理
- 關系映射
- 注解
- 優化
- struts2
- 搭建
- 配置詳解
- Action
- 結果跳轉方式
- 訪問ServletAPI方式
- 如何獲得參數
- OGNL表達式
- valueStack 值棧
- Interceptor攔截器
- spring
- 導包
- IOC和DI
- Bean獲取與實例化
- Bean屬性注入
- spring注解
- 注解分層
- junit整合
- aop
- 動態代理實現
- cglib代理實現
- aop名詞
- spring的aop
- aop-xml詳解
- aop-注解詳解
- 代理方式選擇
- jdbcTemplate
- spring事務管理
- 回滾注意
- 事務傳播屬性
- MyBatis
- MyBatis簡介
- 入門程序
- 與jdbc hibernate不同
- 原始Dao開發
- Mapper動態代理方式
- SqlMapConfig.xml配置文件
- 輸入參數pojo包裝類
- resultMap
- 動態sql
- 一對一關聯
- 一對多
- 整合spring
- 逆向工程
- maven
- maven簡介
- 倉庫
- maven目錄結構
- maven常用命令
- 生命周期
- eclipse中maven插件
- 入門程序
- 整合struct
- 依賴范圍
- 添加插件
- idea配置
- jar包沖突
- 分模塊開發
- 構建可執行的jar包(包含依賴jar包)
- springMVC
- 處理流程
- java面試
- java版本升級
- java1-8版本變更
- java9新特性
- 鎖
- java資料
- idea
- jdk版本切換
- log4j
- 入門實例
- 基本使用方法
- Web中使用Log4j
- spring中使用log4j
- java代碼優化