1. 实现Servelt的第一种方法 实现servlet接口
    
   
一.servelt是以个普通类,创建一个servlet接口的实现类
1).public class HelloServlet implements Servlet{}
2).web.xml中配置和映射servlet
	<!-- 配置servlet和映射servlet -->
	  <!-- 注册一个servlet -->
	  <servlet>
		<!-- 注册名 -->
		<servlet-name>hello</servlet-name>
		<!-- servlet类的全类名 -->
		<servlet-class>com.java.servlet.HelloServlet</servlet-class>
	  </servlet>
	  <!-- 映射servlet -->
	  <servlet-mapping>
	  	<!-- 必须和注册名一致 -->
	  	<servlet-name>hello</servlet-name>
	  	<!-- 浏览器访问路径/代表当前web应用的根目录 -->
	  	<url-pattern>/hello</url-pattern>
	  </servlet-mapping>
    访问路径:
    
     http://localhost:8080/demo1/hello
    
   
二.servlet容器,运行servlet或者jsp等软件环境
1)可以创建servlet和管理servlet的生命周期
2)servlet的生命周期是由servlet容器负责管理
	构造器:执行时调用,只有第一次请求servlet时调用。
	init():只被调用一次,在创建好实例以后直接调用。
	service():被调用多次,每一次请求的时候都调用service方法,用于获取和响应请求。
	destory():只被调用一次,当前web应用程序被卸载时被调用,用于释放资源。
    三.load-on-startup:
    
    1)配置:
hello
com.java.servlet.HelloServlet
2
    2).load-on-startup:指定servlet被创建和初始化的时机,
    
    如果是负数:在第一次请求时被创建
    
    如果是正数或0:在当前web应用被加载的时候创建servlet实例和初始化,数值越小越早创建。
   
    四. servlet-mapping
    
    1).同一个servlet可以有多个servlet-mapping,即多个
    
    的子节点的设置值可以是同一个servlet注册名
   
	2)<url-pattern>通配符:.html和/url/*俩者不能同时使用,会出现端口冲突
    五.ServletConfig:代表当前servlet,可以获取当前servlet的配置信息,还可以获取ServletContext对象
    
    常用方法:
    
    1).//getInitParameter(String) 获取当前Servlet指定名称的初始化参数的值
    
    String initParameter = config.getInitParameter(“username”);
   
		2).//getInitParameterNames()  获取当前Servlet所有初始化参数的名字组成的枚举
		Enumeration<String> names = config.getInitParameterNames();
	
		while (names.hasMoreElements()) {
			
			String name1 = (String) names.nextElement();
			
			String value=config.getInitParameter(name1);
			System.out.println("name1:"+name1+",value:"+value);
		}
		
		
		3).//getServletName()    获取当前Servlet在web.xml中配置的名字
		String servletName = config.getServletName();
		
		
		4).//getServletContext()   获取代表当前web应用的ServletContext对象
		
		ServletContext sc = config.getServletContext();
		sc.getContextPath();//获取web应用的根目录
    
     2. 实现servlet的第二种方法
    
   
GenericServlet是一个抽象方法,继承该抽象方法
    一.
    
    1)GenericServlet是一个servlet,是servlet和servletConfig接口的实现类,
    
    是一个抽象类,其中service是一个抽象方法
    
    2)具体实现
    
    1.GenericServlet中声明了一个成员变量ServletConfig,并且init(ServletConfig config)
    
    里面对象这个变量初始化
    
    2.利用servletConfig成员变量实现了servletConfig接口里面的方法
    
    3.还定义了init()方法,如果子类需要在初始化的时候完成一些特定功能,可以重写无参的init方法,并且在init(ServletConfig config)
    
    里面调用了init方法,注意:重写的init的方法不是生命周期方法,init(ServletConfig config)才是生命周期方法
   
    
     3. 第三中servlet的实现方式
    
    
    一.
    
    HttpServlet是实现servlet最常用的一种方式
    
    1).继承GenericServlet,他是针对http协议定制的
    
    2).在service(ServletRequest req,ServletResponse res)中直接把俩个参数
    
    转换为HttpServletRequest req, HttpServletResponse resp 并调用service(HttpServletRequest req, HttpServletResponse resp)
    
    在重载的service(HttpServletRequest req, HttpServletResponse resp)方法中,获取请求方式,并且根据请求方式调用doGet或doPost
    
    3).继承HttpServlet只需要重写doGet()和doPost()方法即可
   
    二.
    
    //ServletContext:当前web应用对象(在当前web应用下所有的地方都可以获取他,只有一个,相当于这个项目的全局变量)
    
    //获取ServletContext对象的方式
    
    //1
    
    ServletContext context = getServletContext();
    
    //2
    
    ServletContext context2 = getServletConfig().getServletContext();
   
	ServletContext常用方法:
	//getInitParameter(String)   获取当前Servlet指定名称的初始化参数的值
	String initParameter = config.getInitParameter("username");
	
	//getInitParameterNames()  获取当前Servlet所有初始化参数的名字组成的枚举
	Enumeration<String> names = config.getInitParameterNames();
	//getServletName()    获取当前Servlet在web.xml中配置的名字
	String servletName = config.getServletName();
	
	//getServletContext()   获取代表当前web应用的ServletContext对象
	
	ServletContext sc = config.getServletContext();
	sc.getContextPath();//获取web应用的根目录
 
