欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ServletConfig与servletContext

程序员文章站 2022-05-08 13:38:35
...

servletConfig与servletContext是web开发中比较重要的两个对象,经常使用框架反而对这陌生了,此次对其常用方法略作总结。

一、servletConfig对象

servletConfig对象主要用于获取servlet初始化参数,获取servlet的名称以及获取servletContext。如下是servletConfig的常用方法

Method Summary
 java.lang.String	getInitParameter(java.lang.String name) 
          Returns a String containing the value of the named initialization parameter, or null if the parameter does not exist.
 java.util.Enumeration	getInitParameterNames() 
          Returns the names of the servlet's initialization parameters as an Enumeration of String objects, or an empty Enumeration if the servlet has no initialization parameters.
 ServletContext	getServletContext() 
          Returns a reference to the ServletContext in which the caller is executing.
 java.lang.String	getServletName() 
          Returns the name of this servlet instance.
servletConfig的方法较为简单,主要用于在web.xml中配置相关的servlet初始化参数,在servletInit时使用。如下是简单例子:
	//获取当前的servletconfig
	ServletConfig config = this.getServletConfig();
	String name = config.getServletName();
	System.out.println("当前servlet名称:"+name);
	System.out.println("通過servletConfig獲取servlet初始化參數");
	Enumeration<String> names = config.getInitParameterNames();
	String paraName;
	while (names.hasMoreElements()) {
		paraName = names.nextElement();
		System.out.println("参数:" + paraName + "值为:"+ config.getInitParameter(paraName));
	}

servlet的相关配置:
	<servlet>
	   <servlet-name>ServletTest</servlet-name>
	   <servlet-class>servlet.ServletTest</servlet-class>
	   <init-param>
	   		<param-name>name</param-name>
	   		<param-value>test</param-value>
	   </init-param>
	</servlet>

输出结果:
当前servlet名称:ServletTest
通過servletConfig獲取servlet初始化參數
参数:name值为:test

二、servletContext对象

ServletContext即Servlet上下文对象,该对象表示当前的web应用环境信息,一个Web应用只会创建一个ServletContext对象。

Web容器启动的时候,它会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前的web应用。

[注意]

由于一个Web应用中的所有Servlet共享一个ServletContext对象,所以多个Servlet通过ServletContext对象实现数据共享,

ServletContext对象通常称为Context域对象。

[servletContext获取方式]
	//两种获取servletContext的方式
	ServletContext context1 = this.getServletContext();
	ServletContext context2 = this.getServletConfig().getServletContext();
[servletContext的几种用途]
1、获取全局的配置参数
String getInitParameter(String name);
Enumeration<String> getInitParameterNames();
	//1、获取全局的配置参数
	String value = context1.getInitParameter("contextConfigLocation");
	System.out.println(value);
	Enumeration<String> initNames = context1.getInitParameterNames();
	while (initNames.hasMoreElements()) {
		paraName = initNames.nextElement();
		System.out.println("全局参数:" + paraName + "值为:"
				+ context1.getInitParameter(paraName));
	}
2、获取web应用的上下文路径
String getContextPath()
	//获取web应用的上下文路径
	String path = context1.getContextPath();
	System.out.println("应用上下文路径为:" + path);

3、保存共享数据,servletContext是servlet中的一种域对象

域对象(域对象就是在不同资源之前来共享数据,保存数据,获取数据)

void setAttribute(String name,Onject object);

Object getAttribute(String name);

void removeAttribute(String name);
4、请求转发
RequestDispatcher getRequestDispatcher(String path);

	RequestDispatcher dispatcher = context1.getRequestDispatcher("/index.jsp");
	dispatcher.forward(request, response);

5、读取web项目资源文件
String getRealPath(String path);

InputStream getResourceAsStream(String path);

URL getResource(String path);

简单实例如下:
	//1
	InputStream in1 = context1.getResourceAsStream("/WEB-INF/classes/sysConfig.properties");
	Properties pro = new Properties();
	pro.load(in1);
	System.out.println(pro.getProperty("test"));
	//2
	URL url = this.getServletContext().getResource("/WEB-INF/classes/sysConfig.properties");
	InputStream in = url.openStream();
	Properties prop = new Properties();
	prop.load(in);
	String url1 = prop.getProperty("url");
	System.out.println(url1);