我想在java中将请求转发给多个servlet。这些servlet中的每一个都会在收到请求后执行自己的操作。我的当前代码是这样做的:
bundle install --with development test
问题是我收到for(int i=0; i < numServlets; i++) {
ServletContext servletContext = request.getServletContext();
RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/"+ globalVars.ServletList[i]);
requestDispatcher.forward(request, response);
}
错误。关于如何使这项工作的任何想法?
我在网上看到,在转发请求后我应该添加return语句让以下代码执行,但这也不起作用。
答案 0 :(得分:0)
如果您希望多个处理程序处理请求,那么您有几个选择:
1)大多数处理程序准备或监视数据,并且可以写为Filter
对象,在Servlet容器中注册。每个请求只定义一个Servlet
,负责生成响应。
2)写一个Servlet
,然后迭代&#34;处理程序&#34;并打电话给他们每个人。
3)编写多个Servlet
类,除了最后一个forward()
之外的所有类Servlet
。
我会劝阻#3。
#1或#2是否更好取决于所有&#34; servlets&#34;是做。例如。为以下内容编写过滤器很常见:
答案 1 :(得分:0)
您的response
对象已损坏。除非 停止撰写回复 ,否则您无法forward
。
由于您在循环中转发它,因此其中一个servlet可能会在循环结束之前提交响应。
servlet可能在response.sendRedirect()
或response.sendError()
之后写入响应或以任一方式提交响应的原因之一。