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币余额
我的收藏
我的下载
下载帮助


最新资源
- ssm土家风景文化管理平台 LW PPT.zip
- 基于Spring Boot+Vue的宠物服务管理系统.zip
- 三菱FX3U PLC与三台VFD-E变频器Modbus RTU通讯实现及优化
- 基于python开发的高校自习室预约系统(含源码+数据库sql+报告及使用说明).zip
- 软件测试测试用例实验11111
- NEURON软件教程:神经元和神经网络模拟技术详解
- 三菱伺服同步控制与编码器跟随在追剪项目中的应用及其实现细节
- 基于PyQt5的串口调试助手与实时波形绘制工具开发详解
- 计算机专业做毕业设计的经验,包括如何选题,如何撰写,如何答辩
- 数字通信中扩频码的同步捕获方法
- 基于MATLAB的时间序列BP神经网络预测:自回归阶数与隐层节点数优化
- 基于MATLAB Simulink的牵引逆变器IGBT故障仿真及特征分析
- 电力电子变换器中虚拟电网磁链定向与电压定向控制的Simulink仿真解析
- ecat-Debug-0327
- 机智云 nfc智能插座stm32 220V
- 大学生心理健康平台的设计与实现.zip


