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中的初始化参数。

<servlet>
  	<!-- Servlet注册的名字 -->
  	<servlet-name>helloServlet</servlet-name>
  	<!--Servlet全类名-->
  	<servlet-class>com.ouc.javaweb.HelloServlet</servlet-class>
  	<!--可以指定Servlet被创建的时机-->
  	<!--配置在web.xml中的初始化参数-->
  	<init-param>
  		<!--参数名-->
  		<param-name>user</param-name>
  		<!--参数值-->
  		<param-value>root</param-value>
  	</init-param>
  	<init-param>
  		<param-name>password</param-name>
  		<param-value>xucailing</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>

如何获取初始化参数:

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

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

@Override
	public void init(ServletConfig servletConfig) throws ServletException {
		String user=servletConfig.getInitParameter("user");
		Enumeration<String> 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<String> names1=servletContext.getInitParameterNames();
		while(names1.hasMoreElements()){
			String name=names1.nextElement();
			String value=servletContext.getInitParameter(name);
			System.out.println("name:"+name+"---->value:"+value);

2.获取web应用的某一个文件的绝对路径(发布在服务器上的绝对路径):

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);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值