2011-04-11 22 views
0

a.jsp:我怎能參數使用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!");

我試着用着,但拋出異常:

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

感謝幫助:)

回答

2

你不能(除你提出的GET解決方案,其實並沒有那麼糟糕)。

嗯,你可以使用會話來存儲輸入值,並在讀取它之後將其刪除(類似於閃存範圍),但是如果使用多個使用同一會話的多個標籤,則可能會遇到麻煩。

這就是如果你想使用客戶端重定向。如果您可以使用轉發(服務器端重定向):request.getRequestDispatcher("/c.jsp").forward(request, response) - 因此請求保持不變並且您具有可用的請求參數。

最後 - 不要在JSP中這樣做。使用servlets來編寫你的邏輯。

更新:因爲你的c.jsp是另一臺服務器上,你真的沒有(除了GET)

看樣子你可以使用307重定向使重定向後期使用任何選項 - check this question (這是關於asp.net,但也有在Java響應類類似的方法)

+0

感謝@Bozho,但我不能在其他服務器上使用'c.jsp',URL:http://xxx.com/c.jsp – Koerr 2011-04-11 09:03:43

+0

謝謝@ Bozho,我看到你的更新,爲什麼在'b.jsp'中不能模擬

post方法 ? – Koerr 2011-04-11 09:12:36

+1

@Zenofo - 如果你想把用戶引導到頁面「c」 - 沒有。 sendRedirect只是GET。檢查我的更新以獲取使用信息的方式。 – Bozho 2011-04-11 10:22:22

0

您可以嘗試request forward()(reference)或<jsp:forward>。(reference

+0

是的,但請顯示轉發的正確簽名。沒有request.forward() – Bozho 2011-04-11 09:00:12

+0

請參閱參考資料。他們也包含示例 – 2011-04-11 09:02:09

+0

我不能使用轉發,在其他服務器,'c.jsp',URL:http://xxx.com/c.jsp – Koerr 2011-04-11 09:03:05

0

就讓形式直接提交到該網址。

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

不需要kludgy彎路。