Spring app响应非spring webapp

时间:2012-11-21 14:51:35

标签: java spring http java-ee web-applications

我有两个申请。一个是基于servlet的遗留webapp。另一种是基于Spring的webapp。旧版应用程序的页面包含多个jquery选项卡。我希望其中一个选项卡充当基于spring的应用程序的iframe。我已经做了以下工作来实现这一目标:

  1. 点击选项卡名称后触发一个http发布请求(通过打开和http url连接并写入打印到编写器)到spring应用程序
  2. 该请求包含有关遗留系统中用户的信息,使用在两个系统上共享的生成密钥进行加密
  3. 配置spring mvc框架以拦截对url的调用并调用方法来处理请求。
  4. 理想情况下,请求处理应执行以下操作:

    1. 使用共享密钥解密请求数据
    2. 验证请求,许可证等
    3. 如果请求者被认为是真实的并且用户拥有有效的许可证(使用api进行许可证验证),则为该用户设置一个帐户并以编程方式将其验证为spring security
    4. 生成随机验证密钥(用于将来的通信而不是共享密钥)
    5. 将随机密钥发送回旧系统(使用共享密钥加密)
    6. 将用户定向到spring app中的特定页面
    7. 123已完成,但我正在与45进行斗争。如何将第二个密钥发送到旧系统并让旧系统使用buffered reader读取它,然后打开选项卡中的重定向页面?是否有可能在一个回复中?

      我使用@ResponseBody返回密钥,但不知道如何发送重定向? 附:如果有什么不清楚,请随时问我问题

1 个答案:

答案 0 :(得分:1)

解决方法如下:

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