注意 crossContext 属性在帮助文档中意思
crossContext: Set to true if you want calls within this application to ServletContext.getContext() to successfully return a request dispatcher for other web applications running on this virtual host. Set to false (the default) in security conscious environments, to make getContext() always return null.
设置为true 说明你可以调用另外一个WEB应用程序 通过ServletContext.getContext() 获得ServletContext 然后再调用其getattribute() 得到你要的对象. 2: 在项目A中,写入以下代码:
我们假定
项目A 为/myweb
项目B为 /w2
//以下内容用于测试同一tomcat下不同项目之间共享sessionJava代码
HttpSession session = req.getSession();
session.setAttribute("name", "xbkaishui");
session.setMaxInactiveInterval(6565);
ServletContext ContextA =req.getSession().getServletContext();
ContextA.setAttribute("session", req.getSession());
HttpSession session = req.getSession(); session.setAttribute("name", "xbkaishui"); session.setMaxInactiveInterval(6565); ServletContext ContextA =req.getSession().getServletContext(); ContextA.setAttribute("session", req.getSession());
//测试Java代码
out.println("IN SessionRangleServlet name : "+session.getAttribute("name"));
out.println("IN SessionRangleServlet name : "+session.getAttribute("name"));
3.在项目B中,写入以下代码取出SessionJava代码
HttpSession session1 =req .getSession();
ServletContext Context = session1.getServletContext();
// 这里面传递的是项目a的虚拟路径
ServletContext Context1= Context.getContext("/myweb");
System.out.println(Context1);
HttpSession session2 =(HttpSession)Context1.getAttribute("session");
System.out.println("base传过来的user为:"+session2.getAttribute("name"));
HttpSession session1 =req .getSession(); ServletContext Context = session1.getServletContext(); // 这里面传递的是项目a的虚拟路径 ServletContext Context1= Context.getContext("/myweb"); System.out.println(Context1); HttpSession session2 =(HttpSession)Context1.getAttribute("session"); System.out.println("base传过来的user为:"+session2.getAttribute("name"));
然后重新部署就行了。 本文网址:http://www.shaoqun.com/a/151810.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
tomcat
0