如何使用JSP页面保持参数转向

时间:2011-04-11 08:52:08

标签: java jsp servlets

a.jsp:

<form method=post action="b.jsp">
<INPUT TYPE="text" name="test" value="hello world!">
</form>

b.jsp:

<%@ page language="java" contentType="text/html;charset=UTF-8" %><%
response.sendRedirect("http://example.com/c.jsp");
%>

http://example.com/c.jsp(此页面位于其他服务器中)

<%@ page language="java" contentType="text/html;charset=UTF-8" %><%
System.out.println(request.getParameterValues("test")); //must use request.getParameter
%>

如何在test中获取参数c.jsp

请不要使用像response.sendRedirect("c.jsp?test=helloworld!");

这样的GET方法

我尝试使用forward,但抛出异常:

404 Not Found
/acc/http:/example.com/ccc.jsp was not found on this server. 

感谢您的帮助:)

3 个答案:

答案 0 :(得分:2)

你不能(除了你提出的GET解决方案,实际上并没有那么糟糕)。

好吧,您可以使用会话来存储输入值并在读取之后将其删除(类似于闪存范围),但如果使用相同会话的多个选项卡,则可能会遇到麻烦。

如果您想使用客户端重定向,那就是这样。如果您可以使用转发(服务器端重定向):request.getRequestDispatcher("/c.jsp").forward(request, response) - 因此请求保持不变,并且您有可用的请求参数。

最后 - 不要在JSP中这样做。使用servlet编写逻辑。

更新:,因为您的c.jsp位于另一台服务器上,您实际上没有任何选项(除了GET)

看来你可以使用307重定向来重定向使用帖子 - check this question(它是关于asp.net的,但是在java响应类中有类似的方法)

答案 1 :(得分:0)

您可以尝试request forward() (reference)或<jsp:forward>。(reference

答案 2 :(得分:0)

让表单直接提交到该网址。

<form method=post action="http://example.com/c.jsp">
    <input type="text" name="test" value="hello world!">
</form>

不需要迂回曲折。