Servlet的生命周期方法以及几个重要的对象

Servlet的生命周期方法

(1)构造器:只有第一次请求Servlet时,创建Servlet实例,调用构造器,说明Servlet是单实例

(2)init方法:只被调用一次,创建好实例后,立即被调用,用于初始化当前Servlet

(3)service方法:被多次调用,每次请求都会调用service方法,实际用于响应请求的。

(4)destroy:只调用一次,在当前Servlet所在的web应用被卸载前调用,用于释放当前Servlet所占用的资源。

public class HelloServlet  implements Servlet{

	@Override
	public void destroy() {
		System.out.println("destroy...");
	}

	@Override
	public void init(ServletConfig servletConfig) throws ServletException {
		System.out.println("init...");
	}
	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		System.out.println("service...");
	}
	public HelloServlet(){
		System.out.println("HelloServlet'constructor");
	}

Servlet的几个重要对象

1.ServletConfig对象

ServletConfig封装了Servlet的配置信息,可以获取到配置web.xml中的初始化参数。


  	
  	helloServlet
  	
  	com.ouc.javaweb.HelloServlet
  	
  	
  	
  		
  		user
  		
  		root
  	
  	
  		password
  		xucailing
  	
  	1
  

如何获取初始化参数:

getInitParameter(String name):获取指定参数名的初始化参数

getInitParameterNames():获取参数名组成的Enumeration对象

@Override
	public void init(ServletConfig servletConfig) throws ServletException {
		String user=servletConfig.getInitParameter("user");
		Enumeration names=servletConfig.getInitParameterNames();
		while(names.hasMoreElements()){
			String name=names.nextElement();
            //先获取名称的集合,再根据名称获取值
			String value=servletConfig.getInitParameter(name);
			System.out.println("name:"+name+"---"+"value:"+value);
		}
	}

ServletConfig可以获取到Servlet的配置名称

String servletName=servletConfig.getServletName();
System.out.println(servletName);

2.ServletContext对象

每一个web应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext()可以返回ServletContext对象的引用。

作用:
1.获取当前web应用的初始化参数,web应用的初始化参数可以被所有的Servlet获取,而Servlet的初始化参数,只能被当前Servlet获取。(用法同servletConfig获取参数一样)

//获取ServletContext对象
		ServletContext servletContext=servletConfig.getServletContext();

		String driver=servletContext.getInitParameter("driver");
		System.out.println("driver:"+driver);
		
		Enumeration names1=servletContext.getInitParameterNames();
		while(names1.hasMoreElements()){
			String name=names1.nextElement();
			String value=servletContext.getInitParameter(name);
			System.out.println("name:"+name+"---->value:"+value);

2.获取web应用的某一个文件的绝对路径(发布在服务器上的绝对路径):
Servlet的生命周期方法以及几个重要的对象_第1张图片

String realPath=servletContext.getRealPath("/note.txt");
System.out.println("绝对路径:"+realPath);

输出结果为:
D:\project.metadata.me_tcat85\webapps\JavaWeb0002\note.txt

3.获取当前web应用的名称(页面绝对路径)

//获取当前web应用的名称
String contextPath=servletContext.getContextPath();
System.out.println("contextPath:"+contextPath);

4.获取当前web应用的某一个文件对应的输入流

//getResourceAsStream(),相对于当前web应用的路径
		InputStream in2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
		System.out.println("2."+in2);

你可能感兴趣的:(学习,Java)