• 8 ServletContext


    1 为什么需要ServletContext 技术

    显示网站多少人在线,显示当前登录者是第几位登录者等信息。

     

    2 什么是ServletContext

      可以把它想象成一个服务器上的公共空间,每个用户都可以访问到它。 Web 容器在启动时,它会为每个Web 应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

    ① ServletContext 在服务器端

    ② ServletContext 被所有客户端共享

    ③ ServletContext 当Web应用启动时,自动创建

    ④ web应用关闭/tomcat关闭/reload,ServletContext自动消亡

     

    3 创建

    ServletContext 对象可以通过 getServletConfig().getServletContext()方法获得,也可以通过this.getServletContext()获得。

     

    4 删除

    ServletContext.removeAttribute("counter");

    5 实际应用

    ① 获取web应用的初始化参数

     1 <!-- 所有servlet都可以访问 -->
     2   <context-param>
     3       <param-name>name</param-name>
     4       <param-value>latinyTest3</param-value>
     5   </context-param>
    6 //获取: 7 ServletContext serCon = this.getServletContext(); 8 String name = serCon.getInitParameter("name"); 9
    10 //如果文件在src下,应该使用类加载器读取 11 InputStream 12 inpStr2= ContextTest5.class.getClassLoader().getResourceAsStream("dbinfo.properties");

    ② 跳转页面技术

    //1 response.sendRedirect("/web应用名/资源名");
    //2 request.getRequestDispatcher("/资源名").forward(request, response);
    //3 this.getServletContext().getRequestDispatcher("/url").forward(request, response);

    ③ 读取资源文件

    //a 创建资源文件,dbinfo.properties
    username=latiny
    password=123456abc
    age=28
    sex=male

      

    //b读取资源文件
    ServletContext serCon = this.getServletContext();
    //1 首先读取到文件
    InputStream inpStr = serCon.getResourceAsStream("dbinfo.properties");
    //2 创建Properties,然后loadinStr到Properties对象里
    Properties proper= new Properties();
    proper.load(inpStr);
            
    //根据Properties对象的key获取value
    String name=proper.getProperty("username");
    String password=proper.getProperty("password");

      

    ④ 获取文件全路径

    ServletContext serCon = this.getServletContext();
    //读取到文件全路径
    String path = serCon.getRealPath("/images/2.png");
    String path = serCon.getRealPath("2.png");

    ⑤ web网站实际应用

    网站计数器;网站在线用户显示;简单聊天系统;

    如果涉及到不同用户共享数据,并且这些数据量不大,同时又不希望写入到数据库中,则可以考虑ServletContext实现;

     

    实现网站计数器功能时,用户每刷新一次会自动增加一次访问记录,如何避免表单重复提交:

    使用sendRedirect 访问即可:

    response.sendRedirect("/UserManager4/MainFrame");

     

    ⑥ 使用ServletContext注意事项

    ServletContext会长时间保存在服务器内存中,因此建议不要想ServletContext中添加过大的数据。

  • 相关阅读:
    AJAX异步交互
    Java 异常讲解(转)
    Spring 配置文件详解 (以2.5为例)
    Java 获取当前系统时间方法比较
    Cannot change version of project facet Dynamic web module to 3.0
    使用 GCC 调试程序
    汇编 内存段划分和寄存器
    java.lang.StringBuilder
    java.lang.String
    建立和断开与MySQL服务器的连接
  • 原文地址:https://www.cnblogs.com/Latiny/p/8458539.html
Copyright © 2020-2023  润新知