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!");
我尝试使用forward,但抛出异常:
404 Not Found
/acc/http:/example.com/ccc.jsp was not found on this server.
感谢您的帮助:)
答案 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>
不需要迂回曲折。