servletconfig和servlet

本文深入探讨了ServletConfig与ServletContext接口的功能与应用,包括初始化参数的配置与获取、资源共享及资源文件读取方法,为web应用程序的高效开发提供实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在servlet运行期间,经常需要一些辅助信息,这些信息可以放在web.xml文件中使用一个或多个<init-param>元素进行配置。 当Tomcat初始化时会将该配置信息封装到servletconfig对象中,通过调用init(servletconfig config)方法将servletconfig对象传递给servlet。
servletconfig接口的常用方法

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

***servletconfig接口

配置web.xml中的配置信息

<servlet>
	<servlet-name>sds</servlet-name>
	<servlet-class>d.dfd.fdg</servlet-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</servlet>
<servlet-mapping>
	<servlet-name>sds</servlet-name>
	<url-pattern>/dfjkdj</url-pattern>
</servlet-mapping>

获取web.xml中的信息

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out =response.getWriter();
		// 获得servletconfig对象
		ServletConfig config = this.getServletConfig();
		// 获得参数名为encondig对应的参数值
		String param = config.getInitParameter("encoding");
		out.println("encoding="+param);
	}

sletcontext接口

获取web应用程序的初始化参数

在web.xml中不仅可以配置servlet的初始化信息,还可以配置整个web应用的初始化信息。web应用初始化参数配置如下

<context-param>
	<param-name>xxx</param-name>
	<param-value>anc</param-value>
</context-param>
<context-param>
	<param-name>aaa</param-name>
	<param-value>xsds</param-value>
</context-param>

获取web.xml中的配置信息的值

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		// 得到servletcontexr对象
		ServletContext context = this.getServletContext();
		// 得到包含所有初始化参数名的Enumeration对象
		Enumeration<String> paramNames = context.getInitParameterNames();
		// 遍历所有的初始化参数名,得到相应的参数值打印
		while (paramNames.hasMoreElements()) {
			String name = paramNames.nextElement();
			String value = context.getInitParameter(name);
			out.print(name+":"+value);
			out.println("<br />");
		}

实现多个servlet对象共享数据

由于一个web应用程序共同共享一个servletcontext对象,因此可以通过servletcontext对象共享数据,servletcontext提供了四个接口,分别是:

方法说明功能描述
Enumeration getAttributeNames()返回一个Enumeration对象,该对象包含了所有存放在servletcontext中的所有域属性名
Object getAttribute(String name)根据参数指定的属性返回值
void removeAttribute(string name)从servletcontext删除参数指定的属性
void setAttribute(String name,Object obj)设置servletcontext的域属性,其中name是域属性名,obj是属性值

通过servletcontext共享数据
向servletcontext添加数据

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 获取servletcontext对象
		ServletContext context = this.getServletContext();
		// 设置servletcontext中的参数及值
		context.setAttribute("name", "张三");
		context.setAttribute("age", "15");
	}

获取servletcontext对象中的值

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 获取servletcontext对象
		ServletContext context = this.getServletContext();
		// 获取指定参数的值
		String name = (String)context.getAttribute("name");
		String age = (String)context.getAttribute("age");
		// 通过getattributenames获取enumeration对象
		Enumeration ss = context.getAttributeNames();//获取servletcontext对象的enumeration对象
		while(ss.hasMoreElements()) {
			String names = (String)ss.nextElement();
			String value = (String)context.getAttribute(names);
			System.out.println(name+value);
		}
	}

读取web应用下的资源文件

在实际开发中我们常常会需要读取web应用中的一些资源文案,比如配置文件、图片等,为此,在servletcontexr接口中定义了一些读取web资源的方法,这些方法是依靠 servlet容器来实现的。servlet容器根据资源文件相对于web应用的路径,返回关联资源文件的io流、资源文件在文件系统的绝对路径。

方法说明功能描述
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()方法完全一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值