Servlet解析
概念
- Servlet是运行在服务端的小程序(Server Applet),可以处理客户端的请求并返回响应,主要用于构建动态的Web应用,是SpringMVC的基础。
生命周期
加载和初始化
- 默认在客户端第一次请求加载到容器中,通过反射实例化,并调用
init()
,且init()
只能被调用一次,因此每个Servlet是单例的,需注意线程安全。
请求处理
- 处理业务逻辑的核心方法,Servlet 容器收到url请求后,路由到对应的Servlet,调用
service()
方法处理客户端请求,并返回响应。 - 每次服务器收到一个请求时,Servlet 容器都会分配一个线程并调用
service()
方法,根据请求类型,执行对应的方法,也会存在线程安全问题,避免使用全局变量、非同步数据结构等。
销毁
destroy()
只会被调用一次,当容器被正常关闭时,释放一些使用了的资源。- 因用户请求期间的异常终止情况,不会调用destroy()。