tomcat修改jsessionid在cookie中的名称
### Tomcat中修改JSessionID在Cookie中的名称 在Tomcat服务器中,默认情况下,用于传递会话标识(即JSessionID)的Cookie名称为“JSESSIONID”。有时,出于安全考虑或其他需求,我们可能需要自定义这个名称。本文将详细介绍如何在不同版本的Tomcat中更改JSessionID在Cookie中的名称。 #### 一、Tomcat 5.x 版本 在Tomcat 5.x 版本中,可以通过设置系统属性 `org.apache.catalina.SESSION_COOKIE_NAME` 来更改JSessionID在Cookie中的名称。具体操作步骤如下: 1. **Linux环境:** ```bash JAVA_OPTS="-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname" ``` 2. **Windows环境:** ```cmd set JAVA_OPTS=-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname ``` 这里的 `yousessionname` 是你希望使用的自定义Cookie名称。需要注意的是,在设置系统属性时,确保使用正确的Java启动参数格式。 #### 二、Tomcat 6.x 和 7.x 版本 从Tomcat 6.x 开始,配置JSessionID在Cookie中的名称变得更加灵活。可以通过在`server.xml` 文件中的 `<Context>` 标签内设置 `sessionCookieName` 属性来完成这一操作。 **示例配置:** ```xml <Context path="/docBase=webapp" reloadable="false" sessionCookieName="yoursessionname"> ... </Context> ``` 其中 `yoursessionname` 是自定义的Cookie名称。这种方法比通过系统属性设置更加直观且易于管理。 #### 三、源代码分析 为了更好地理解上述配置是如何工作的,接下来将对Tomcat 5.x 和 6.x/7.x 的源代码进行简单的分析。 ##### 1. Tomcat 5.x 源码解析 在Tomcat 5.x 中,`SESSION_COOKIE_NAME` 的定义如下: ```java public static final String SESSION_COOKIE_NAME = System.getProperty("org.apache.catalina.SESSION_COOKIE_NAME", "JSESSIONID"); ``` 这表明默认情况下,如果没有显式设置系统属性 `org.apache.catalina.SESSION_COOKIE_NAME`,那么`SESSION_COOKIE_NAME` 的值将为 “JSESSIONID”。 ##### 2. Tomcat 6.x/7.x 源码解析 在Tomcat 6.x 和 7.x 中,对于 `<Context>` 配置的 `sessionCookieName` 属性,源码如下所示: ```java private String sessionCookieName; public String getSessionCookieName() { return sessionCookieName; } public void setSessionCookieName(String sessionCookieName) { String oldSessionCookieName = this.sessionCookieName; this.sessionCookieName = sessionCookieName; support.firePropertyChange("sessionCookieName", oldSessionCookieName, sessionCookieName); } ``` 可以看出,`sessionCookieName` 的值可以直接通过 `<Context>` 标签中的 `sessionCookieName` 属性设置,并且可以通过 `getSessionCookieName()` 方法获取当前的Cookie名称。当设置了新的Cookie名称时,`setSessionCookieName()` 方法会触发属性更改事件。 #### 四、总结 通过上述介绍,我们可以看到在不同版本的Tomcat中,更改JSessionID在Cookie中的名称有不同的方法。在早期版本如Tomcat 5.x 中,主要通过系统属性进行设置;而在较新版本如Tomcat 6.x 和 7.x 中,则通过在 `<Context>` 配置中设置 `sessionCookieName` 属性来实现。这些方法各有优势,可以根据实际需求选择合适的方式进行配置。
在启动项中增加org.apache.catalina.SESSION_COOKIE_NAME参数
linux
JAVA_OPTS=’-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname‘
win
set JAVA_OPTS=”-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname“
2、tomcat6和tomcat7修改方法相同
在Context容器标签上增加sessionCookieName参数
<Context path=”/” docBase=”webapp” reloadable=”false” sessionCookieName=”yoursessionname”></Context>
3、为啥这样就好用呢?
tomcat5时增加参数对所有Context生效,影响甚大,所以到以后的版本就仅针对Context设置了
tomcat5源码如下
public final class Globals
/**
* The name of the cookie used to pass the session identifier back
* and forth with the client.
*/
public static final String SESSION_COOKIE_NAME =
- 粉丝: 18
- 资源: 109
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- lanchaoHunanHoutaiQiantai
- (177377030)Python 爬虫.zip
- (177537818)python爬虫基础知识及爬虫实例.zip
- 自动驾驶横纵向耦合控制-复现Apollo横纵向控制 基于动力学误差模型,使用mpc算法,一个控制器同时控制横向和纵向,实现横纵向耦合控制 matlab与simulink联合仿真,纵向控制已经做好油门刹
- (178199432)C++实现STL容器之List
- (178112810)基于ssm+vue餐厅点餐系统.zip
- 两相步进电机FOC矢量控制Simulink仿真模型 1.采用针对两相步进电机的SVPWM控制算法,实现FOC矢量控制,DQ轴解耦控制~ 2.转速电流双闭环控制,电流环采用PI控制,转速环分别采用PI和
- VMware虚拟机USB驱动
- Halcon手眼标定简介(1)
- (175128050)c&c++课程设计-图书管理系统