Servlet:Servlet就是一个普通的JAVA类,但是能够处理http的请求与响应过程,自身就是一个接口,同时还有一个ServletConfig的接口,用于配置加载,分别处理的不同事务。
- Servlet的架构设计:
- servlet接口:自身是一个接口,用于提供服务方法,获取到servlet信息,销毁服务
- servletconfig接口:该接口主要实现配置加载,获取servlet的名字,上下文,配置中的一些参数以及初始化参数
- GenericServlet类:该类虽然实现了servlet接口,但更多的是对servletconfig接口进行了实现,而把对应的http的请求方法service扔给了其子类HttpServlet
- HttpServlet类:该类的主要任务就是完成用户的请求和对其进行响应,自定义的servlet必须继承该类
- 注意:Servlet是一个单例设计,同时能够支持多线程并发访问,所以可能会造成线程安全性问题
- 定义servlet:
Servlet的一些方法
GenericServlet的一些方法
HttpServlet的一些方法
Servletconfig接口的一些方法
ServletContext接口的一些方法
- 其中HttpServletRequest请求对应的接口是ServletRequest
- 而HttpServletRequest请求对应的接口是ServletResponse
- 由于servlet中没有内置对象,所以使用session或application时创建:
- 除了表单提交形式写post和AJAX异步请求方式写post,其他的请求方式都是get,在servlet中,一个get请求只能跳到另一个servlet里的doGet方法里
- Servlet生命周期:
1.实例化servlet对象:首先由客户端发起请求,容器会解析url,找到servlet配置中对应的url-partten,然后会找到对应的servlet-name,找到之后就会使用servlet-class实现类实例化
2.调用init()方法初始化servlet:当容器运行时就会自动调用该方法
3.调用service方法提供服务:在HttpServlet中的Service方法,会根据用户提交的方式,选择调用doXXX方法,如果我们自己重写了Service方法,而没有调用doXXX具体的方法,可能在请求后,如果同时存在service以及对应doXXX方法时,只会调用service这一个方法
4.调用destory()方法销毁:当web容器销毁时,会调用该方法对servlet进行销毁