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
%>
如何在c.jsp
中获取参数test
?
请不要使用 GET 方法,例如:response.sendRedirect("c.jsp?test=helloworld!");
我尝试使用forward,但抛出异常:
404 Not Found
/acc/http:/example.com/ccc.jsp was not found on this server.
感谢您的帮助:)
最佳答案
你不能(除了你提出的 GET
解决方案,事实上这并没有那么糟糕)。
好吧,您可以使用 session 来存储输入值并在读取后将其删除(类似于闪存范围),但是如果使用使用同一 session 的多个选项卡,您可能会遇到麻烦。
如果您想使用客户端重定向。如果您可以使用转发(服务器端重定向): request.getRequestDispatcher("/c.jsp").forward(request, response)
- 因此请求保持不变并且您拥有请求参数可用。
最后 - 不要在 JSP 中这样做。使用 servlet 来编写逻辑。
更新:由于您的 c.jsp 位于另一台服务器上,因此您实际上没有任何选项(除了 GET)
看来您可以使用 307 重定向来使重定向使用 post - check this question (是关于asp.net的,但是java响应类中也有类似的方法)
关于java - 如何使用JSP翻页保留参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5618887/