Servlet生命周期
init()
被创建
默认情况下,访问第一次创建时只执行一次,用于加载资源
可以在web.xml中配置Servlet的创建时机
此Servlet对象在内存中只存在一个,是单例的,因此,会存在线程安全问题
· 解决方案:不在Servlet中定义成员变量,即使定义了成员变量,也不要对其修改值。
service()
destroy()
被销毁时,服务器关闭时,Servlet被销毁,只有服务器正常关闭时,才会执行destroy方法,在被销毁之前执行,用于释放资源
终止时执行
Servlet还有两个方法:
getServletConfig()获取servlet配置对象
和getServletInfo获取servlet信息

新建servlet
response.getWriter():获得PrintWriter对象,用于向网页输出字符;
request.getContextPath():获取servlet访问路径中的工程名部分。
不仅可以通过web.xml定义虚拟路径,使用注解@WebServlet(“/xxx”)也可以,类似python里的装饰器。
package cn.java.servlet;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class LifeServlet*/@WebServlet("/LifeServlet")public class LifeServlet extends HttpServlet {private static final long serialVersionUID = 1L;// 只有第一次请求会触发@Overridepublic void init(ServletConfig config) throws ServletException {// TODO Auto-generated method stubSystem.out.println("Servlet的init方法");}// 每次请求都会触发@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubSystem.out.println("Servlet被请求了");}// 工程从tomcat移除会触发@Overridepublic void destroy() {// TODO Auto-generated method stubSystem.out.println("Servlet被销毁了");}}

