javaweb:servletconfig、context(4)

ServletConfig是servlet的配置对象,用于获取初始化参数,例如encoding和username。它可以被通过getServletConfig()获取,提供了获取初始化参数值、参数名称、ServletContext对象和servlet名称的方法。另一方面,ServletContext在web服务器启动时创建,每个web项目只有一个,用于获取初始化参数、共享数据和访问资源文件。可通过ServletConfig或直接调用getServletContext()获取。两者的主要区别在于作用范围和配置位置,ServletContext的参数可供所有Servlet使用,ServletConfig仅限当前Servlet。
摘要由CSDN通过智能技术生成

2.ServletConfig接口
什么是ServletConfig: 它是servlet的配置对象,作用就是获取与servlet的初始化参数。
它的子类是GenericServlet和HttpServlet.
它被实列化是通过web服务器实现的。
得到servletConfig对象:getServletConfig()
ServletConfig常用的方法:
>>>> 1. 获取servlet的初始化参数的值:getInitParameter(String name):根据encoding获取utf-8
>>>> 2. 获取servlet初始化参数的名称:getInitParameterNames() :获取encoding和username等名称
>>>> 3. 得到servletContext对象:getServletContext()
>>>> 4. 获取servlet的名称:getServletName():对应web.xml里面TestServlet02
初始化参数的配置:


encoding
utf-8


username
x

3.ServletContext接口
ServletContext对象是在web服务器启动时就创建了,是web服务器创建的servletContext对象,
每一个web项目只有一个ServletContext对象。
ServletContext对象的作用:获取web应用程序的初始化参数,在web应用程序能共享数据,获取web项目下的资源文件。
得到ServletContext对象:
>>>>1.通过ServletConfig对象: config.getServletContext()
>>>>2.直接得到: getServletContext();

1.获取web应用程序的初始化参数(web应用程序就是web项目)
	>>>> 1. 获取全局初始化参数的值:getInitParameter(String name)
	>>>> 2. 获取全局初始化参数的名称:getInitParameterNames() 
	比如:
	<!-- 配置全局的初始化参数 -->
	<context-param>
			<param-name>AAA</param-name>
			<param-value>aaa</param-value>
	</context-param>
	<context-param>
			<param-name>BBB</param-name>
			<param-value>bbb</param-value>
	</context-param>

2.实现多个servlet对象之间共享数据:因为一个web项目只有一个ServletContext对象。
  ServletContext对象就是域对象:域对象在一定范围内能存值和取值。
  域对象相关的方法:
	* 存值:void setAttribute(String key,Object obj);
	*  取值:Object obj = getAttribute(key);
	*  删除值:void removeAttribute(key);
  比如:在TestServlet04里面存值:
		 //1.得到ServletContext对象
		ServletContext context = this.getServletContext();
		//2.存值
		 context.setAttribute("key", "servlet04里面存的值----");
	 在TestServletO5里面获取值:
		 //1.得到servletContext对象
		ServletContext context = this.getServletContext();
		//2.从ServletContext取值
		Object obj =context.getAttribute("key");
		String value=obj.toString();
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().print(value);

  3.获取Web下面的资源文件
	通过ServletContext对象能够获取Web项目下面文件的字节输入流,或者文件的绝对路径。
	路径问题:
	 普通java项目:直接使用jdk编译java文件,所以说文件的路径是相对于工作空间。
			比如:
				Properties por = new Properties();
				InputStream inStream = new FileInputStream("src/config.properties");
				por.load(inStream);
				String value =por.getProperty("key");
				System.out.println(value);
	 web项目:运行在tomcat服务器上面的,所有说文件的路径是相对于tomcat服务器。
	          服务器端是没有src这个目录,写路径不能写src,必须相对于tomcat服务器端的路经。
	 1.获取文件的自己输入流:路径是相对于tomcat服务器的路径
	   InputStream  in =getResourceAsStream(String path)  
	   比如:
		// 获取文件的字节输入流
		 ServletContext context = this.getServletContext();
		 String path="/WEB-INF/classes/config.properties";
		 InputStream in = context.getResourceAsStream(path);
		 Properties pro= new Properties();
		 pro.load(in);
		 //获取配置文件的值
		 String v1 = pro.getProperty("Company");
		 String v2= pro.getProperty("Address");
		 response.getWriter().print("company name :"+v1+" company address :"+v2);

	2.获取文件的绝对路径:路径是相对于服务器端的路径
	  String realPath = getRealPath(path);
	  比如:
		 //1.得到ServletContext对象
		ServletContext context = this.getServletContext();
		//2.获取文件的绝对路径
		String path="/WEB-INF/classes/config.properties";
		//3.调用getRealPath
		//E:\soft\apache-tomcat-7.0.55\webapps\chapter03\WEB-INF\classes\config.properties
		String realPath = context.getRealPath(path);
		System.out.println(realPath);
		InputStream in = new FileInputStream(realPath);

如何配置:

<servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.buaa.zhao.HelloServlet</servlet-class
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值