将ServletResponse作为参数传递的任何好理由?
javax.servlet.Servlet
有什么好的理由吗?
void service(ServletRequest req, ServletResponse res)
方法将ServletResponse
作为参数给出,而不仅仅是返回它?
Java Servlet API是一个抽象,它定义了任何Java Web应用程序处理任何类型请求所需的最低要求(如果你看它,你会注意到几乎所有的类都被定义为接口或抽象类)。
在不同Java服务器供应商(IBM,Sun,Apache,Oracle等)就最低要求达成一致意见的流程之后, JCP已经定义了此API,从而定义了现在被视为官方标准的内容。 但是,不同的供应商有不同的方法来实现他们的servlet容器,导致现在它们的数量不同(每个都具有不同的function)。
由于servlet容器需要跟踪对象(请求和响应)以对两者进行正确处理,因此无法利用向用户创建ServletResponse
(或HTTP变体HttpServletResponse
)的责任 – 记住进入Servlet的service
方法是用户代码。 因此,servlet容器在调用service
方法之前创建并预填充请求和响应对象(使用它们自己的实现)。 从用户的角度来看,只需通过接口处理它们就足够了,这也可以保护特定于供应商的代码,因为我们无法访问这两个对象的实际实现。
但是,当定义API时,这些供应商意识到,在某些情况下,用户希望覆盖任何这些对象的默认行为,因此它们包含一组可以通过扩展的包装器( HttpServletRequestWrapper
, HttpServletResponseWrapper
等)。用户代码,用于servlet或filter,以替换容器提供的默认实现。
作为res
传入的对象将是ServletResponse
特定于容器的子类。 您无法以独立于容器的方式自行创建此类实例。
请求的完整循环包括request
和response
,当我们发出请求时,请求和响应对象由容器创建并提供处理它们的访问权限。
如果你看到文档
由servlet容器调用以允许servlet响应请求。
与请求关联的响应对象,您只需响应该请求。
如果你自己创建一个Response
对象,没有请求,你可以随机发送一个响应吗?
根据来自客户端的请求,Web容器创建ServletResponse对象并在服务方法中传递此对象,以便可以提供对客户端的响应。
- 正则表达式只接受字母和空格,并禁止字符串的开头和结尾处的空格
- 如何在运行时更新SpringBoot应用程序的配置,而无需重新加载整个ApplicationContext
- 如何将String拆分为字符串流?
- 如何在不提取java的情况下读取Zipped文件的内容
- 我们如何才能获得JPA EntityManager Flush工作
- 如何在最后一个标签附近添加添加新标签的按钮?
- JSF – 带参数的调用方法(tomcat6)
- 为什么赋值’int constant – > byte variable’有效,但’long constant – > int variable’不是?
- 在pagerAdapter中的片段之间发送数据