首先,你要知道Session和SessionId的关系,以及Session和Cookie的关系。
Session是将会话数据存在于服务端的一种机制,由于Http无状态的特性,所以需要SessionId来维持浏览器与服务器的关联。
SessionId只要用特定的方式传递到服务器,服务器就可以解析到SessionId并拿到Session数据。常见的有URL参数、Cookie、Header参数等传递方式。
一般情况下JavaWeb项目的容器会把SessionId存储到Cookie中,这样就可以设置过期时间、只读等属性。
Session的配置一般会写在JavaWeb项目的Web.xml文件中,比如以下配置
需要注意以下配置只能用于Servlet3.0及以上版本,较低版本可用监听器或过滤器实现设置属性。
<session-config>
# 设置Session数据30分钟后过期
<session-timeout>30</session-timeout>
<cookie-config>
# 设置SessionId在Cookie中的名称
<name>sop_session_id</name>
# 设置SessionId存在哪个路径下,跟路径则可全站使用
<path>/</path>
# 设置是否只读
<http-only>true</http-only>
# 设置SessionId30分钟后过期
<max-age>10800</max-age>
# 设置安全机制,只有https才能获取
<secure>true</secure>
</cookie-config>
</session-config>