ServletConfig与ServletContext的介绍和使用和对比

1.ServletConfig

了解:

通过ServletConfig对象可以获取web.xml中的配置信息
注意:
ServletConfig是针对特定的Servlet的参数或属性。
ServletConfig是表示单独的Servlet的配置和参数,只是适用于特定的Servlet
也就是说,ServletConfig针对于特定的Servlet,如果想要项目下的其他Servlet访问,就需要用到ServletContext。

常用方法:

方法说明功能描述
String getInitParameter(String name)根据初始化参数名返回对应的初始化参数值
Enumeration getInitParameterNames()返回一个Enumeration对象,其中包含了所有的初始化参数名
ServletContext getServletContext()返回一个代表当前Web应用的ServletContext对象
String getServletName()返回Servlet()的名字,即web.xml中< Servlet-name >元素的值

实际应用:

  首先现在项目文件WEB-INF下的web.xml中进行配置参数信息 (web.xml左下角有可以在Design和Source两个模式进行切换)
  param-name是参数名,param-value是参数值,在下面代码中展示根据参数名获取参数值(可以创建多个参数)

config

1.在Servlet中获取web.xml中配置的参数信息

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter out = response.getWriter();
		ServletConfig config = this.getServletConfig();
		String name = config.getInitParameter("name");
		out.println("name:"+name);
	}
效果:

Dome1效果图

2.获取并打印web.xml中配置的全部参数信息

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter out = response.getWriter();
		ServletConfig config = this.getServletConfig();

		Enumeration<String> paramNames = config.getInitParameterNames();
		while(paramNames.hasMoreElements()) {
			String name = paramNames.nextElement();//获得参数名
			String value = config.getInitParameter(name); //根据参数名获得参数值
			out.println(name+":"+value+"<br>");
		}	
	}
 效果:

Dome1效果图


这里是分隔线 下面是ServletContext


2.ServletContext

了解:

当Servlet容器启动时,ServletContext会为每个Web应用创建唯一的ServletContext对像,代表Web当前应用,该对象封装了当前Web应用信 息,还实现多个Servlet之前数据共享

常用方法:

方法说明功能描述
Enumertion getAttributeNames()返回一个 Enumertion 对象,该对象包含了所有存放在ServletContext中的所有域属性名
Object getAttribute(String name)根据参数指定的属性名返回一个与之匹配的域属性值
viod removeAttribute(String name)根据参数指定的域属性名,用ServletContext中删除匹配的域属性
void setAttribute(String name,Object obj)设置ServletContext的域属性,obj是域值
Set getResourcePaths(String path)返回一个Set集合,集合包含资源目录中子目录和文件的路径名称。参数path必须于正斜线(/)开始,指定匹配资源的部分路径
String getRealPath(String path)返回资源文件在服务器文件系统上的真实路径(文件的绝对路径)。参数path代表资源文件的虚拟路径,它应该以正斜线(/)开始,“/” 表示当前Web应用的根目录,如果Servlet容器不能将虛拟路径转换为文件系统的真实路径,则返回null
URL getResource(String path)返回映射到某个资源文件的URL对象。参数path必须以正斜线(/)开始,“/”表示当前Web应用的根目录
InputStream getResourceAsStream(String path)返回映射到某个资源文件的InputStream输入流对象。参数path传递规则和getResource()方法完全一致

实际应用(两种方式):

1.在web.xml中配置参数信息,SevletDome中获取web应用下的参数信息

 在web.xml中配置参数信息,通过sevlet获取配置参数信息
 param-name是参数名,param-value是参数值,在下面代码中展示根据参数名获取参数值(可以创建多个参数)

context

Servlet获取web.xml中配置参数信息(单个获取参考上面Config)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	PrintWriter	 out = response.getWriter();
	ServletContext context = this.getServletContext();
	Enumeration<String> paramNames = context.getInitParameterNames();
	while(paramNames.hasMoreElements()) {
		String name = paramNames.nextElement();
		String value= context.getInitParameter(name);
		out.println(name+":"+value+"<br>");
	}
}

这里是分隔线 ,展示第二种方式 。


2.在Servlet1中定义参数信息,Servlet2获取并打印参数信息

1.Servlet1中定义参数信息,传递给context对象
//Sevlet1
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		ServletContext context = this.getServletContext();
		context.setAttribute("name", "xiaohei"); //在context对象中存入name参数
		
	}
2.Servlet2总获取到Servlet1定义的name,并打印
//Servlet2
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter	 out = response.getWriter();
		ServletContext context = this.getServletContext();
		String value= (String) context.getAttribute("name");
		out.println(value);
	}

3.对比总结:

比较ServletConfigServletContext
web.xml中配置参数信息Servlet标签下Web-app标签下
配置参数的范围特定的Servlet整个项目下Servlet共享
获取web.xml配置参数信息getInitParameter(name)与config相同
遍历所有配置的初始化参数名getInitParameterNames();hasMoreElements();nextElement();与config相同
Servlet传入和接收(不依靠web.xml)setSttributer(String,Object),getSttributer(“name”)

版权声明:本文为qq_44780229原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。