ServletContext对象

1、WEB容器在启动时,为每个web应用程序创建一个相应的ServletContext对象,它代表当前web应用,停掉服务器或者从服务器中删除某个web应用时被销毁。

2、得到servlet方式:

       1)可通过ServletConfig.getServletContext方法获得ServletContext对象,即:

                    ServletContext context=this.getServletConfig().getServletContext;

       2)现有的类继承HttpServlet,类里写:

                      context=this.getServletContext()

3、域就是容器,context域就是容器的范围,只要往容器里面放东西,整个web应用程序范围内都取得出来,如:this.getServletContext.setAttribute("xx",xx);设置的,别的servlet也能取到,要把数据带给1.jsp页面,不要用this.getServletContext.setAttribute("xx",xx);,因为存的数据被整个web应用程序共享,如果在跳转到1.jsp页面之前调用了别的servlet设置了this.getServletContext.setAttribute("xx",xx);跳转到2.jsp页面,会将之前容器中设置的数据覆盖,这样取不到想取的值

4、servletContext域:

1)这是一个容器

2)servletContext域就说明了这个容器作用范围,也就应用程序范围

5、应用:

   1)多个servlet通过ServletContext对象实现数据共享

   2)获取WEB应用的初始化参数

   3)实现servlet的转发

   4)利用ServletContext对象读取资源文件

6、配置文件通常有两种:.properties文件或.xml文件配置,数据之前没有关系用properties配置,数据之   间有关系用xml配置

配置文件(如src下面的db.properties)

1)通过servletContext读取(常用)

InputStream in=this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"),

即使配置文件在src下,也不是通过src下路径读取的,因为Java工程是发布到服务器中的,读取配置文件实际上是服务器在读取,Java工程发布后在服务器中是以classes文件存在所以路径应为classes下db.properties所在的路径

路径可以看配置文件在文件夹里看它存在哪个位置

2)创建Properties对象:Properties props=new Properties();以map形式存储,如:键值对(username,*****),(password,******)......

3)通过流将获取到的路径中的信息读到对象中去:props.load(in);

4)读取配置信息,如:

String username=props.getProperty("username");                                                                                String password=props.getProperty("password");

通过传统方式读取:(不可行)

FileInputStream in = new FileInputStream("classes/db.properties");  错误,读取不到,路径是相对于服务器中的java虚拟机的启动目录的路径,即相对的是虚拟机tomcat下的bin目录,若想访问,则每次需要在bin目录下创建一个classes的文件夹,将db.properties复制进去,此时通过传统方式就能读取到,所以在实际开发中最好不要用传统方式读取,应该用ServletContext读取;若想通过传统方式读取,可以通过ServletContext的getRealPath获得资源的绝对路径后再通过传统方式读取文件(当需要读取客户端穿过来的资源文件名称时可用这种方式)

你可能感兴趣的:(ServletContext对象)