Java 在JSP中,有没有一种方法可以将HttpServletRequest对象作为属性传递给另一个HttpServletRequest对象

Java 在JSP中,有没有一种方法可以将HttpServletRequest对象作为属性传递给另一个HttpServletRequest对象,java,jsp,struts,Java,Jsp,Struts,我正在使用Struts/JSP作为webapp。我在a页收集用户定义的参数(因为请求参数不能使它们成为会话参数),然后我转到B页向用户询问是/否类型的问题。如果是,我需要返回A页并继续常规处理。但是显然,页面A的请求对象已经不存在了 是否有一种方法可以将页面a的请求对象设置为页面B中的参数,这样当我返回到页面a时,我就拥有了我第一次在页面a时拥有的相同请求对象 我需要像下面这样的东西: 第A页--(req1)--->B页(set req.setAttr('PREVERREQ',req1))---

我正在使用Struts/JSP作为webapp。我在a页收集用户定义的参数(因为请求参数不能使它们成为会话参数),然后我转到B页向用户询问是/否类型的问题。如果是,我需要返回A页并继续常规处理。但是显然,页面A的请求对象已经不存在了

是否有一种方法可以将页面a的请求对象设置为页面B中的参数,这样当我返回到页面a时,我就拥有了我第一次在页面a时拥有的相同请求对象

我需要像下面这样的东西:

第A页--(req1)--->B页(set req.setAttr('PREVERREQ',req1))------>A页(req=req.GETATR('PREVERREQ'))


非常感谢您的帮助。

在多页流程中,您需要将所有间歇性收集的数据存储到会话中。看和。

不,你不能做你想做的事。您了解HTTP请求-响应周期是如何工作的吗

  • 用户使用浏览器向服务器发送HTTP请求
  • 服务器处理请求(调用servlet或JSP)
  • servlet或JSP生成的响应通常由HTML页面组成
  • 服务器将响应发送回浏览器
您无法保存对页面A的请求,然后在页面B中响应该请求以使浏览器返回到页面A。这不是请求-响应周期的工作方式

您可以做的是将数据存储在会话对象中。您可以调用
request.getSession()
来获取
HttpSession
对象,您可以在其中存储该用户会话期间的数据。在A页中,您可以再次从会话对象中获取数据。

使用隐藏的输入元素(
input type=“hidden”
),其中保留表单提交的请求参数。不要将其复制/存储为请求属性。当响应完成时,他们会迷失方向

由于我不使用struts,这里有一个JSP应该是什么样子的基本示例(将输入标签和XSS等明显的安全问题排除在外,struts应该足够聪明,可以自己处理)

A页:

<form>
    <input type="text" name="input1" value="${param.input1}">
    <input type="text" name="input2" value="${param.input2}">
    <input type="text" name="input3" value="${param.input3}">
    <input type="hidden" name="yesorno" value="${param.yesorno}">
    <input type="submit" value="go to page B">
    <input type="submit" value="submit">
</form>

B页

<form>
    <input type="checkbox" name="yesorno" value="yes" ${!empty param.yesorno ? 'checked' : ''}>
    <input type="hidden" name="input1" value="${param.input1}">
    <input type="hidden" name="input2" value="${param.input2}">
    <input type="hidden" name="input3" value="${param.input3}">
    <input type="submit">
</form>