Servlet
1. servlet的基本使用:
- 定义一个类,实现Servlet接口
- 实现接口中的抽象方法
- 配置Servlet(两种方式参见[2],[3])
- Servlet的执行原理
- 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
- 查找web.xml文件,是否有对应的<url-pattern>标签体内容。
- 如果有,则在找到对应的<servlet-class>全类名
- tomcat会将字节码文件加载进内存,并且创建其对象
- 调用其方法
- Servlet的生命周期
- 被创建:执行init()方法,只执行一次,说明Servlet在内存中只存在一个对象,Servlet是单例的,存在线程安全问题
- 默认情况下,在第一次访问Servlet时,Servlet被创建
- 配置servlet的创建时机
- 在web.xml中的servlet标签中设置<load-on-startup>
- 当<load-on-startup>为负值时,Servlet在第一次被访问时创建
- 当<load-on-startup>为0或正值时,Servlet在服务器启动时创建
- 在web.xml中的servlet标签中设置<load-on-startup>
- 提供服务:执行service方法,执行多次,每次访问servlet时执行
- 被销毁:执行destroy方法,只执行一次。当服务器关闭时,Servlet被销毁(前提为服务器正常关闭)且Servlet在服务器销毁前执行,一般用于释放资源
- 被创建:执行init()方法,只执行一次,说明Servlet在内存中只存在一个对象,Servlet是单例的,存在线程安全问题
2. Servlet在web.xml中配置虚拟路径[2]:
<!-- 在web.xml中 -->
<!-- 配置servlet -->
<servlet>
<!-- 配置servlet的资源名称 -->
<servlet-name>demo</servlet-name>
<!-- 选择servlet的主类路径 -->
<servlet-class>study.hsh.servlet.TestServlet</servlet-class>
</servlet>
<!-- 配置servlet-mapping -->
<servlet-mapping>
<!-- 配置servlet的资源名称 -->
<servlet-name>demo</servlet-name>
<!-- 配置servlet的资源路径 -->
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
<!-- 启动服务器后,在浏览器可通过localhost:8080/demo1访问相对应的Servlet中的init()、service()、destroy()方法 -->
3. Servlet3.0的注解方式[3]
<!-- 直接将虚拟路径设置为demo而不用去配置web.xml -->
@WebServlet("/demo")
4. Servlet的体系结构
Servlet(接口) --> GenericServlet(抽象类) --> HTTPServlet(抽象类)
- GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象
- HTTPServlet:对http协议的一种封装,简化操作
- 定义类继承HTTPServlet
- 重写doGet()和doPost()方法
网友评论