将响应和请求从JSP发送到servlet

时间:2012-10-23 14:03:55

标签: java jsp servlets request response

如何通过代码将我的响应和请求对象从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)

作为澄清:我有一个客户端将请求发送到JSP文件。此JSP文件解析文件并将所需信息放入会话中。我想从这个jsp文件中调用一个servlet来向数据库中添加一些东西。我认为此行String responseBody = httpclient.execute(httppost, responseHandler);

会引发此错误代码

2 个答案:

答案 0 :(得分:1)

您可以在servlet URL上使用<jsp:include>

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

将使用当前请求/响应调用servlet doXxx()方法。请注意,servlet之后无法转发到另一个JSP。它必须直接写入响应,或者设置一些请求/会话属性,JSP可以在 <jsp:include>行之后拦截

请注意,这是糟糕的设计。你滥用JSP作为前端控制器。它应该是反过来的。 servlet应该充当前端控制器,JSP应该充当视图。客户端应该直接将请求发送到servlet URL而不是某个JSP文件。 servlet应该执行业务工作,最后转发到JSP,让它以HTML格式呈现结果。有关Hello World示例,请参阅our servlets tag wiki page

答案 1 :(得分:0)

您可以使用RequestDispatcher forward(ServletRequest request, ServletResponse response)

  

将来自servlet的请求转发到服务器上的另一个资源(servlet,JSP文件或HTML文件)。

你可以这样做:

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

<强>更新

还要注意您的代码是response.setRedirect而不是response.sendRedirect(...),但请注意,此方法无法正常工作,因为它只是要求浏览器向您的servlet发出新请求而不是将requestresponse对象转发给该servlet。有关详细信息,请参阅RequestDispatcher.forward() vs HttpServletResponse.sendRedirect()