Servlet简介
Servlet是一种基于Java技术的Web组件,用于生成动态内容,由容器管理,是 Java 的一套技术标准。
Servlet主要运行在服务器端,并由服务器执行调用,是一种按照Servlet标准开发的类。
简单的讲,Servlet就是运行在服务器上的一个小程序,用来处理服务器接收到的请求。
Servlet作用
使用 Servlet你可以收集来自网页表单的用户输入,呈现来自数据库,或者其它源的记录,还可以动态创建网页。
早期的Servlet的作用十分复杂,即承担处理数据的作用,又承担展示页面的作用,导致代码的耦合性过高不易于维护。
后期随着了MVC思想的出现,也就是模型 – 界面 – 控制器思想,极大的简便了开发,也明确了Servlet的作用,如下图所示:
根据上图我们可以知道,Servlet在其中承担的作用是Controller控制器,起到对数据进行操作的作用。
Servlet的工作原理
Servlet是运行在Servlet容器中的,由Servlet容器来负责,Servlet实例的查找、创建及整个生命周期的管理。
HTTP服务器不直接和业务类交互,而是把请求先交给Servlet容器,Servlet容器内部将请求转发到具体Servlet。
Servlet接口和Servlet容器这一整套规范叫作Servlet规范,Tomcat按Servlet规范要求实现了Servlet容器,又兼备HTTP服务器功能。
若实现新业务,只需实现一个Servlet,并把它注册到Tomcat(Servlet容器),剩下的事情就由Tomcat帮忙来解决即可。
Servlet的生命周期
public interface Servlet { void init(ServletConfig var1) throws ServletException; void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException; void destroy();
1.创建servlet 的实例
默认情况下:第一次访问servlet或启动服务器时创建servlet 的实例,如果servlet需要进行一些复杂的操作,需在初始化时就完成。
2.初始化init
void init(ServletConfig var1) throws ServletException;
一旦Servlet实例被创建,将会调用Servlet的init方法,但是这个方法在后续的请求中不会再次被调用,仅仅只会调用一次,同事传入ServletConfig实例,对Servlet对象进行初始化。
3.服务Service
@Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { super.service(req, res); }
每一个请求在Servlet容器中都会产生一个线程来调用Service方法,但需要注意每个线程也共享Servlet对象的成员变量。
每次请求都调用service方法,根据请求方式调用doGet()或doPost()方法。
4.销毁destory
@Override public void destroy() { super.destroy(); }
服务器关闭时会调用destory方法,销毁Servlet实例。
mikechen睿哥
mikechen睿哥,十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》