2012-10-23 57 views
2

如何通過代碼將我的響應和請求對象從jsp文件發送到servlet?我不想提交表格。從JSP發送響應和請求到servlet

我試了一下:

response.setRedirect("my page"): 

但隨後說:

Exception in thread "main" org.apache.http.client.HttpResponseException: Moved Temporarily 
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:68) 
    at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:54) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:945) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:919) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:910) 
    at com.xx.xx.client.Client.sendPOSTRequest(Client.java:185) 
    at com.xx.xx.client.Client.main(Client.java:46) 

作爲澄清:我有一個發送POST請求JSP文件的客戶端。該JSP文件解析文件並將所需信息放入會話中。我想從這個jsp文件調用一個servlet來添加一些東西到數據庫中。我認爲,這個錯誤代碼是由該行String responseBody = httpclient.execute(httppost, responseHandler);

+0

我不明白你想要做什麼。你得到302回來;從什麼回來?你是否試圖直接使用來自你的HttpClient請求的響應? –

回答

0

拋出你可以使用從一個servlet到服務器上其他資源(servlet中,JSP文件或HTML文件)的RequestDispatcherforward(ServletRequest request, ServletResponse response)

轉發請求。

你可以這樣說:

ServletContext context= getServletContext(); 
RequestDispatcher rd= context.getRequestDispatcher("/YourServlet"); 
rd.forward(request, response); 

UPDATE

您的代碼還請注意,你有response.setRedirect,而不是response.sendRedirect(...)但請注意,只要你想這個方法是行不通的這是因爲它只是要求瀏覽器向您的servlet發出新請求,而不是將您的requestresponse對象轉發給該servlet。有關更多信息,請參見RequestDispatcher.forward() vs HttpServletResponse.sendRedirect()

+0

我以前試過這個,但是我沒有看到對指定的servlet也有請求。任何想法爲什麼? – doonot

+0

你的意思是哪個servlet? – MaVRoSCy

+0

您的代碼完美無缺。輸出只是在另一個控制檯內。非常感謝! – doonot

1

您只能在一個servlet URL上使用<jsp:include>

<jsp:include page="/servletURL" /> 

該servlet doXxx()方法將被調用當前的請求/響應。請注意,此後servlet無法轉發到其他JSP。它必須直接寫入響應,或設置一些請求/會話屬性,這些屬性可以在之後的<jsp:include>行中截取。

請注意,這是糟糕的設計。你濫用JSP作爲前端控制器。它應該是相反的。 servlet應該充當前端控制器,JSP應該充當一個視圖。客戶端應直接將請求發送到servlet URL,而不是發送給某個JSP文件。該servlet應該執行業務工作,並最終轉發給JSP以使其以HTML格式顯示結果。有關Hello World示例,另請參見our servlets tag wiki page