三种servlet的总结

  • Post author:
  • Post category:其他



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应用的根目录