Java 请求分派器转发和servlet链接之间的区别
请求调度器的转发方法和servlet链接的概念有什么区别 范例Java 请求分派器转发和servlet链接之间的区别,java,servlets,request,response,Java,Servlets,Request,Response,请求调度器的转发方法和servlet链接的概念有什么区别 范例 RequestDispatcher rd= req.getRequestDispatcher("pathToServlet"); rd.forward(req,resp); 这样做的目的是在不涉及客户端(浏览器)交互的情况下转发请求。但是我们可以使用Servlet链接实现同样的功能吗?。如果可以,那么有什么区别呢?没有区别。“Servlet链接”只是在黑暗的J2EE1.1/1.2时代创造的一个术语,当时Servlet过滤器不存在。
RequestDispatcher rd= req.getRequestDispatcher("pathToServlet");
rd.forward(req,resp);
这样做的目的是在不涉及客户端(浏览器)交互的情况下转发请求。但是我们可以使用Servlet链接实现同样的功能吗?。如果可以,那么有什么区别呢?没有区别。“Servlet链接”只是在黑暗的J2EE1.1/1.2时代创造的一个术语,当时Servlet过滤器不存在。实际上,它基本上是使用RequestDispatcher#forward()
从一个servlet转发到另一个servlet(并确保响应尚未提交,否则将导致IllegalStateException
)
自从J2EE1.3(Servlet2.3,十多年前就已经有了!)被引入以来,这个过程变得更加干净和简单。从那时起,“Servlet链接”就不受欢迎,通常被标记为“糟糕的设计”。现在,您最终只希望得到一个前端控制器servlet和几个业务模型。这没什么不同。“Servlet链接”只是在黑暗的J2EE1.1/1.2时代创造的一个术语,当时Servlet过滤器不存在。实际上,它基本上是使用RequestDispatcher#forward()
从一个servlet转发到另一个servlet(并确保响应尚未提交,否则将导致IllegalStateException
)
自从J2EE1.3(Servlet2.3,十多年前就已经有了!)被引入以来,这个过程变得更加干净和简单。从那时起,“Servlet链接”就不受欢迎,通常被标记为“糟糕的设计”。现在,您最终只希望得到一个前端控制器servlet和几个业务模型。我认为“链接”的概念与配置服务器有关,而不是使用
forward()
方法,您可以配置某些类型的请求来激活特定的servlet链
例如,如果请求来自内部网,您可能希望用户看到一些内部广告。因此,您可以先让所有这些请求作为AddInternalBanner
servlet进行处理
如果特定的servlet决定它应该传递请求,那么
forward()
方法非常有用 我认为'chaining'的概念是,您可以配置特定类型的请求来激活特定的servlet链,因为它涉及到配置服务器而不是使用forward()
方法
例如,如果请求来自内部网,您可能希望用户看到一些内部广告。因此,您可以先让所有这些请求作为AddInternalBanner
servlet进行处理
如果特定的servlet决定它应该传递请求,那么
forward()
方法非常有用 Dispatcher forward是实现servlet链接的一种方法Dispatcher forward是实现servlet链接的一种方法,这意味着使用RequestDispatcher的forward方法是最好的方法,对吗?更重要的是,它是唯一的方法。然而,如果您已经使用了支持Servlet 2.3的容器(如果您没有,我会非常惊讶),那么您应该绝对更喜欢使用Servlet过滤器来完成任务,因为您基本上滥用Servlet作为错误的工具来完成任务。这意味着最好的方法是使用RequestDispatcher的forward方法,对吗?更重要的是,这是唯一的方法。但是,如果您已经使用了支持Servlet2.3的容器(如果您没有,我会非常惊讶),那么您应该绝对喜欢使用ServletFilters进行作业,因为您基本上滥用servlets作为作业的错误工具。