前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Mvc boot解决静态url带jsessionid问题

Spring Mvc boot解决静态url带jsessionid问题

作者头像
王念博客
发布2019-07-24 10:20:52
发布2019-07-24 10:20:52
3.2K00
代码可运行
举报
文章被收录于专栏:王念博客王念博客
运行总次数:0
代码可运行

1.jsessionid是什么?

Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了。

2.那么有什么问题?

首先这是一个保险措施 因为Session默认是需要Cookie支持的,但有些客户浏览器是关闭Cookie的,所以在这个时候就需要在URL中指定服务器上的session标识,也就是EDE802AB96CD1E0CA2AFB3830D18FB10,每当用户第一次访问页面的时候,后端获取的地址是包含 jsessionid参数,这样拼接 静态资源或者A标签或Form的地址的时候,链接就变成了:

http://localhost:8080?jsessionid=EDE802AB96CD1E0CA2AFB3830D18FB10home/user 造成访问相关页面404.

3.解决方法

web.xml配置

代码语言:javascript
代码运行次数:0
运行
复制
<session-config>
    <tracking-mode>COOKIE</tracking-mode>
    <tracking-mode>URL</tracking-mode>
    <tracking-mode>SSL</tracking-mode>
</session-config>

以上是Servlet3.0最会话跟踪的三个方式,Servlet 3.0规范实施前tomcat的会话跟踪用两种方法:COOKIE和带JSESSIONID参数的重写URL。 在 Tomcat 7中的URL重写方法不再是强制性的,并加入一个新的会话跟踪方法基于SSL会话。

移除<tracking-mode>URL</tracking-mode> 就解决了jsessionid的问题。

spring boot三种方式

1.启动类 继承 SpringBootServletInitializer 重写onStartup方法

代码语言:javascript
代码运行次数:0
运行
复制
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
SessionCookieConfig sessionCookieConfig=servletContext.getSessionCookieConfig();
sessionCookieConfig.setHttpOnly(true);
}

2.在@Configuration配置类上注册bean

代码语言:javascript
代码运行次数:0
运行
复制
@Bean
public ServletContextInitializer servletContextInitializer1() {
    return new ServletContextInitializer() {
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE) );
        }
    };
}

3.在springboot properties配置

代码语言:javascript
代码运行次数:0
运行
复制
server.session.tracking-modes=
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.jsessionid是什么?
  • 2.那么有什么问题?
  • 3.解决方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档