Java ServletContext与ServletConfig接口使用教程

目录
  • ServletContext接口
    • 1.概念
    • 2.功能
      • 1、获取Web应用程序的初始化参数
      • 2、实现多个Servlet对象共享数据
      • 3、读取Web应用下的资源文件
  • ServletConfig接口
    • 1.概念
    • 2.ServletConfig的常用方法

ServletContext接口

1.概念

当Servlet容器启动时,会为每个Web应用创建一个唯一的ServletContext对象代表当前Web应用,可以和程序的容器(服务器)来通信。

两种获取方式:

通过request对象获取

ServletContext context = request.getServletContext();

通过HttpServlet获取

ServletContext context = this.getServletContext();

2.功能

1、获取Web应用程序的初始化参数

定义了getInitParameterNames()和getInitParameter(String name)方法分别用来获取参数名和参数值。

     package cn.itcast.chapter04.servlet;
     import java.io.*;
     import java.util.*;
     import javax.servlet.*;
     import javax.servlet.http.*;
     public class TestServlet03 extends HttpServlet {
         public void doGet(HttpServletRequest request,
                          HttpServletResponse response)
                 throws ServletException, IOException {
               response.setContentType("text/html;charset=utf-8");
               PrintWriter out = response.getWriter();
               // 得到ServletContext对象
              ServletContext context = this.getServletContext();
              // 得到包含所有初始化参数名的Enumeration对象
              Enumeration<String> paramNames =
     context.getInitParameterNames();
               // 遍历所有的初始化参数名,得到相应的参数值,打印到控制台
              out.println("all the paramName and paramValue are
                         following:");
               // 遍历所有的初始化参数名,得到相应的参数值并打印
              while (paramNames.hasMoreElements()) {
                 String name = paramNames.nextElement();
                 String value = context.getInitParameter(name);
                 out.println(name + ": " + value);
                   out.println("<br>");
              }
         }
         public void doPost(HttpServletRequest request,
                           HttpServletResponse response)
                 throws ServletException, IOException {
               this.doGet(request, response);
         }
     }

2、实现多个Servlet对象共享数据

由于一个Web应用中的所有Servlet共享同一个ServletContext对象,因此ServletContext对象的域属性可以被该Web应用中的所有Servlet访问。在ServletContext接口中定义了分别用于增加、删除、设置ServletContext域属性的四个方法,如表1所示。

表1 ServletContext接口的方法

方法说明 功能描述
Enumeration getAttributeNames() 返回一个Enumeration对象,该对象包含了所有存放在ServletContext中的所有域属性名
Object getAttibute(String name) 根据参数指定的属性名返回一个与之匹配的域属性值
void removeAttribute(String name) 根据参数指定的域属性名,从ServletContext中删除匹配的域属性
void setAttribute(String name,Object obj) 设置ServletContext的域属性,其中name是域属性名,obj是域属性值
          ServletContext context = this.getServletContext();
            // 通过setAttribute()方法设置属性值
           context.setAttribute("data", "this servlet save data");

3、读取Web应用下的资源文件

ServletContext接口中用于获取资源路径的相关方法,具体如下:

表2 ServletContext接口的常用方法

方法说明 功能描述
Set getResourcePaths(String path) 返回一个Set集合,集合中包含资源目录中子目录和文件的路径名称。参数path必须以正斜线(/)开始,指定匹配资源的部分路径
String getRealPath(String path) 返回资源文件在服务器文件系统上的真实路径(文件的绝对路径)。参数path代表资源文件的虚拟路径,它应该以正斜线开始(/)开始,“/”表示当前Web应用的根目录,如果Servlet容器不能将虚拟路径转换为文件系统的真实路径,则返回null
URL getResource(String path) 返回映射到某个资源文件的URL对象。参数path必须以正斜线(/)开始,“/”表示当前Web应用的根目录
InputStream getResourceAsStream(String path) 返回映射到某个资源文件的InputStream输入流对象。参数path传递规则和getResource()方法完全一致

编写读取itcast.properties资源文件:

     package cn.itcast.chapter04.servlet;
     import java.io.*;
     import java.util.Properties;
     import javax.servlet.*;
     import javax.servlet.http.*;
     public class TestServlet06 extends HttpServlet {
         public void doGet(HttpServletRequest request,
                          HttpServletResponse response)
                 throws ServletException, IOException {
              response.setContentType("text/html;charset=utf-8");
             ServletContext context = this.getServletContext();
             PrintWriter out = response.getWriter();
             InputStream in = context
             .getResourceAsStream("/WEB-
                                 INF/classes/itcast.properties");
             Properties pros = new Properties();
             pros.load(in);
             out.println("Company=" + pros.getProperty("Company") + "
                      <br>");
             out.println("Address=" + pros.getProperty("Address") + "
                      <br>");
     }
         public void doPost(HttpServletRequest request,
                           HttpServletResponse response)
                 throws ServletException, IOException {
             this.doGet(request, response);
         }
     }

ServletConfig接口

1.概念

Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中,通过调用init(ServletConfig cofig)方法将ServletConfig对象传递给Servlet。

2.ServletConfig的常用方法

表1 ServletConfig接口的常用方法

方法说明 功能描述
String getInitParameter(String name) 根据初始化参数名返回对应的初始化参数值
Enumeration getInitParameterNames() 返回一个Enumeration对象,其中包含了所有的初始化参数名
ServletContext getServletContext() 返回一个代表当前Web应用的ServletContext对象
String getServletName() 返回Servlet的名字,即web.xml中<servlet-name>元素的值
     package cn.itcast.chapter04.servlet;
     import java.io.*;
     import javax.servlet.*;
     import javax.servlet.http.*;
     public class TestServlet02 extends HttpServlet {
         protected void doGet(HttpServletRequest request,
                 HttpServletResponse response) throws ServletException,
     IOException {
             PrintWriter out = response.getWriter();
              // 获得ServletConfig对象
             ServletConfig config = this.getServletConfig();
             // 获得参数名为encoding对应的参数值
             String param = config.getInitParameter("encoding");
              out.println("encoding="+param);
         }
         protected void doPost(HttpServletRequest request,
                 HttpServletResponse response) throws ServletException,
     IOException {
             this.doGet(request, response);
         }
     }

到此这篇关于Java ServletContext与ServletConfig接口使用教程的文章就介绍到这了,更多相关Java ServletContext与ServletConfig内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JavaWeb ServletConfig作用及原理分析讲解

    目录 基本概念 servlet 关系 servletconfig 作用 使用 获取 config 基础信息 携带信息 基本概念 servlet 关系 servlet 和 servletconfig 是一对一的关系: servletconfig 作用 它存储 web.xml 内的 servlet 标签内的所有信息: tomcat 在解析 web.xml 中的标签时,就会自动把 servlet 标签包装到 servletconfig 里面去: 使用 获取 config 基础信息 首先我们手动创建一个

  • JavaWeb Servlet生命周期细枝末节处深究

    目录 生命周期速览 优先级 servlet生命周期完整过程 servlet 所有核心方法解析 无参构造方法 init service destroy 适配器模式去除冗余接口 GenericServlet.java 生命周期速览 优先级 servlet 的声明周期由 tomcat 服务器自行管辖,程序员无法插手: 只要没有通过 url 访问 servlet,那他就永远不会先行实例化: 除非我们通过在 web.xml 的 servlet 标签下加上以下标签,即可立即实例化: </load-on-st

  • Javaweb动态开发最重要的Servlet详解

    目录 一.导入方式 二.Servlet生命周期 三.继承HttpServlet GET&POST 四.Servlet相关性质(八股文) 五.Request&Response 1.HttpServletRequest 2.HttpServletResponse 六.请求转发模型 七.请求重定向 一.导入方式 由于jdk中没有servlet对应的jar包,所以需要咱们手动引入,有两种方式: 1.可以采取向lib目录导入servlet-api的jar包的方式 2.在maven项目中设置如下坐标,

  • JavaWeb通过IDEA配置Servlet操作流程详解

    目录 创建项目 引入外部 jar 安装 mysql-connector 编写 servlet 文件 编写 student.html 文件 配置 tomcat 服务器 运行并查看服务器 创建项目 首先创建一个空项目!!!注意是空项目!!! 点击 文件->新建->新模块 ,新建一个名称为 servlet02 的模块(注意该模块的生成位置应该在我们刚刚新建的空项目下面!!!) 之后右键点击新模块 servlet02,选择 “添加框架支持” 勾选 “web 应用程序” ,之后直接点击完成即可自动生成

  • Java中Servlet的生命周期详解

    目录 Web基础和HTTP协议 什么是Servlet Servlet的生命周期 Web基础和HTTP协议 ┌─────────┐ ┌─────────┐ │░░░░░░░░░│ │O ░░░░░░░│ ├─────────┤ ├─────────┤ │░░░░░░░░░│ │ │ ├─────────┤ │ │ │░░░░░░░░░│ └─────────┘ └─────────┘ │ request 1 │ │─────────────────────>│ │ request 2 │ │───

  • Java前端开发之HttpServletRequest的使用

    目录 接口详解 搭设基本测试环境 取回 keys 取回 values 请求域与应用域 应用域对象 请求域对象 跳转与转发 转发一次请求 转发要求 转发区别 request 常见方法 设置字符集 几种常见属性获取方式 接口详解 搭设基本测试环境 web 下新建 reg.html 文件,用作注册网页: 这里使用了 form 表单,注意提交的 action 是 根目录 + servlet的url: 请求方式我们使用 post <!DOCTYPE html> <html lang="e

  • Java编程调用微信接口实现图文信息推送功能

    本文实例讲述了Java编程调用微信接口实现图文信息等推送功能.分享给大家供大家参考,具体如下: Java调用微信接口工具类,包含素材上传.获取素材列表.上传图文消息内的图片获取URL.图文信息推送. 微信图文信息推送因注意html代码字符串中将双引号(")替换成单引号('),不然信息页面中包含图片将无法显示且图片后面的内容也不会显示 官方文档:http://mp.weixin.qq.com/wiki/home/ StringBuilder sb=new StringBuilder(); sb.a

  • 详解Java 10 var关键字和示例教程

    关键要点 Java 10引入了一个闪亮的新功能:局部变量类型推断.对于局部变量,现在可以使用特殊的保留类型名称"var"代替实际类型. 提供这个特性是为了增强Java语言,并将类型推断扩展到局部变量的声明上.这样可以减少板代码,同时仍然保留Java的编译时类型检查. 由于编译器需要通过检查赋值等式右侧(RHS)来推断var的实际类型,因此在某些情况下,这个特性具有局限性,例如在初始化Array和Stream的时候. 如何使用新的"var"来减少样板代码. 在本文中,

  • Java带default方法接口的应用示例

    本文实例讲述了Java带default方法接口的应用.分享给大家供大家参考,具体如下: 一 带default方法接口的实现 1 代码 interface InterfaceA // 定义一个接口 { public static String INFO = "static final." ; // 全局常量 public void print() ; // 抽象方法 default public void otherprint() // 带方法体的默认方法 { System.out.pr

  • java 中maven pom.xml文件教程详解

    maven pom.xml文件教程详解,具体内容如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.x

  • java整合SSM框架的图文教程

    使用Myeclipse搭建maven项目 准备工作 安装maven 官网下载安装(http://maven.apache.org/) 配置环境变量 配置完后,使用命令行输入mvn -version查看是否配置成功,出现以下界面表示配置成功. 2. 在MyEclipse中配置maven 打开MyEclipse2015----点击菜单栏Window---选项栏Preference ,搜索Maven,进入Installations,点击Add引入安装的maven. 进入User Setting,设置G

  • Java swing 图像处理多种效果实现教程

    项目记录: 1.图像原理 通常图像都是2D,对一副图像,可以看做其宽w*高h的一个二维数组, 即 图像=int[w][h],在w和h位置的每一个 int 值,就是这个点的像素值. 图像处理的本质是:对代表图像二维数组中的值进行重新计算. 2.思路: 将一张图片转化成一个int型癿二维数组 对于每一个像素点大小和颜色进行计算达到图像处理的效果. 在画笔中设置好颜色,填充形状然后将新的图片画出. 3.实现效果 获取像素点方法,首先利用文件imageIO读取图片,然后根据图片长宽进行遍历得到每个像素点

  • Java多线程工具CompletableFuture的使用教程

    目录 前言 Future的问题 CompletableFuture应运而生 使用方式 基本使用-提交异步任务 处理上个异步任务结果 对两个结果进行选用-acceptEither 对两个结果进行合并-thenCombine, thenAcceptBoth 异常处理 案例 大量用户发送短信|消息 并发获取商品不同信息 问题 thenRun和thenRunAsync有什么区别 handle和exceptional有什么区别 最后 前言 Future的问题 写多线程程序的时候,可以使用Future从一个

  • Golang接口使用教程详解

    目录 前言 一.概述 二.接口类型 2.1 接口的定义 2.2 实现接口的条件 2.3 为什么需要接口 2.4 接口类型变量 三.值接收者和指针接收者 3.1 值接收者实现接口 3.2 指针接收者实现接口 四.类型与接口的关系 4.1 一个类型实现多个接口 4.2 多种类型实现同一接口 五.接口嵌套 六.空接口 七.类型断言 总结 前言 go语言并没有面向对象的相关概念,go语言提到的接口和java.c++等语言提到的接口不同,它不会显示的说明实现了接口,没有继承.子类.implements关键

  • java中的interface接口实例详解

     java中的interface接口实例详解 接口:Java接口是一些方法表征的集合,但是却不会在接口里实现具体的方法. java接口的特点如下: 1.java接口不能被实例化 2.java接口中声明的成员自动被设置为public,所以不存在private成员 3.java接口中不能出现方法的具体实现. 4.实现某个接口就必须要实现里面定义的所有方法. 接下来看一个实现接口的案例: package hello;   interface competer{ //定义接口 void set_comp

  • Java编程通过list接口实现数据的增删改查代码示例

    List接口常用的实现ArrayList. 常用方法:add(Object obj)  增加一个元素                      add(int index,Object obj) 在指定索引位置添加元素                      remove(int index) 删除指定位置的元素                      remove(Objiect)  从列表中删除元素                      set(index,Object) 修改指定位

随机推荐