从 Jar 包上来说,Servlet 规范就是两个 Jar 文件。servlet-api.jar 和 jsp-api.jar,Jsp 也是一种 Servlet。
从包上来说,就是 javax.servlet 和 javax.servlet.http 两个包。
从接口来说,就是规范了 Servlet 接口、Filter 接口、Listener 接口、ServletRequest 接口、ServletResponse 接口等。
另外就是规范了 Servlet 容器,规范了对 HTTP 协议做面向对象的封装。规范了 Servlet 由容器来管理其生命周期。也就是说,Servlet 的 Innit() destory() Service() 方法是由 Tomcat、JBoss、Weblogic 等容器调用的,应用程序是不能调用的。
Servlet 也规范了各个接口的职责:
- Servle:Servlet 的核心,具体 Servlet 中方法的处理规范,Servlet 的生命周期等。
- ServletConfig: 封装了对应的 Servlet 的相关配置信息,如 Servlet 的初始参数以及 Servlet 所在的上下文对象,即ServletContext。ServletConfig 中的属性通常在 Servlet 初始化时进行初始化。
- ServletRequest: 封装了所有来自 client 端的请求信息,如请求参数、cookie、attribute、请求类型、请求方式(安全还是非安全等)等,同时 ServletRequest 中的还需要明确指定部分属性,如 请求内容的编码(可以自己设定)等。
- ServletResponse: 封装了 server 端资源到 client 端的所有相关信息,如 资源传输的 buffer 信息、响应的 url 地址信息、资源的编码信息等。
- ServletInputStream/BufferedReader: 读取 ServletRequest 所封装的信息的 I/O 接口,ServletInputStream,采用字节流的方式读取;BufferedReader,采用字符流的方式读取。
- ServletOutputSteam/PrintWriter: 将资源写入到 client 的 I/O 接口。ServletOutputSteam 采用字节流的方式进行写入;PrintWriter 采用字符流的方式进行写入。
- GenericServlet: 抽象类,它定义了一个 Servlet 的基本实现,虽然它是 Servlet 的基本实现,但是它是与协议无关的(即不依赖于 http 协议,也不依赖于其它应用层协议)。一般,基于协议的 Servlet,如 HttpServlet,通常会继承该类。
- RequestDispatcher: 我们在搭建 web 应用的过程中,可能会有这样的需求: 在当前 Servlet中处理完成后,需要导向(forward)另外一个 Servlet 或静态资源(html或text等),或者 是在当前 Servlet 的处理过程中,需要将其它的资源包含(include)到当前的 Servlet 资源里来。而 RequestDisaptcher 接口中的 forward 和 inluce 方法就提供了实现以上两个需求的机制。
Servlet 本身还是一个 WEB 组件。它同 EJB, JTA, JDBC, JCA, JMX, JNDI, JMS, JavaMail, JSP 等组件共同组成 J2EE 平台技术规范。
: » Servlet 规范到底规范了什么?
原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/252105.html