zoukankan      html  css  js  c++  java
  • JavaWeb学习笔记:ServletConfig()和ServletContext()

    ServletConfig()和ServletContext()

    1.ServletConfig()

    ServletConfig是一个接口,它由server提供商来实现。

    ServletConfig封装了Servlet的配置信息,而且能够获取ServletContext对象。

    Servlet容器在初始化servlet的时候会初始化一个servletConfig对象,这个对象在不论什么可訪问的client都是有效的。可是,需注意的是,该对象仅仅能在本servlet中应用,不能在其它servlet中訪问。

    基本的方法:

    • public ServletContext getServletContext(); //暂不写,放在ServletContext中整理
    • public String getInitParameter(String name); //获取指定參数名的初始化參数
    • public Enumeration< String > getInitParameterNames(); //获取參数名组成的 Enumeration 对象
    • public String getServletName(); //使用比較少

    获取配置信息

    怎样配置

    <servlet>
            <servlet-name>helloServlet</servlet-name>
            <servlet-class>com.buaa.zhao.HelloServlet</servlet-class>
    
            <!-- 配置 Serlvet 的初始化參数。 且节点必须在 load-on-startup 节点的前面 -->
            <init-param>
                <!-- 參数名 -->
                <param-name>user</param-name>
                !-- 參数值 -->
                <param-value>root</param-value>
            </init-param>
    
            <init-param>
                <param-name>password</param-name>
                <param-value>12345</param-value>
            </init-param>
    
            <load-on-startup>-1</load-on-startup>
        </servlet>

    获取配置信息

    public void init(ServletConfig servletConfig) throws ServletException {
    
            String user = servletConfig.getInitParameter("user");
            //输出root
            System.out.println(user);
    
            System.out.println("--------------------------");
    
            Enumeration<String> names = servletConfig.getInitParameterNames();
    
            //输出:
            //user: root
            //password: 12345
            while(names.hasMoreElements()){
                String name = names.nextElement();
                String value = servletConfig.getInitParameter(name);
                System.out.println(name + ": " + value);
            }
    
        }
    

    2.ServletContext()

    能够觉得 SerlvetContext 是当前 WEB 应用的一个大管家. 能够从中获取到当前 WEB 应用的各个方面的信息

    基本的方法

    • public String getInitParameter(String name); //获取指定參数名的初始化參数
    • public Enumeration< String > getInitParameterNames(); //获取參数名组成的 Enumeration 对象
    • public String getRealPath(String path);
    • public String getContextPath();
    • public InputStream getResourceAsStream(String path);

    获取配置信息

    ServletContext实例能够通过 serlvetConfig.getServletContext()方法获得的.

    该对象代表当前 WEB 应用: 能够觉得 SerlvetContext 是当前 WEB 应用的一个大管家. 能够从中获取到当前 WEB 应用的各个方面的信息。

    怎样配置

    <!-- 配置当前 WEB 应用的初始化參数 -->
        <context-param>
            <param-name>driver</param-name>
            <param-value>com.mysql.jdbc.Driver</param-value>
        </context-param>
    
        <context-param>
            <param-name>jdbcUrl</param-name>
            <param-value>jdbc:localhost:///test</param-value>
        </context-param>

    获取配置信息

    public void init(ServletConfig servletConfig) throws ServletException {
    
            //获取ServletContext对象
            ServletContext servletContext = servletConfig.getServletContext();
    
            String driver = servletContext.getInitParameter("driver");
            //输出:driver: com.mysql.jdbc.Driver
            System.out.println("driver: " + driver);
    
            Enumeration<String> nameContext = servletContext.getInitParameterNames();
    
            //输出
            //name: driver
            //name: jdbcUrl
            while(nameContext.hasMoreElements()) {
                String name = nameContext.nextElement();
                System.out.println("name: " + name);
            }
        }
    

    获取当前Web应用的某个文件部署在在server上的绝对路径

    须要通过方法public String getRealPath(String path);来获取。

    代码:

            String realPath = servletContext.getRealPath("/zhaoTest");
            System.out.println(realPath);

    输出结果:

    D:workspacests.metadata.pluginsorg.eclipse.wst.server.core	mp3wtpwebapps***zhaoTest.xml

    获取当前 WEB 应用的名称

    须要通过方法getContextPath();来获取。

    代码:

    String contextPath = servletContext.getContextPath();
    System.out.println(contextPath); 

    获取当前web应用的而某一个文件相应的输入流

    通过getResourceAsStream(String path)获取。path 的 / 为当前 WEB 应用的根文件夹。

    有两种方法能够获取到。

    代码

            try {
                ClassLoader classLoader = getClass().getClassLoader();
                InputStream is = classLoader.getResourceAsStream("jdbc.properties");
                System.out.println("1. " +  is);
                pros.load(is);
    
                System.out.println(pros.getProperty("name"));  
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            pros = new Properties();
    
            try {
                //注意:  / 为当前 WEB 应用的根文件夹。

    InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties"); System.out.println("2. " + is2); pros.load(is2); System.out.println(pros.getProperty("name")); } catch (Exception e) { e.printStackTrace(); }

    结果

    1. java.io.BufferedInputStream@15d442ac
    2. java.io.FileInputStream@22653566

    ServletConfig()和ServletContext()的差别

    • 作用范围不同:ServletContext的參数能够为全部的Servlet所获取,ServletConfig仅仅能由当前Servlet所获取。

      也就是说他们的差别在于,所填写的配置的信息是想让一个Servlet用还是多个Servlet用。

    • 配置不同:ServletContext是在两个元素间配置,ServletConfig是在元素之间的间配置。
  • 相关阅读:
    【Quartz】常用方法的使用方式(三)
    【Quartz】实现接口封装化(二)
    【Quartz】定时器初步实验(一)
    数据库和ado连接语句的使用总结
    PMP 德尔菲技术
    java 事务解释。
    防盗链--解释
    java月利率计算(等额本息贷款)
    java 日志的数据脱敏
    MDC 输出线程信息帮助定位问题
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8833566.html
Copyright © 2011-2022 走看看