美文网首页
ServletContext对象

ServletContext对象

作者: 咕咕咕咕咕基 | 来源:发表于2017-11-17 18:07 被阅读0次

    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对象

          本文链接:https://www.haomeiwen.com/subject/rupjvxtx.html