ServletContext对象(上下文对象)和ServletConfig对象

上下文对象

上下文对象概述及生命周期

上下文对象在项目中,是一个全局管理者.是单例的,只有一个
在服务器启动的时候,服务器会自动的为我们创建出来一个上下文对象.这个上下文对象始终存储在服务器上.当服务器关闭,上下文对象销毁.
上下文对象作为项目的全局管理者,可以服务于每一个servlet.
每一个servlet都可以随时随地的取得并使用上下文对象.

上下文对象的取得方式

 * 取得上下文对象的方式:
	 * 	
	 * 	取得方式1:
	 * 	ServletContext application = this.getServletConfig().getServletContext();
	 *  变量名:必须叫application
	 *  
	 *  取得方式2:
	 *  ServletContext application = this.getServletContext();
	 *  
	 *  未来的实际项目开发,使用第二种方式来取得上下文对象,因为简单方便.
	 *  注意:第二种方式,虽然没有调用getServletConfig()方法,但是内部的实现原理仍然是先调用了getServletConfig()方法,只不过在代码中省略掉了而已.
	 *  
	 *  第一种方式和第二种方式的实现原理是一模一样的,第二种是第一种的简写形式.

上下文对象的常用方法

(1)获得全局初始化参数
getInitParameter(String key)
搭配web.xml中的配置
通过key获取value

 <!-- 
  	以下 配置为 配置全局参数
  	全局参数可以应用于所有的servlet
  	所有的servlet都可以通过上下文对象来使用这个全局参数
   -->
<context-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
</context-param>

(2)作为域对象存取数据
在servlet中,域对象一共有3种.上下文域对象是其中一种
* 域对象是用来做存取值操作的.
* 在域对象中保存的值,只要域对象没有销毁,那么域对象中的值就始终存在
*
* 作为上下文域对象,取值范围最广泛.
* 当我们将值存放到上下文域对象中之后,上下文对象不销毁,里面存的值也始终存在.服务器关闭,上下文对象销毁,里面的值也随之销毁.域对象的存取值和值的是否销毁,与浏览器是否重启无关
*
* 域对象的常用方法:
* 存值: 域对象.setAttribute(String key,Object value)
* 取值: 域对象.getAttribute(String key) Object value
* 移除值: 域对象.removeAttribute(String key)
(3)获取项目发布路径
getRealPath("/");

//获取项目发布路径
ServletContext application = this.getServletContext();
String path = application.getRealPath("/");
//E:\Code\apache-tomcat-9.0.0.M10\webapps\1_servlet5\
System.out.println(path);

ServletConfig对象

ServletConfig对象概述

在Servlet对象创建出来之后,搭配每一个Servlet对象,会伴随着一个ServletConfig对象的产生.
Servlet对象是我们要用的对象,ServletConfig对象是用来装饰Servlet对象的配置对象.
Servlet对象就相当于人,ServletConfig对象相当于衣服.
先有Servlet对象,后有ServletConfig对象
该对象在实际项目中没有什么作用,在开发框架时会用到

ServletConfig对象取得方式

/*
 * ServletConfig对象的取得:
 * 	ServletConfig config = this.getServletConfig();
 *  变量名:config
 */
@Override
public void init(ServletConfig config) throws ServletException {
	
	//创建ServletConfig对象的过程
	super.init(config);
}

ServletConfig对象常用方法

(1)获得web.xml中配置的servlet-name
getServletName()

ServletConfig config = this.getServletConfig();
		String sname = config.getServletName();
		System.out.println(sname);//myServlet3

(2)根据key获取value
getInitParameter(String key)
配合web.xml中的配置(注意配置在servlet-class的下方)

<servlet>
  	<servlet-name>myServlet3</servlet-name>
  	<servlet-class>com.jpg.servlet.MyServlet3</servlet-class>
  	 <!-- 
    	该参数的配置,仅能应用于当前servlet
    	其他的servlet不能使用
     -->
  	<init-param>
  		<param-name>str</param-name>
  		<param-value>dedaowo</param-value>
  	</init-param>
</servlet>
<servlet-mapping>
  	<servlet-name>myServlet3</servlet-name>
  	<url-pattern>/myServlet3.do</url-pattern>
</servlet-mapping>
String value = config.getInitParameter("str");
System.out.println(value);//dedaowo

(3)取得上下文对象

ServletConfig config = this.getServletConfig();
ServletContext application = config.getServletContext()

搭配init方法的注意事项

@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		//super.init(config);
	}
	//搭配init方法的注意事项
	ServletConfig config = this.getServletConfig();
	System.out.println(config);//null

如果重写了带config参数的init方法,如果把init删除,则就不会创建ServletConfig对象,尽量使用无参的init方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值