请求调度程序转发和servlet链接之间的区别

Heg*_*ggi 1 java servlets response request

请求调度程序的forward方法和servlet链接的概念有什么区别?

RequestDispatcher rd= req.getRequestDispatcher("pathToServlet");
rd.forward(req,resp);
Run Code Online (Sandbox Code Playgroud)

这样做是在不涉及客户端(浏览器)交互的情况下转发请求.但是我们可以使用Servlet Chaining实现相同的目标吗?如果我们可以那么有什么区别?

Bal*_*usC 5

它并没有什么不同.当Servlet过滤器不存在时,"Servlet链接"只是在黑暗的J2EE 1.1/1.2时代创造的一个术语.实际上,它基本上是使用RequestDispatcher#forward()从一个servlet转发到另一个servlet的方法(并确保响应尚未提交,否则将导致响应IllegalStateException).

自从J2EE 1.3(Servlet 2.3,多年前已经!)以来,引入了servlet过滤器,使得这个过程变得更加干净和简单.从那以后,"Servlet链接"不受欢迎,通常被标记为"糟糕的设计".现在,您最终只想拥有一个前端控制器servlet和几个商业模型.