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 设定工作线程数

 

 

 

 

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