0

我有一个 JSP 页面,它将 HttpServletRequest 和 HttpServletResponse 传递给 Java 类,该 Java 类根据名为“action”的参数将请求和响应分派给 action 类。动作类执行一些动作,有时会转发到另一个重复相同过程的 JSP。如果您认为我应该使用 servlet,那么您是对的,但这是一个很长的故事,基本上我也没有权限。

在我的一个操作类中,我验证数据,如果有效,则使用 RequestDispatcher 将请求转发到另一个 JSP。我还尝试设置“action”属性,以便我可以告诉其他 JSP 执行什么操作,但是我了解到属性不会随请求一起转发。事实上,我的代码开始无限循环是因为我在执行相同的操作,因为action参数没有改变,导致请求在action和jsp之间循环。

我发现我可以通过在新页面的 url 中传递参数来覆盖 action 参数。像这样:

RequestDispatcher dispatcher = request.getRequestDispatcher("someUrl.jsp?action=SOME_OTHER_ACTION");
dispatcher.forward(request, response");

这个解决方案对我来说很腥。任何人都可以提供任何见解,这是否是一个好主意?

4

3 回答 3

2

是的,这是在转发时发送请求参数的唯一方法。

于 2012-07-19T17:37:20.103 回答
2

正如您所发现的,请求属性只是过滤器或其他请求处理程序将对象添加到请求对象的方便位置。它们与来自 HTTP 请求本身的参数完全不同。属性不会传递给 HTTP 客户端,并且在发送响应后就消失了。

你的方法没有任何可疑之处。另一种(可能更糟)的方法是使用会话来维护状态。

于 2012-07-19T17:42:27.270 回答
1

我认为这是传递参数的有效方式之一。

其他方式可能是,您可以访问请求对象,您可以将其设置为请求属性。forward 在服务器上,您应该能够在另一端访问相同的请求属性。

于 2012-07-19T17:29:56.097 回答