javaWeb应用的生命周期

首先介绍两个概念:

servlet容器:可以理解为可以放很多servlet的盒子,所以叫容器   例如tomcat

servlet:一个类,应用的入口。

Web应用在web.xml中配置的servlet。一个应用可以有多个servlet,一般只有一个,例如使用springmvc的servlet:是org.springframework.web.servlet.DispatcherServlet,

当然也可以自己建一个,像下面的实例,实现servlet接口就行啦。

Servlet的基本方法

init(ServletConfig config);   初始化调用

service(ServletRequest request, ServletResponse response)   用户每次访问调用

destroy();  销毁时调用

web应用的访问过程:

                                                _____ tomcat____

用户 -------->浏览器--------> |     应用 servlets    |         

                                               |_______________ |           

浏览器将用户的信息发送给servlet容器,容器再根据配置的servlet进行处理,将结果返回给用户

 一个tomcat里可以放n个应用,一个应用也可以有n个servlet

 

javaweb应用的生命周期是由Servlet容器来控制的,包括以下以下三个步骤

1.启动

tomcat启动的时候会自动启动放在/webapps里的Web应用,步骤如下

(1).将web.xml加载到内存中

(2)为应用创建ServletContext对象<---一个应用一个,应用的所有的servlet共享一个

(3).初始化Filter  (过滤器,拦截一些请求)

(4).初始化Servlet init()(web.xml中配置<load-on-startup>值不小于0的,负数的servlet是在用户初次调用的时候才初始化)

2.运行

servlet处于待命状态,调用servlet的service()方法

3.终止

(1) 销毁所有运行时servlet destroy()

(2) 销毁Filter

(3) 销毁与JavaWeb应用相关的对象,如ServletContext

 

以下实例来自《Tomcat与Java Web开发技术详解》一书

1.搭建好一个web工程

2.创建servlet

 

package com.my.demo.system;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class lifeServlet extends GenericServlet {

	private int initVar=0;
	private int serviceVar=0;
	private int destroyVar=0;
	private String name;
	
	public void init(ServletConfig config) throws ServletException{
		super.init(config);
		name=config.getServletName();
		initVar++;
		System.out.println(name+"init():Servlet被初始化了"+initVar+"次");
	}
	
	public void destory() {
		destroyVar++;
		System.out.println(name+"destory():Servlet被销毁了"+destroyVar+"次");
	}
	
	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		serviceVar++;
		System.out.println(name+"service():Servlet共响应了"+serviceVar+"次");
		
		String content1="初始化:"+initVar;
		String content2="响应:"+serviceVar;
		String content3="销毁:"+destroyVar;
		
		PrintWriter out=response.getWriter();
		
		out.print("<html><head><title>LifeServlet</title>");
		out.print("</head><body>");
		out.print("<h1>"+content1+"</h1>");
		out.print("<h1>"+content2+"</h1>");
		out.print("<h1>"+content3+"</h1>");
		out.print("</body></html>");
		out.close();
	}

}


3.修改web.xml,配置两个Servlet

 

 

  <servlet>
    <servlet-name>demo</servlet-name>  
    <servlet-class>com.my.demo.system.lifeServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
  </servlet>
  <servlet-mapping>
		<servlet-name>demo</servlet-name>
		<url-pattern>/demo</url-pattern>
  </servlet-mapping>
  
    <servlet>
    <servlet-name>demo1</servlet-name>  
    <servlet-class>com.my.demo.system.lifeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
		<servlet-name>demo1</servlet-name>
		<url-pattern>/demo1</url-pattern>
  </servlet-mapping>

4.启动,分别访问 localhost:8080/应用名/demo 和 localhost:8080/应用名/demo1  

 

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值