重温Servlet学习笔记--servletContext对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重温Servlet学习笔记--servletContext对象相关的知识,希望对你有一定的参考价值。

  一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对象在tomcat启动时就创建,在tomcat关闭时才被销毁.有时候我们也把这个对象叫做application.

  ServletContext对象的作用就是在整个web应用的动态资源之间共享数据,比如在AServlet中向ServletContext中保存一个数据,然后在Bservelt中获取这个数据,这就是共享数据了.

  • 获取ServletContext对象

在servlet中获取:

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //通过servletconfig获取servletContext
        ServletContext servletContext1 = this.getServletConfig().getServletContext();
        //直接通过当前对象获取servletContext对象,这与上面是同一个对象
        ServletContext servletContext2 = this.getServletContext();
        
    }

 

  • 作为javaWeb四大域对象之一:具有存取数据的功能
  1.   servletContext.setAttribute("name","zhangSan"):    保存一个域属性
  2. String name=(String)servletContext.getAttribute("name"): 获取域属性,返回值默认为Object类型,需要强转
  • 获取应用程序初始化参数(即获取在web.xml中配置的初始化数据)

    servlet也可以获取初始化参数,但它是局部的参数;也就是说,一个Servlet只能获取自己的初始化参数,不能获取别人的,即初始化参数只为一个Servlet准备!

例如Aservlet只能获取Aservlet配置下的初始化参数:

<servlet>
    <servlet-name>AServlet</servlet-name>
    <servlet-class>com.wang.servlet.AServlet</servlet-class>
    <init-param>
        <param-name>name</param-name>
        <param-value>张三</param-value>
    </init-param>
 </servlet>

而servletContext可以配置公共的初始化参数:

<context-param>
     <param-name>name</param-name>
     <param-value>李四</param-value>
 </context-param>

在doPost方法中获取代码为:

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        ServletContext servletContext2 = this.getServletContext();
        String name = servletContext1.getInitParameter("name");
    }
  • 获取资源路径

 

  1.  获取a.txt的真实路径:String realPath = servletContext.getRealPath(“/a.txt”),realPath的值为a.txt文件的绝对路径:F:\tomcat6\webapps\hello\a.txt;
  2.   获取b.txt的真实路径:String realPath = servletContext.getRealPath(“/WEB-INF/b.txt”);
  •  获取资源流

  不只可以获取资源的路径,还可以通过ServletContext获取资源流,即把资源以输入流的方式获取:

  1.  获取a.txt资源流:InputStream in = servletContext.getResourceAsStream(“/a.txt”);
  2.  获取b.txt资源流:InputStream in = servletContext.getResourceAsStream(“/WEB-INF/b.txt”);

 

以上是关于重温Servlet学习笔记--servletContext对象的主要内容,如果未能解决你的问题,请参考以下文章

重温Servlet学习笔记--servletContext对象

重温Servlet学习笔记--response对象

重温Servlet学习笔记--Cookie对象

重温Servlet学习笔记--编码问题

错误 404:javax.servlet.UnavailableException:SRVE0201E:Servlet [org.glassfish.jersey.servlet.ServletCon

重温JSP学习笔记--El函数库