zoukankan      html  css  js  c++  java
  • Servlet 常用API学习(一)

    Servlet常用API学习

    一、Servlet体系结构(图片来自百度图片)

    二、ServletConfig接口

      Servlet在有些情况下可能需要访问Servlet容器或借助Servlet容器访问外部的资源,所以,Serlvet引擎需要将表示Servlet容器的对象传递给Servlet。另外,在web.xml文件中为某个Servlet设置的友好名称和初始化参数等信息也需要传递给该Servlet

      Servlet引擎将代表Servlet容器的对象(ServletContext)和Servlet的配置参数信息一并封装到一个称为ServletConfig的对象中,并在初始化Servlet实例对象时传递给该Servlet。ServletConfig接口则用于定义ServletConfig对象需要对外提供的方法,以便在Servlet程序中可以调用这些方法来获取有关信息。

      Servlet引擎调用Servlet的实例对象的init(ServletConfig config)方法将ServletConfig对象传递给Servlet。Servlet.getServletConfig()方法必须返回init(ServletConfig config)方法传递进来的这个ServletConfig对象的引用。

      ServletConfig接口常用方法:

      ①getInitParameterNames
      ②getInitParameter
      ③getServletName
      ④getServletContext

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

      配置 Serlvet 的初始化参数
       <servlet>
            <servlet-name>helloServlet</servlet-name>
            <servlet-class>me.javaweb.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>1230</param-value>
            </init-param>
            
            <load-on-startup>-1</load-on-startup>
            
        </servlet>

      获取初始化参数:
        > getInitParameter(String name): 获取指定参数名的初始化参数
        > getInitParameterNames(): 获取参数名组成的 Enumeration 对象.
        
        String user = servletConfig.getInitParameter("user");
        System.out.println("user: " + user);
        
        Enumeration<String> names = servletConfig.getInitParameterNames();
        while(names.hasMoreElements()){
            String name = names.nextElement();
            String value = servletConfig.getInitParameter(name);
            System.out.println("^^" + name + ": " + value);
        }

      获取 Serlvet 的配置名称(了解)

    三、ServletContext接口

      Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用。

      由于一个WEB应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为 application 对象(Web应用程序对象),主要有以下功能:

      ①获取WEB应用程序的初始化参数
      ②记录日志
      ③rapplication域范围的属性
      ④访问资源文件
      ⑤获取虚拟路径所映射的本地路径(当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径

        getRealPath(String path);
      代码:
      String realPath = servletContext.getRealPath("/note.txt");
      System.out.println(realPath);

      ⑥WEB应用程序之间的访问
      ⑦ServletContext的其他方法
      ⑧获取web应用程序初始化参数

      为WEB应用程序设置初始化参数的好处在于不需要修改Servlet源程序,就可以改变一些参数信息。
      ServletContext.getInitParameterNames方法用于返回一个包含WEB应用程序的所有初始化参数名称的Enumeration集合对象,ServletContext.getInitParameter方法用于返回某个指定名称的初始化参数值。

      设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.

      在web.xml文件的根元素<web-app>中增加<context-param>子元素,如下所示:
    <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    方法:
    getInitParameter
    getInitParameterNames   
    代码:
    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();
        System.out.println("-->" + name);
    }

      其次该对象代表当前 WEB 应用: 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.

      ⑨获取当前 WEB 应用的名称:
      getContextPath()
      代码:
      String contextPath = servletContext.getContextPath();
      System.out.println(contextPath);

      ⑩获取当前 WEB 应用的某一个文件对应的输入流.
      getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.
      代码:InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");

      ⑪和 attribute 相关的几个方法:

      Servlet中其它较为重要的几个接口,下篇博文再继续探讨,详情可关注我的博客

    如果,您对我的这篇博文有什么疑问,欢迎评论区留言,大家互相讨论学习。
    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
    如果,您对我的博文感兴趣,可以关注我的后续博客,我是【AlbertRui】。

    转载请注明出处和链接地址,欢迎转载,谢谢!

  • 相关阅读:
    科技公司网站
    jquery 设置元素内容html(),text(),val()
    jquery 相关class属性的操作
    jquery attr()和prop()方法的使用
    检测移动设备横竖屏
    设定程序在某个特定时刻执行
    js设计模式-建造者模式
    css自定义字体完美解决方案example
    css透明属性
    css3多列example
  • 原文地址:https://www.cnblogs.com/albertrui/p/8428437.html
Copyright © 2011-2022 走看看