java session 跨项目_javaweb关于两个项目session传递以及不同项目之间页面传值的总结...

本文总结了在Java Web环境中,如何实现两个独立Tomcat项目A和B之间的Session共享。通过在A项目的JSP页面中传递Session信息,并在B项目中通过配置filter过滤器,结合server.xml设置,获取并使用A项目的Session数据。同时,文中还提到了解决URL参数中文乱码问题以及在B项目中通过iframe获取A项目菜单权限的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中业务系统和一个cms系统要做session共享,此为个人工作中的总结,算不算SSO我也不知道,我要的是实现功能。

项目A和项目B是tomcat下两个不同的项目,项目A是业务系统,项目B是cms系统,要实现的目标是 A登录进来 跳转到B B获取到A的session信息

因为A登录后在A的struts.xml不能直接跳转到B的页面,所以在A里面加了jsp页面(在此页面中实现跳转到B页面),跳转到此页面。

在此jsp页里获取到session的信息后通过c:redirect 加参数进行传参,把session里需要的信息分别传过去:

在B的页面里通过获取url的路径和参数得到传过来的url字符串,这里要注意,前面传过来的参数如果是中文 获取到的参数会是类似%e9%9b%86%e5%9b%a2%e6%9c%ac%e9%83%a8的乱码,

必须通过decodeURI()方法转码。

现在跳转到B的页面了,下面实现获取A的session信息:

首先在tomcat server.xml  标签下 配置:

在A的登录action里:

HttpSession session2 = request.getSession();

session2.setAttribute("sessionDto",A的session信息);

ServletContext ContextA =session2.getServletContext();

ContextA.setAttribute("session", session2);

在B的web-inf/web.xml里写一个filter过滤器:

sessionFilter

com.XXX.util.sessionFilter

sessionFilter

/*

用于在跳转到B时 任何时候都能获取到A的session。

在doFilter方法里:

HttpSession session =request.getSession();

ServletContext Context = session.getServletContext();

ServletContext Context1= Context.getContext("/项目A");

if(Context1 !=null && !Context1.equals("")){

HttpSession session1 =(HttpSession)Context1.getAttribute("session");

request.setAttribute("sessionDto", session1.getAttribute("sessionDto"));

}

由于在B的html页面里要获取到A的菜单权限,所以在B的页面里通过iframe的方式调B里面的一个jsp页,这个jsp页专门用来获取菜单权限,

在B的html页里获取iframe页里的值: var userId=frames['getSessionIframe'].document.getElementById("userid").value; 这样就把A的菜单权限也获取到了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值