Servlets 在java中将请求转发到多个servlet
我想将请求转发到java中的多个servlet。每个servlet在收到请求后都将执行自己的操作。我当前的代码是这样做的:Servlets 在java中将请求转发到多个servlet,servlets,forward,requestdispatcher,Servlets,Forward,Requestdispatcher,我想将请求转发到java中的多个servlet。每个servlet在收到请求后都将执行自己的操作。我当前的代码是这样做的: for(int i=0; i < numServlets; i++) { ServletContext servletContext = request.getServletContext(); RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/"+
for(int i=0; i < numServlets; i++) {
ServletContext servletContext = request.getServletContext();
RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/"+ globalVars.ServletList[i]);
requestDispatcher.forward(request, response);
}
for(int i=0;i
问题是我得到java.lang.IllegalStateException:提交响应后无法转发
错误。你有什么想法可以让它工作吗
我在网上读到,在对请求进行预处理后,我应该添加return语句以让以下代码执行,但这也不起作用。如果希望一个请求由多个处理程序处理,那么您有几个选择: 1) 大多数处理程序准备或监视数据,并可以编写为
Filter
对象,在Servlet容器中注册。每个请求只定义一个负责生成响应的Servlet
2) 编写一个Servlet
,然后遍历“处理程序”并调用每个处理程序
3) 编写多个Servlet
类,并将最后一个forward()
转发到下一个Servlet
我会劝阻的
1还是2更好取决于所有“servlet”都在做什么。例如,通常为以下各项编写过滤器:
- 伐木
- 安全性(例如,如果未登录,则重定向到登录页面)
- 请求修改(如将查询参数应用为请求类型)
- 响应处理(例如压缩)
响应
对象已损坏。除非停止对响应的写入,否则无法转发它
因为您在循环中转发它,所以其中一个servlet可能会在循环结束之前提交响应
servlet可能在response.sendRedirect()
或response.sendError()
之后写入响应或以任何方式提交响应的原因之一