Servlet---生命周期

Servlet 运行在服务端,用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API 动态的向客户端输出内容

  • Servlet有狭义和广义的定义:

     狭义的servlet:指的就是servlet接口规范

      广义的servlet:指的是实现了Sevlet接口的所有的实现类

实现步骤:

  1. 创建类实现Servlet接口
  2. 覆盖尚未实现的方法(着重关注service方法)
  3. 在web.xml进行servlet的配置(web.xml就相当于web工程清单)
public class Demo1Servlet implements Servlet{

	/**
	 * 这是servlet的销毁方法,服务器停止或者将项目从tomcat移除的时候,销毁servlet。
	 */
	public void destroy() {
		System.out.println("servlet被销毁了。");
		
	}

	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * servlet的初始化方法,默认情况下,servlet在第一次被访问的时候创建,调用init方法。
	 * ServletConfig:代表了当前servlet的配置信息对象。
	 */
	public void init(ServletConfig arg0) throws ServletException {
		System.out.println("servlet的初始化方法");
		/**
		 * 第一个功能:获取当前servlet的名称
		 */
//		String servletName = arg0.getServletName();
//		System.out.println(servletName);
		/**
		 * 第二个功能,获取当前servlet的初始化配置参数
		 */
		String initParameter = arg0.getInitParameter("name");
		System.out.println(initParameter);
		
		Enumeration<String> initParameterNames = arg0.getInitParameterNames();
		while(initParameterNames.hasMoreElements()){
			String name = initParameterNames.nextElement();
			String value = arg0.getInitParameter(name);
			System.out.println(name+":"+value);
		}
		
		/**
		 * 第三个功能:用来获取servletContext对象
		 */
		ServletContext servletContext = arg0.getServletContext();
		System.out.println(servletContext);
	}

	/**
	 * 这是servlet的服务方法,每当发出请求的时候,都会执行一次这个service方法。
	 * ServletRequest:这个代表了http的请求,所以这个对象中get方法居多。
	 * ServletResponse:这个就代表了http的响应,set方法居多。
	 */
	public void service(ServletRequest arg0, ServletResponse arg1)
			throws ServletException, IOException {
		System.out.println("running...");
	}

}

web.xml

   <servlet>
    <servlet-name>Servlet</servlet-name>
    <servlet-class>com.itheima.servlet.Demo1Servlet</servlet-class>
    <init-param>
      <param-name>name</param-name>
      <param-value>lisi</param-value>
    </init-param>
    <init-param>
      <param-name>age</param-name>
      <param-value>18</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/demo</url-pattern>
  </servlet-mapping>

Servlet的生命周期:指的是一个实现Servlet接口的对象从创建到销毁的整个过程。

 Servlet接口里面定义servlet的

初始化方法init()  客户端第一次访问的时候默认执行

从服务中移除销毁的方法destroy()  服务器关闭或者将项目从服务器中移除的时候执行销毁方法销毁servlet

提供服务的service()方法 二米次访问都会执行

客户端在第一次访问Servlet的时候执行init()初始化方法,下一步会执行service()方法,再次请求不会在执行init()方法初始化,

会是执行service()方法,每次请求都会执行service()方法,所以servlet是单例模式的!

猜你喜欢

转载自blog.csdn.net/adminBfl/article/details/82740431