ServletContext与ServletConfig

ServletContext

 

  • -运行在JVM.上的每一个web应用程序都有一 个与之对应的Servlet

  • 上下文(Servlet运行环境)Servlet API提供ServletContext接口用来表示Servlet上下文

  • ServletCo-ntext对象可以被web应用程序中的所有servlet访问

  • ServletContext对象是web服务器中的一个已知路径的根

原理:

  • ServletContext对象由服务器进行创建,一个项目只有一个对象。 不管在项目的任意位置进行获取得到的都是同一个对象, 那么不同用户发起的请求获取到的也就是同一个对象了,该对象 用户共同拥有。

 

作用:

解决不同用户得数据共享问题

特点:

  1. 由服务器创建

  2. 所有用户共享同一个ServletContext对象

  3. 所有的Servlet都可以访问到同一个ServletContext中的属性

  4. 每一个web项目对象的是一个ServletContext

用法:

  • void setAttribute(String name,Object obj) 设置共享属性

  • Object getAttribute(String name) 读取共享属性

  • void removeAttribute(String name) 移除共享属性

  • ServletContext getContext(String uri) 获取指定uri的上下文对象

  • String getContextPath() 返回web程序的上下文路径

  • String getInitParameter(String param) 获取.上下文初始化参数

  • String getRealPath(String path) 返回资源在服务器上的真实路径

  • RequestDispatcher getRequestDispatcher(String path) 返回一个包装了路径信息的Dispatcher

//设置ServletContext对象
//1.   常用!
ServletContext context1 =this.getServletContext();
//2.
ServletContext context2 =this.getServletConfig().getServletContext();
//3.
ServletContext context3 =request.getServletContext();
​
//设置ServletContext属性值
 ServletContext servletContext = this.getServletContext();
        servletContext.setAttribute("111","xinsiwei");
​
//获取ServletContext属性值
ServletContext servletContext = this.getServletContext();
String value = (String) servletContext.getAttribute("111");
System.out.println(value);
​
​
//其他用途
//1.获取wem.xml中配置的公共属性
<context-param>
        <param-name>beijing</param-name>
        <param-value>huanyingnin!</param-value>
</context-param>
    
    String value = servletContext.getInitParameter("beijing");
        System.out.println(value);
//2.获取某个文件的绝对路径
String path= servletContext.getRealPath("web.xml");
        System.out.println(path);
      //获取项目的虚拟目录路径
            String path2= servletContext.getContextpath();
        System.out.println(path);

 

 


ServletConfig

作用:

  • 方便每一个servlet获取自己单独的属性配置

特点:

  • 每一个servlet单独拥有一个ServletConfig对象

使用:

//在web.xml文件中servlet中添加
    <init-param>
            <param-name>china</param-name>
            <param-value>beijing</param-value>
    </init-param>
    ServletConfig config = this.getServletConfig();
    String value = config.getInitParameter("china");
    System.out.println(value);
//获取所有的key
  Enumeration<String> initParameterNames = config.getInitParameterNames();
        while (initParameterNames.hasMoreElements()){
            String key = initParameterNames.nextElement();
            String value2 = config.getInitParameter(key);
            System.out.println(key+"-------"+value2);

猜你喜欢

转载自www.cnblogs.com/-xsw000/p/12670437.html