java - Spring app 对非 spring webapp 的响应

标签 java spring http jakarta-ee web-applications

我有两个应用程序。一个是基于 servlet 的遗留 Web 应用程序。另一个是基于 spring 的 webapp。遗留应用程序有一个包含多个 jquery 选项卡的页面。我希望其中一个选项卡充当基于 spring 的应用程序的 iframe。为了实现这一点,我做了以下工作:

  1. 在点击选项卡名称时触发 spring 应用程序的 http 发布请求(通过打开和 http url 连接并写入打印到作者)
  2. 请求包含有关旧系统中用户的信息,使用在两个系统上共享的生成 key 加密
  3. 配置 spring mvc 框架以拦截对 url 的调用并调用方法来处理请求。

理想情况下,请求处理应该执行以下操作:

  1. 使用共享 key 解密请求数据
  2. 验证请求、许可等
  3. 如果请求者被认为是真实的并且用户拥有有效的许可证(使用 api 进行许可证验证)然后为用户设置一个帐户并以编程方式将他们验证到 spring security
  4. 生成随机身份验证 key (用于 future 通信而不是共享 key )
  5. 将随 secret 钥发送回遗留系统(使用共享 key 加密)
  6. 将用户定向到 spring 应用程序中的特定页面

123 是完整的,但我正在努力处理 45 。如何将第二个 key 发送到遗留系统并让遗留系统使用 buffered reader 读取它,然后在选项卡中打开重定向页面?甚至有可能在一个响应中吗?

我使用了 @ResponseBody 来返回 key ,但不知道如何发送重定向? 附:有什么不明白的可以随时问我

最佳答案

解决方法如下:

  1. 遗留应用程序的标签页预加载了 iframe 但没有源代码,同时放置了一个带有隐藏字段但没有值的表单,该表单以 iframe 作为目标,其操作指向 spring 应用程序 url
  2. 当标签页打开时,对遗留应用程序上的 servlet 执行 ajax 调用
  3. servlet 使用参数调用 `/spring-url.do` 上的 spring 应用程序。该调用是通过打开 `HttpURLConnection` 来执行的。
  4. `/spring-url.do`被spring dispatcher拦截,一个方法处理如下:
  5. 如果这是用户的第一次,则为他们生成一个新 key 并将其写入响应(它通过将请求转发到另一个返回类型为“@ResponseBody String”的 Controller 来实现)
  6. 响应由遗留应用程序 servlet 读取, key 保存在遗留应用程序数据库中以供将来通信
  7. servlet 使用新 key 加密用户数据并将其返回给 ajax 调用
  8. ajax 成功函数读取响应并设置隐藏表单字段的值并以编程方式提交表单
  9. spring 再次拦截 url,但这次是现有用户,因此它不会生成新 key ,而是验证数据并将请求转发到 spring 应用程序上的页面。

关于java - Spring app 对非 spring webapp 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13495850/

相关文章:

java - 从另一个类更改 JLabel 文本不起作用

java - Spring boot HandlerInterceptor负载均衡

java - @AfterReturning 方面在切入点方法的同一事务中执行?

ios - 平衡支付的 401 权限错误

android - 将 PNG 文件上传到服务器后无法正常工作

java - 将数组结果存入数组

java - 以提升的权限在其自己的目录中启动 .exe

java - JPA - 只获取父项,而不获取子项

api - 404 状态码及其在常见的、几乎静态的 api 上的双重含义

java - 内部包含具有不同组接口(interface)的 bean 的多个 bean 验证