Servlet总结1
一、Servlet技术
1.1 概述
- Servlet是JavaEE规范之一。规范就是接口。
- Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。
- Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
1.2 执行原理
- 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径。
- 查找web.xml文件,是否有对应的< url-pattern >标签体内容。
- 如果有,则在找到对应的< servlet-class >全类名。
- tomcat会将字节码文件加载进内存,并且创建其对象。
- 调用其方法。
1.3 Servlet的生命周期
- 执行Servlet构造方法
- 构造方法只有第一次访问,创建Servlet程序时会调用。
- 执行init()初始化方法
- Sevlet被创建时调用,只执行一次
- 执行Service()方法
- 每次访问Servlet时,Service方法都会被调用一次。
- 执行destroy()销毁方法
- Servlet被销毁时执行。服务器关闭时,Servlet被销毁.
- 只有服务器正常关闭时,才会执行destroy方法。
- destroy方法在Servlet被销毁之前执行,一般用于释放资源
二、ServletConfig类
- ServletConfig是Servlet程序的配置信息类。
ServletConfig类的三大作用
- 可以获取Servlet程序的别名 servlet-name的值。
- 获取初始化参数 init-param。
- 获取ServletContext对象。
补充:
- Servlet程序和ServletConfig对象都是由Tomcat负责创建,我们负责使用。
- Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象。
三、ServletContext类
- ServletContext是一个接口,它表示Servlet上下文对象。
- 一个web工程,只有一个ServletContext对象实例。
- ServletContext对象是一个域对象。
- ServletContext是在web工程部署启动的时候创建。在web工程停止的时候销毁。
域对象:
- 域对象,是可以像Map一样存取数据的对象。
- 这里的域指的是存取数据的操作范围,整个web工程。
Map集合与域对象的比较
存数据 | 取数据 | 删除数据 | |
---|---|---|---|
Map | put() | get() | remove() |
域对象 | setAttribute() | getAttribute() | removeAttribute() |
ServletContext类的四个功能
-
获取web.xml配置的上下文参数 context-param
ServletContext context = getServletContext(); String username = context.getInitParameter("username"); String password = context.getInitParameter("password"); System.out.println(username); System.out.println(password);
配置文件xml
<context-param> <param-name>username</param-name> <param-value>root</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>123456</param-value> </context-param>
-
获取当前的工程路径,格式:/工程路径
System.out.println("当前工程路径:"+context.getContextPath());
-
获取工程部署后在服务器硬盘上的绝对路径(真实路径)
System.out.println("工程的真实路径是:"+context.getRealPath("/"));
-
存取数据
//存数据 context1.setAttribute("key1","value1"); //取数据 System.out.println("context1 中获取域数据key1的值是:"+context1.getAttribute("key1"));