• servlet context 和 servlet config


    servletConfig

    Servlet容器初始化一个servlet对象时,会为这个servlet对象创建一个servletConfig对象,该对象中包含了servlet的<init-param>初始化参数信息。Servlet容器在调用servlet对象的init(ServletConfig config)方法时,会把servletConfig对象当做参数传递给servlet对象。Init(ServletConfig config)方法中通过this.config=config将ServletConfig对象保存,之后在service方法中可以通过this.getServletConfig()获取该对象。如果要覆盖 init() 方法,应调用 super.init() 以确保该Servlet得到正确地初始化。

    作用:将数据库信息、编码方式等配置信息放在web.xml中,以后修改时不需要修改源代码

    常用方法:

    •  String getServletName() ,获取当前Servlet在web.xml中配置的名字
    • String getInitParameter(String name),获取当前Servlet指定名称的一个初始化参数的值
    • Enumeration getInitParameterNames() ,获取当前Servlet所有初始化参数的名字组成的枚举
    • ServletContext getServletContext() ,获取代表当前web应用的ServletContext对象

    一般开发者创建的Servlet都继承HttpServlet,而HttpServlet是GenericServlet的子类。GenericServlet也实现了getInitParameter()方法,因此Servlet可以直接调用该方法去获取servlet的配置信息,不用通过ServletCofig对象。

    ServletContext

    容器启动后,会为每一个Web应用创建唯一的一个符合ServletContext接口要求的对象---servlet context。只要不关闭服务器或删除web应用,该servlet context就一直存在。

    作用:Web应用范围内存取共享数据;访问web应用的资源文件;Servlet对象之间通过ServletContext对象来实现通讯;获取Servlet容器的相关信息;访问日志信息等。

    GenericServlet/ServletConfig/HttpSession/FilterConfig都提供了getServletContext()方法获取ServletContext对象。

    绑定数据时,在满足使用条件的情况下,优先使用生命周期短的,提高内存使用率:

    request<session<Context

    常用方法:

    • getAttribute(String  name) ,获取绑定在servlet context上的数据。
    • getInitParameter(String name) ,获取<context-param>标签中为整个Web应用配置的初始化参数。
    • getInitParameterNames() ,一次性获取<context-param>里所有的初始化参数名
    • getRealPath(String path) ,获取应用程序内指定资源的绝对路径。
    • getResource(String parh),path必须是/开头,代表当前web应用程序的根目录。返回一个代表某个资源的URL对象。
    • getResoutceAsStream(String parh),可以使用相对于根目录的路径访问到web目录下的所有文件,而不必知道绝对路径,返回文件流。
    //一次性获取Context里所有的初始化参数
    Enumeration enumeration = context.getInitParameterNames();
    while (enumeration.hasMoreElements()) {
        String name = (String) enumeration.nextElement();
        String value = context.getInitParameter(name);
        System.out.println(name + ";" + value);
    }
    //通过ServletContext加载资源
    ServletContext.getRealPath("/" )  //方法得到Web应用程序的根目录的绝对路径。
    String path= this.getServletContext().getRealPath("config.properties");
    Properties prop = new Properties(); // 注意导的包是import java.util.Properties;
    prop.load(new FileReader(path));

    常用概念区分:

    • 请求参数 parameter:浏览器发送过来的请求中的参数信息
    • 初始化参数 initparameter:在web.xml中为Servlet或ServletContext配置的初始化信息
    • 域属性 attribute:四大作用域中存取的键值对
    以上皆为个人理解,如有错误之处,欢迎留言指正。
  • 相关阅读:
    SAP HANA中创建分析权限(Analytic Privilege)
    SAP HANA 中的决策表(Decision Table)
    SAP HANA procudure 创建用户
    数据挖掘与分析学习链接汇总
    Wpf 自定义窗体
    Winform里实现一个双击ListBox可以切换为TextBox编辑的效果
    一个从没见过的C# ?.语法
    VB.net怎么用Sub Main
    Office2010 帮助查看器遇到意外问题
    WcfService:单服务多契约接口以及用户名密码认证
  • 原文地址:https://www.cnblogs.com/kevin2chen/p/6541357.html
Copyright © 2020-2023  润新知