zoukankan      html  css  js  c++  java
  • ServletContext总结

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

       ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

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

    1.多个Servlet通过ServletContext对象实现数据共享。

    InitServletService方法中利用ServletContext对象存入需要共享的数据

    /*获取ServletContext对象*/  

    ServletContext context = this.getServletContext();   

    //存入共享的数据    

    context.setAttribute("name", "haha"); 

    在其它的Servlet中利用ServletContext对象获取共享的数据   

    /*获取ServletContext对象*/  

    ServletContext context = this.getServletContext();   

    //获取共享的数据   

    String name = context.getAttribute("name");   

    System.out.println("共享的内容值是:"+name);  

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

    web.xml文件中配置需要初始化的参数信息。

    <web-app>   

     <context-param>   

    <param-name>url</param-name>   

    <param-value>jdbc:mysql://localhost:3306/4g</param-value>   

     </context-param>   

    <context-param>   

     <param-name>password</param-name>   

     <param-value>1314qr</param-value>   

     </context-param>   

     <context-param>   

      <param-name>user</param-name>   

      <param-value>root</param-value>   

      </context-param>   

    </web-app>  

    DemoServletdoPost方法中测试获取初始化参数的步骤如下:   

    /*获取ServletContext对象*/  

     ServletContext context = this.getServletContext();   

    /*获取初始化参数*/  

    //获取指定名称的初始化参数   

    String url = context.getInitParameter("url"); 

     //获取web.xml文件中所有的初始化应用参数          

     Enumeration<String> enumer = context.getInitParameterNames();   

    while(enumer.hasMoreElements()){   

    String name = enumer.nextElement();   

     String value = context.getInitParameter(name);   

     System.out.println(name+"=========="+value);   

        }   

    2.实现Servlet的转发:

    在测试的Servlet中实现转发的步骤如下:  

    /*要利用ServletContext对象实现转发获取对象*/  

    ServletContext context = this.getServletContext();   

     //request对象中存入name属性    

    request.setAttribute("name", "haha");   

     /*根据转发的地址获取 RequestDispatcher对象*/  

    RequestDispatcher  rd  = context.getRequestDispatcher("/index.jsp");   

    //调用转发方法 以下采用任意方法即可    

    rd.forward(request, response);   

      //rd.include(request, response);   

    注意:forwardinclude的区别 

    forward方法是把请求的内容转发到另外的一个servlet.include是把另一个servlet处理过后的内容拿过来.

    (forward方法调用后在响应中的没有提交的内容被自动消除。将请求转发给其他的Servlet后,由

        被调用的Servlet负责对请求做出响应,而原先Servlet的执行则终止。      

       include方法使原先的Servlet和转发到的Servlet都可以输出响应信息,即原先的Servlet还可以继续输出响应信息

    3.利用ServletContext对象读取资源文件。  

    读取资源文件(properties文件(属性文件))的三种方式

    配置的properties的内容如下:   

    url=jdbc\:mysql\://localhost\:3306/3g ; 

    user=root;

    password=root;  

    获取实现的代码如下:   

    /*获取ServletContext对象*/  

    ServletContext context = this.getServletContext();     

    //第一种方式    

    URL url = context.getResource("WEB-INF/classes/db.properties");   

    InputStream is =  url.openStream();   

    //第二种方式   

     /*读取db.properties文件*/  

    String path =context.getRealPath("WEB-INF/classes/db.properties");   

     /*根据文件的路径 构建文件对象*/  

    File file = new File(path);   

     /*根据file文件对象 创建输入流*/  

    InputStream is = new FileInputStream(file);   

    //第三种方式   

    InputStream is = context.getResourceAsStream("WEB-INF/classes/db.properties ");    

     以三种方式任意一种可以:    

      /*解析properties的文件*/  

         Properties prop = new Properties();   

         //从输入流中读取属性列表(键和元素对)。   

          prop.load(is);   

          Set<String> set = prop.stringPropertyNames();   

           //遍历set集合   

           Iterator<String> it = set.iterator();   

           while(it.hasNext()){   

               String key = it.next();   

               String value = prop.getProperty(key);   

               System.out.println(key+"-----"+value);   

                  }   

  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/chunxi/p/2547106.html
Copyright © 2011-2022 走看看