2

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

4

2 回答 2

2

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

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

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

请注意,这是一个糟糕的设计。您正在滥用 JSP 作为前端控制器。应该反过来。servlet 应充当前端控制器,而 JSP 应充当视图。客户端应该将请求直接发送到 servlet URL,而不是发送到某个 JSP 文件。servlet 应该执行业务工作并最终转发给 JSP,让它以 HTML 形式呈现结果。另请参阅我们的 servlets 标签 wiki 页面以获取一些 Hello World 示例。

于 2012-10-23T14:21:42.177 回答
0

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

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

你可以这样做:

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

更新

还要注意您的代码,response.setRedirectresponse.sendRedirect(...)请注意,此方法不会按您希望的方式工作,因为它只是要求浏览器向您的 servlet 发出新请求,而不是将您的requestresponse对象转发给该 servlet。有关更多信息,请参阅RequestDispatcher.forward() 与 HttpServletResponse.sendRedirect()

于 2012-10-23T14:10:54.837 回答