java - 在 JSP 中链接不同的页面并保留当前的 ​​Spring Security session

标签 java spring jsp servlets spring-security

当用户使用 Spring Security 登录到我的 web 应用程序时,他会被重定向到某个 JSP 网页,并且他的用户上下文处于 Activity 状态(登录 session )。现在,在此页面上,单击链接或按钮后,我想在同一网页上向他显示来自另一个 URL 的已解析 JSON 数据,但是当我使用 JSON 数据访问此页面时:

reader = new BufferedReader(new InputStreamReader(url.openStream()));

在不使用他的 session 的情况下访问这个带有 JSON 的页面,并且无法访问 JSON 数据。

总而言之,我的问题是:如何在同一个当前用户(Spring Security) session 中使用JSP访问另一个网页?

最佳答案

当您从浏览器访问 JSP 或 Servlet 时,您的浏览器和 Web 应用程序之间会存在一个 session 。

但是,您在这里从 Java 代码打开 URLConnection 所做的事情(无论此代码是在 JSP 中还是在 Servlet 中,在运行时都是相同的)是从服务器本身请求资源到同一服务器中的资源。就是这样,您的 Java 代码正在打开一个到服务器的新 session 。由于您请求的 JSON 取决于 session (这就是您所说的),因此回复会有所不同。

如果您在 session 管理中有一种管理器应用程序(例如 Tomcat 的 psi-probe),您可以看到应用程序上下文中至少有两个 Activity session ,一个用于浏览器 session ,另一个用于与服务器 JSON 资源的 Java 连接。

如果您确实需要从浏览器调用 jsp 时使用的同一 session 中获取该 json,则可以使用 javascript 从中访问该 JSON 资源。还有其他替代方案,例如直接调用通过 java import 返回 JSON 资源的 Java 类,而不是将其作为 URL 调用。

关于java - 在 JSP 中链接不同的页面并保留当前的 ​​Spring Security session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39326123/

相关文章:

java - 当 Hibernate 失去连接时显示消息

java - 在 Spring 3.1.0 中使用 Spring Data JPA

java - Spring Boot 与 Hibernate : Keep Creating Database when already Exist

java - 使用 Struts 2 通配符配置时如何返回 404 错误?

java - 为什么Tomcat/JSP看不到这些类?

Java 属性绑定(bind)

java - 如何使用文件位置枚举多模块 Gradle 项目中的所有模块?

java - 无法解析方法 put(java.lang.string, java.lang.string)

java - Spring DI 在运行时而不是编译时解决依赖的优点在基于 Java 的配置中丢失了吗?

Javascript 内的 Java 数组索引 :Is my Syntax correct?