javaweb(1) - Servlet

2022-06-15 21:45:00 浏览数 (1)

1. Servlet的理解

1.1 实质
1.1.1 原始java程序 : 本地运行

main method 作为入口,客户端本身也是服务端,运行结果往往是实时反馈的.

1.1.2 CS java应用 : 远程运行

Servlet = Server Applet ---- > 运行在服务器端java程序,Servlet运行在服务端的Java小程序,是sun公司提供一套规范,用来处理客户端请求、响应给浏览器的动态资源。servlet的本质上是java代码,通过java的API动态的向客户端输出内容.

1.1.3 servlet 调用链路

1.2 servlet的三个组件
servlet
filter
listener

2. startup

2.1 理论实现
2.1.1 创建类实现Servlet接口
2.1.2 覆盖尚未实现的方法(着重关注service方法)
2.1.3 在web.xml进行servlet的配置(web.xml就相当于web工程清单)
2.2 常规实现

直接去实现Servlet接口需要覆盖的方法太多,一般继承HttpServlet就够用了

2.2.1 创建类继承HttpServlet类
2.2.2 覆盖doGet和doPost
2.2.3 在web.xml中进行servlet的配置

3. Servlet生命周期

3.1 创建

默认第一次访问时创建 当该对象创建完毕后立即调用init方法 也可以通过配置让服务器一启动就创建Servlet对象, 例如 :

代码语言:javascript复制
<load-on-startup>1</load-on-startup>
3.2 销毁

服务器关闭或从tomcat容器中将该项目移除

3.3 Servlet接口中API

1)init(ServletConfig config) 2)service(ServletRequest request,ServletResponse response) 3)destroy()

3.3 HttpServlet类中API

1)init() 2)doGet(HttpServletRequest request,HttpServletResponse response) 3)doPost(HttpServletRequest request,HttpServletResponse response) 4)destroy()

4. Servlet的配置

4.1 基本配置

三种配置方式:

4.1.1 完全匹配 客户端的访问资源的地址与配置的地址完全一致
4.1.2 目录匹配 语法:以/开始 以*结束

示例:

代码语言:javascript复制
/aaa/bbb/*    --- 代表访问/aaa/bbb下的任何资源都匹配
4.1.3 扩展名匹配 语法:以*开始 以扩展名结束

示例:

代码语言:javascript复制
*.abc

注意:第二种与第三种不能混合使用 例如:

代码语言:javascript复制
/aaa/bbb/*.abc  ---- 错误的

5. Servlet的继承体系

代码语言:javascript复制
tomcat引擎负责创建servlet对象,创建完后引擎执行service(ServletRequest request, ServletResponse response)方法,流程 :

--->service(ServletRequest request, ServletResponse response)
--->自己定义的servlet没有service方法
--->去HttpServlet中找service方法
--->将ServletRequest 和ServletResponse 强转
--->获得请求方式  get  post
--->根据不同的请求方式调用不同的方法
--->调用是子类servlet中覆写的doGet和doPost
(实际开发中 不会去直接实现servlet接口会继承HttpServlet类  覆盖内部doGet和doPost方法)
......

6. ServletContext

6.1 含义

servlet的上下文对象,ServletContext就代表一个web应用 ServletContext内部维护着该web应用的一些相关信息

6.2 获取

ServletContext context = config.getServletContext() ServletContext context = this.getServletContext();

6.3 作用

获得web应用的初始化参数 获得web应用下任何资源的绝对路径 ServletContext是一个域对象

0 人点赞