欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ServletConfig & ServletContext

程序员文章站 2022-05-08 13:29:04
...

ServletConfig对象

ServletConfig:封装了Servlet配置信息,并且可以获取ServletContext对象。

  • 配置Servlet的初始化参数:
        <!-- 配置Servlet初始化参数 ,且节点必须在load-on-startup前面-->
        <init-param>
            <param-name>user</param-name>
            <param-value>root</param-value>
        </init-param>
  • 获取初始化参数:
    1) 获取Servlet的配置名称(了解):getServletName()
    2) getInitParameter(String name):获取指定参数名的初始化参数
    3) getInitParameterNames():获取参数名组成的Enumeration对象:
        Enumeration<String> names = servletConfig.getInitParameterNames();
        while(names.hasMoreElements()){
            String name = names.nextElement();
            String value = servletConfig.getInitParameter(name);
            System.out.println("^^"+ name+ ":" + value);

ServletContext对象

Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext被包含在ServletConfig对象中,调用ServletConfig.getServletConfig方法可以返回ServletContext对象的引用。由于一个WEB应用程序中所有Servlet都共享一个ServletContext对象,所以ServletContext对象被称之为application对象(Web应用程序对象)。
1) 可以由ServletConfig获取
ServletContext servletContext = servletConfig.getServletContext();
2) 该对象代表当前WEB应用:可以认为ServletContext是当前WEB应用的大管家,可以获取当前WEB应用的各个方面的信息。

  • 配置当前WEB应用的初始化参数(web.xml)
    <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
  • 获取当前WEB应用的初始化参数方法:
   ServletContext servletContext = servletConfig.getServletContext();
        String driver = servletContext.getInitParameter("driver");
        System.out.println("driver: " + driver);
        
        Enumeration<String> names2 = servletContext.getInitParameterNames();
        while(names2.hasMoreElements()){
            String name = names2.nextElement();
            String value = servletContext.getInitParameter(name);
            System.out.println("-->" + name + ":" + value);
        }
  • 获取当前WEB应用的某一个文件在服务器上的绝对路径,而不是部署前的路径
    getRealPath(String path)
    String realPath = servletContext.getRealPath("/hello.jsp");
  • 获取当前WEB应用的名称
    getContextPath()
    String contextPath = servletContext.getContextPath();
  • 获取当前WEB应用的某一个文件对应的输入流
    getResourceAsStream(String path): path 的 / 为相对于当前WEB应用的根目录
    InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");