本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、JSESSIONID作用
Tomcat在没有做任何特殊配置的情况下,其session的CookieKey为JSESSIONID (JSESSIONID 是通过浏览器Cookie 来存储和传递的)。
JSESSIONID如果冲突了,就要改变JSESSIONID这个key,但是这个修改不在代码中修改,而是在Tomcat中修改。
二、修改JSESSIONID的key
修改Tomcat的conf/server.xml 文件,修改接近文件最下面的Context元素,如果没有添加这个标签,位置如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<Context path="/h5" docBase="h5" reloadable="true" sessionCookiePath="/" sessionCookieName="JSESSIONID_H5"/>
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Context path="/h5" docBase="h5" reloadable="true" sessionCookiePath="/" sessionCookieName="JSESSIONID_H5"/>
设置好之后,此时的系统的CookieKey 就是JSESSIONID_H5
这里还设置了path,这里的JSESSIONID_H5存在/h5 这个路径下面,如果访问项目地址是xxx.com/h6/index.action 这样的,那么CookieKey 就无法获取,需要设置path作用路劲, 有3种方式可以设置:
- 可以直接设置path=h6
- 可以设置path=/
- 还可以不用设置path,这样 tomcat 会自动更具项目名称进行设置