Spring Boot使用Servlet Session和Spring Session

1、直接使用Tomcat Session可以滿足用戶訪問量不大的情況,因爲Session是直接創建在應用部署的機器上,當併發用戶量上來後,會發現應用機器的內存也直線上升,這樣的架構是不可控的。

 

2、Servlet的Session功能全部都封裝在HttpServletRequest中,所以Session的創建是需要用戶手動操作的,一般是在登錄認證通過以後,我們會通過HttpServletRequest#getSession(true)來創建一個Session,我們知道,Servlet Session是依賴Cookie的,創建Session後,會在HttpServletResponse設置一個名爲JSESSIONID的cookie,當然,這個動作對用戶來說是透明的。需要強調的是,Session這個對象不會自動創建,很多人誤以爲任意一個請求就會創建Session。所以大家不用去考慮Session的開關,因爲沒有開關,也不需要開關,不用擔心沒使用它時會佔用你的機器資源,因爲只有你手動調用了getSession()方法纔有機會創建對應的Session和Cookie。

 

3、springboot2對Servlet Session的可配置參數如下:

server.servlet.session.cookie

private String name;
private String domain;
private String path;
private String comment;
private Boolean httpOnly;
private Boolean secure;
private Duration maxAge;

#sprinboot1的server相關配置
server.address 指定server綁定的地址
server.port 設定http監聽端口
server-servlet-path 設定dispatcher-servlet 的監聽路徑,默認爲/

server.compression.enabled 是否開啓壓縮,默認爲false,Spring Boot默認沒有啓用Http包壓縮功能,但是壓縮對減少帶寬和加快頁面加載非常有用。
server.compression.excluded-user-agents 指定不壓縮的user-agent 多個以逗號分隔,默認值爲text/html,text/xml.text/plain,text/css
server.compression.mime-types 指定要壓縮的mime-type,多個以逗號分隔.
server.compression.min-response-size 執行壓縮的閾值,默認爲2048

server.context-parameters.[param.name]設置servlet context參數
server.context-path 設定應用的展示名稱,默認爲application

server.jsp-servlet.class-name 設定編譯jsp用的servlet,默認:org.apache.jasper.servlet.JspServlet
server.jsp-servlet.registered 設定jsp servlet是否註冊到內嵌的servlet容器,默認爲true
 
cookie,session屬性
server.session.cookie.comment = #註釋會話cookie。
server.session.cookie.domain = #會話cookie的域。
server.session.cookie.max-age = #會話cookie的最大年齡(以秒爲單位)。
server.session.cookie.name = #會話cookie名稱。
server.session.cookie.path = #會話cookie的路徑。
server.session.cookie.secure = #“Secure”標誌爲會話cookie。
server.session.persistent = false #在重新啓動之間持續會話數據。
server.session.store-dir = #用於存儲會話數據的目錄。
server.session.timeout = #會話超時(秒)。
server.session.tracking-modes =#會話跟蹤模式(以下一個或多個:“cookie”,“url”,“ssl”)
ssl

server.ssl.ciphers 是否支持ssl ciphers
server.ssl.client-auth 設定client authentication是wanted 還是needed
server.ssl.enabled 是否開啓ssl,默認爲true
server.ssl.key-alias 設定key store中key的別名
server.ssl.key-password 訪問key store中key的名稱
server;ssl.key-store設定持有ssl certificate中的key store的路徑.通常是.jks文件
server.ssl.key-store-password 設定訪問key store的密碼.
server.ssl.key-store-provider 設定key store的提供者.
server.ssl.key-store-type 設定key store的類型.
server.ssl.protocol 使用的SSL協議,默認: TLS
server.ssl.trust-store 持有SSL certificates的Trust store
server.ssl.trust-store-password 訪問trust store的密碼.
server.ssl.trust-store-provider 設定trust store的提供者.
server.ssl.trust-store-type 指定trust store的類型.

tomcat

server.tomcat.access-log-enabled 是否開啓access log ,默認: false
server.tomcat.access-log-pattern 設定access logs的格式,默認: common
server.tomcat.accesslog.directory 設定log的目錄,默認: logs
server.tomcat.accesslog.enabled 是否開啓access log,默認: false
server.tomcat.accesslog.pattern 設定access logs的格式,默認: common
server.tomcat.accesslog.prefix 設定log 文件的前綴,默認: access_log
server.tomcat.accesslog.suffix 設定log 文件的後綴,默認: .log
server.tomcat.background-processor-delay 後臺線程方法的delay大小: 30
server.tomcat.basedir 設定tomcat的base 目錄,如果沒有指定則使用臨時目錄.
server.tomcat.internal-proxies 設定信任的正則表達式,默認:“10.\d{1,3}.\d{1,3}.\d{1,3}| 192.168.\d{1,3}.\d{1,3}| 169.254.\d{1,3}.\d{1,3}| 127.\d{1,3}.\d{1,3}.\d{1,3}| 172.1[6-9]{1}.\d{1,3}.\d{1,3}| 172.2[0-9]{1}.\d{1,3}.\d{1,3}|172.3[0-1]{1}.\d{1,3}.\d{1,3}”
server.tomcat.max-http-header-size 設定http header的最小值,默認: 0
server.tomcat.max-threads 設定tomcat的最大工作線程數,默認爲: 0
server.tomcat.port-header 設定http header使用的,用來覆蓋原來port的value.
server.tomcat.protocol-header 設定Header包含的協議,通常是 X-Forwarded-Proto,如果remoteIpHeader有值,則將設置爲RemoteIpValve.
server.tomcat.protocol-header-https-value 設定使用SSL的header的值,默認https.
server.tomcat.remote-ip-header 設定remote IP的header,如果remoteIpHeader有值,則設置爲RemoteIpValve
server.tomcat.uri-encoding 設定URI的解碼字符集.

undertow

server.undertow.access-log-dir 設定undertow access log 的目錄,默認: logs
server.undertow.access-log-enabled 是否開啓access log,默認: false
server.undertow.access-log-pattern 設定access logs的格式,默認: common
server.undertow.accesslog.dir 設定access log 的目錄.
server.undertow.buffer-size 設定buffer的大小.
server.undertow.buffers-per-region 設定每個region的buffer數
server.undertow.direct-buffers 設定堆外內存
server.undertow.io-threads 設定I/O線程數.
server.undertow.worker-threads 設定工作線程數

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章