一、Servlet实现方式
1、实现Servlet接口,接口中的方法必须全部实现。此种方式支持最大程度的自定义。
2、继承GenericServlet,service方法必须重写,其他方可根据需求,选择性重写。
使用此种方式,表示只在接收和响应客户端请求这方面有重写的需求,而其他方法可根据实际需求选择性重写,使我们的开发Servlet变得简单。但是,此种方式是和HTTP协议无关的。
3、继承HttpServlet,它是javax.servlet.http包下的一个抽象类,是GenericServlet的子类。如果我们选择继承HttpServlet时,只需要重写doGet和doPost方法,不要覆盖service方法。
使用此种方式,表示我们的请求和响应需要和HTTP协议相关。也就是说,我们是通过HTTP协议来访问的。那么每次请求和响应都符合HTTP协议的规范。请求的方式就是HTTP协议所支持的方式(GET POST PUT DELETE TRACE OPTIONS HEAD )。
二、servlet生命周期
servlet实例化和初始化只会在请求第一次到达Servlet时执行,而销毁只会在Tomcat服务器停止时执行,只会创建一次,销毁一次。
init()方法(初始化的时候执行一次)——doGet/Post——destroy()方法(服务器停止的时候执行一次)
三、线程安全问题
servlet是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱产生线程安全问题。
四、映射方式
servlet有三种映射配置方式
1、只有和映射配置一模一样时,Servlet才会接收和响应来自客户端的请求
2、/开头+通配符的方式 例如:映射为:/servlet/*
访问URL:http://localhost:8585/servlet/aaa 和 http://localhost:8585/servlet/bbb.do
3、通配符+固定格式结尾 例如:映射为:*.do
访问URL:http://localhost:8585/servlet/aaa.do 和 http://localhost:8585/bbb.do
三种映射方式的优先级为:第一种>第二种>第三种
五、servlet创建的时机
1、应用加载时(即服务器启动时),创建Servlet。优点:提高首次请求访问的效率;缺点:浪费内存
2、第一次请求访问的时候创建servlet。优点:节约内存;缺点:有一些要在应用加载时就做的初始化操作,就无法完成
配置<load-on-startup>1</load-on-startup>即可设置servlet何时创建。
六、ServletConfig介绍
每个Servlet都有一个自己的ServletConfig。它的作用是在Servlet初始化期间,把一些配置信息传递给Servlet,生命周期与Servlet相同。
如何配置?
如何获取ServletConfig?
通过init方法传递进来。
//定义Servlet配置对象ServletConfig
private ServletConfig servletConfig;
/**
* 在初始化时为ServletConfig赋值
* @param config
* @throws ServletException
*/
@Override
public void init(ServletConfig config) throws ServletException {
this.servletConfig = config;
}
七、ServletContext介绍
1、概念
2、配置方式
3、常用方法