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:\workspace\sts\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\***\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是在元素之间的间配置。

原文地址:https://www.cnblogs.com/zhchoutai/p/8833566.html

时间: 2024-11-08 02:46:41

JavaWeb学习笔记:ServletConfig()和ServletContext()的相关文章

[原创]java WEB学习笔记06:ServletContext接口

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

JavaWeb学习笔记之Servlet(一)

1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Servlet)来进行开发我们的应用. 下图就是 Servlet API中相应的UML图,在学习JavaWeb 开发时,我们最好对下面的各个Servlet中的方法做一定的了解及其相应的图中的关系,尤其是HttpServletRequest和HttpServletResponse 中的方法. 2. 部署服务器

【JAVAWEB学习笔记】13_servlet

JavaWeb核心之Servlet 教学导航 学习目标: 案例一.完成用户登录功能 案例二.记录成功登录系统的人次 一.Servlet简介 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API  动态的向客户端输出内容 servlet规范:包含三个技术点 1)servlet技术 2)filter技术---过滤器 3)listener技术--

【JAVAWEB学习笔记】17

动态页面技术(JSP/EL/JSTL) 学习目标 案例:完成商品的列表的展示 一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print() 3)<%!java代码%> ---- 会被翻译成servlet的成员的内容 jsp注释:  不同的注释可见范围是不同 1)Html注释:<!--注释

javaweb学习笔记(二)

<p>练习好多天了,还是不会用博客编辑器,原谅我!!</p> 组织每天监督,今天学习的是filter过滤器 在很多国内博客里找不到具体的实例,所以到外国网站上找了一个来练习 利用filter实现了登陆页面验证功能 没有很多的文字叙述,我打算周末补充心得,每天下班找代码,敲代码.重要的事说三遍(总结:总结:总结:) 一定要会总结,不然一天都白费了 AuthenticationFilter.java package com.journaldev.servlet.filters; imp

Javaweb学习笔记4—Reuest&amp;Response

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍 今天来讲javaweb的第四段学习. Request和Response还是比较重要的 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 响应对象 1,Response响应: 常用响应对象:ServletResponse HttpServletResp

Javaweb学习笔记5—Cookie&amp;Session

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍  今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.会话管理技术概述 1 什么是会话? 这里的会话指的是web开发中的一次通话过程,当打开浏览

Javaweb学习笔记6—EL表达式与JSTL及自定义标签

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍 今天来讲javaweb的第六阶段学习. EL表达式与JSTL及自定义标签是对上篇文章介绍的JSP的扩展,不能说是很重要的东西,但是也要了解. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.EL表达式 1,EL简介 Expression Lan

javaweb学习笔记(一)

1.建javaweb项目 2.将tomcat环境导入到项目中3.建包,在包中建内建包的目的:是为了区别不同包中的类(就相当于现实生活中,有两个王强,分别在不同的班一样) 代码: 一.java部分: FileRead package com.servletdemo; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileReader; import java