对servletContext作用的总结

匿名 (未验证) 提交于 2019-12-03 00:04:02

ServletContextServlet 程序用来与 Web 容器通信。

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

由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

servletContext的作用:

1.获取应用的全局配置参数
2.获取web应用下的资源
3.实现各个servlet之间的资源共享

1. 获取应用的初始配置参数

首先在servle的配置文档web.xml里面加入一些全局配置参数

<context-param>     	<param-name>name</param-name>     	<param-value>cyh</param-value> </context-param> 

在项目里面的任意servlet我们都可以通过servletContext这个对象来获取这些初始化参数,代码如下:

//1.获取对象 ServletContext context = getServletContext(); //2.获取全局参数 String name = context.getInitParameter("name"); System.out.println("naem="+name); 

2.获取web应用下的资源

有三种方式区获取web应用中的资源

1.获取资源在tomcat里面的绝对路径,使用getRealPath()方法,先获取路径再获取流对象.
2. 使用getResourceAsStream(),根据相对路径直接获取流对象
3.通过classloader(类加载器JDBC)去获取web工程下的资源

假设我们要获取一个叫config.properties的资源,它放在file文件夹下

第一种方式:根据t绝对路径获取(先获取路径在获取流对象)

//获取servletContext对象 ServletContext context = getServletContext();   String path= context.getRealPath("file/config.properties");  System.out.println("path="+path);  //1.创建属性对象 Properties properties = new Properties();  //2.指定载入的数据源  /*  * 如果想获取web工程下的资源,用普通的FileInputStream是行不通的。  * 原因出在路径上。这里相对的路径其实是jre来确定的。但这里是一个web工程  * jre后面会由tomcat来管理,所以真正的相对路径是tomcat里的bin目录。  */   InputStream is = new FileInputStream(path); properties.load(is);  //3.获取name的属性值 String name = properties.getProperty("name"); System.out.println("name="+name);  

第二种方式:根据相对路径直接获取流对象

//获取servletContext对象 ServletContext context = getServletContext();  //1.创建属性对象 Properties properties = new Properties(); //获取web工程下的资源,将其转换为流对象。前面隐藏着当前工程的根目录。 InputStream is = context.getResourceAsStream("file/config.properties"); properties.load(is);   //2.获取name的属性值 String name = properties.getProperty("name"); System.out.println("name="+name); 

第三种方式:通过classloader去获取web工程下的资源(通过类加载器)

//获取servletContext对象 ServletContext context = getServletContext();  //1.创建属性对象 Properties properties = new Properties();  //默认的classloader的路径是下面这个路径,我们必须得回到这个项目的目录下,才能进入file目录 //D:\tomcat\apache-tomcat-7.0.57\wtpwebapps\servletContextDemo\WEB-INF\classes InputStream is = this.getClass().getClassLoader().getResourceAsStream("../../file/config.properties"); properties.load(is);   //2.获取name的属性值 String name = properties.getProperty("name"); System.out.println("name="+name); 

3.实现各个servlet之间的资源共享

//先利用servletContext存入数据  //获取ServletContext对象 ServletContext context = getServletContext ();  //存入共享数据 context.setAttribute("name", "cyh");  //然后我们在其他servlet上就可以通过servletContext这个对象来获取这些数据了 String name = context.getAttribute("name"); 

本文章转载自:https://blog.csdn.net/weixin_44665028/article/details/100800388

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!