在java中向多个servlet转发请求

时间:2018-01-03 00:04:53

标签: servlets forward requestdispatcher

我想在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语句让以下代码执行,但这也不起作用。

2 个答案:

答案 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()之后写入响应或以任一方式提交响应的原因之一。