• servlet


    ServletContext

    ServletContext上下文提供对应用程序中所有Servlet所共有的各种资源和功能的访问。Servlet上下文 API用于设置应用程序中所有Servlet共有的信息。Servlet可能需要共享他们之间的共有信息。运行于同 一服务器的Servlet有时会共享资源,如JSP页面、文件和其他Servlet

    ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。

    • request一个用户可有多个
    • session一个用户一个
    • servletContext所有用户共用一个 

    request一个用户可有多个 session一个用户一个 servletContext所有用户共用一个 

    ServletContext接口

    容器供应商负责提供servlet容器内ServletContext接口的实现。使用ServletContext对象可以记录事件 日志、获取资源的URL地址,并且设置和保存上下文内可以访问的其他servlet的属性

    在jsp中是9大默认对象的application对象 

    初始化参数

    上下文参数一般都是配置在web.xml中 

    1. <context-param> 上下文参数的个数没有限制
    2. <param-name>counterparam-name> 参数名称,不允许重复
    3. <param-value>99999param-value> 对应配置参数值
    4. context-param>

     ServletContext接口的初始化参数允许servlet访问与web应用相关的上下文初始化参数,这些由应用开 发人员在部署描述符中指定:

    • getInitParameter 
    1. String str=this.getServletContext().getInitParameter("counter");//如
    2. 果上下文中没有这个初始化参数配置,则获取值null

     允许servlet的init-param和上下文参数同名,这里只是通过不同的方式进行获取, 上下文参 数使用application对象获取,servlet参数配置使用ServletConfig获取

    • getInitParameterNames 
    1. final ServletContext application = this.getServletContext();
    2. final Enumeration names =
    3. application.getInitParameterNames();
    4. while(names.hasMoreElements()){
    5. String name=names.nextElement();
    6. String value=application.getInitParameter(name);
    7. System.out.println(name+"---"+value);
    8. }

     应用开发人员利用初始化参数传送配置信息。典型的例子是web管理员的e-mail地址或者一个持有关键 数据的系统名称

    上下文属性

    可以通过名称将对象属性绑定到上下文。任何绑定到上下文的属性可以被同一个web应用的其他servlet 使用。ServletContext接口的方法允许访问 

    • setAttribute
    • getAttribute
    • getAttributeNames
    • removeAttribute 

    针对基本不发生改变而且需要频繁读取的数据,可以考虑将数据共享在application中 

    • 正确的做法是参数ServletContextListener实现application被创建时自动加载,在application销毁 时存储数据
    • 变通做法是由Servlet在init方法中负责加载准备 
    1. <servlet>
    2. <servlet-name>loadCatalogservlet-name>
    3. <servlet-class>com.yan.action.LoadCatalogServletservlet-class>
    4. <load-on-startup>1load-on-startup>
    5. servlet>
    6. <servlet-mapping>
    7. <servlet-name>loadCatalogservlet-name>
    8. <url-pattern>/load.dourl-pattern>
    9. servlet-mapping>

     在LoadCatalogServlet的init方法中加载类目信息,并存放在application对象的属性中,其它地方直接获 取即可

  • 相关阅读:
    【matplotlib基础】--几何图形
    高级架构之用户态网络协议栈TCP/IP设计
    echarts制作关系图谱
    Day4.数据可视化拓展图形的绘制
    LeetCode第 310 场周赛
    新的阶乘(筛素数)--2023百度之星初赛第三场
    深度学习:线性回归模型
    mysql的几种较少使用的数据类型探究
    Xiaojie雷达之路---脉冲压缩
    Snapdragon Profiler分析Android GPU
  • 原文地址:https://blog.csdn.net/weixin_50518344/article/details/127973247