如何通过代码将我的响应和请求对象从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);
答案 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发出新请求而不是将request
和response
对象转发给该servlet。有关详细信息,请参阅RequestDispatcher.forward() vs HttpServletResponse.sendRedirect()