如何用java将会话值传递给另一个web应用程序/项目
如何将会话属性值传递给同一web服务器中的另一个应用程序。我之所以应该知道这一点,是因为我们有一个被模块划分的项目。每个模块将重定向到使用会话传递值的另一个模块。该会话将用于识别哪个用户正在访问该模块 假设我有一个独立于其他模块的登录模块 下面是我的示例代码: 示例Url jsp:该页面将在用户输入用户名后调用,然后提交如何用java将会话值传递给另一个web应用程序/项目,java,jsp,servlets,Java,Jsp,Servlets,如何将会话属性值传递给同一web服务器中的另一个应用程序。我之所以应该知道这一点,是因为我们有一个被模块划分的项目。每个模块将重定向到使用会话传递值的另一个模块。该会话将用于识别哪个用户正在访问该模块 假设我有一个独立于其他模块的登录模块 下面是我的示例代码: 示例Url jsp:该页面将在用户输入用户名后调用,然后提交 page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-
page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
HttpSession sessionid = request.getSession();
String userId = request.getParameter("userId");
sessionid.setAttribute("userId", userId);
System.out.println("SESSION IS :" + sessionid.getAttribute("userId"));
response.sendRedirect("http://localhost:8080/OtherModule");
示例Url
在我的主servlet中,我将检查会话是否有用户ID
protected void doGet(HttpServletRequest request, HttpServletResponse response){
HttpSession session = request.getSession();
if(session.getAttribute("userId") != null){
System.out.println("SESSION ID @ GET: " + session.getAttribute("userId"));
} else {
System.out.println("No Session for userId");
}
}
//I also tried this with post but still I can't get the session
我希望这些信息能让你知道我的代码出了什么问题。请帮我做这个。谢谢您必须相应地配置web服务器。例如,Tomcat提供了一个阀门。请看这里: 注意:您发布的localhost URL仅在您的计算机上有效(因此名为“local”)
不过,只需将所有模块添加到一个Web应用程序中或使用无数Java Web应用程序框架中的一个,就更容易了。如果共享数据与身份验证/登录相关,那么SSO(单点登录)就是一种方法,正如@Ridcully所说的那样-它由应用程序服务器为您管理,你的应用程序也不需要担心它 如果问题更普遍——如何在webapps之间共享数据——那么一个非常干净的方法就是使用JNDI。Tomcat(以及任何其他servlet/J2EE服务器)提供了一个所有Web应用程序都可以使用的查找空间,该机制最常用于以可共享的方式在应用程序外部定义数据库(或其他资源)配置
因此,您可以编写一个类来包含数据,将其放在JNDI中,并让每个应用程序查找它(使用显式JNDI调用或资源注入)。如果您需要更多信息,请告诉我。单点登录确实解决了共享登录用户问题 但是,它不允许在所有已部署的Web应用程序之间共享同一会话。如果这是您的实际意图,那么您需要将
/conf/server.xml
中
元素的emptySessionPath
属性设置为true
<Connector ... emptySessionPath="true">
另请参见。我将检查该链接。关于URL,我只使用localhost进行开发,完成后将传输到live server。关于框架,我们决定不使用框架(出于某种原因),这是我们第一个不使用框架的系统。模块本身已经是一个应用程序,这就是为什么它没有放在单个web应用程序中。我记得当传输到另一个URL时,会有新的分配会话。我希望有办法从你提供的链接做到这一点。再次感谢。实际上我需要发送一些数据,不仅仅是身份验证。但是,如果SSO甚至可以发送一个值,这将是一个解决方案。我们有一个会话表,它将保存其他应用程序将从中获取的数据。但是我需要那个表中的唯一ID,我试图通过会话发送这个ID。我还是一个编程新手,所以我需要时间来学习/使用你建议的所有东西。作为临时解决方案,我使用带有GET的formaction传递数据。我知道这是一个安全问题,所以我必须能够应用您给我的解决方案。一周后我会把这个拿回来。谢谢