javaWeb应用的生命周期
首先介绍两个概念:
servlet容器-->可以理解为可以放很多servlet的盒子,所以叫容器 例如tomcat
servlet-->-一个类,应用的入口。
Web应用在web.xml中配置的servlet。一个应用可以有多个servlet,一般只有一个,例如使用springmvc的ervlet:是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
上一篇: 键值字符串转为json字符串步骤详解