首页 > 编程语言 >Java登陆第二十九天——ServletConfig和ServletContext

Java登陆第二十九天——ServletConfig和ServletContext

时间:2023-12-23 22:33:25浏览次数:31  
标签:Java name param value ServletContext ServletConfig String

ServletConfig

ServletConfig是web.xml中,Servlet的初始化参数对象(每个Servlet都有一个ServletConfig对象)

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--
    每一个Servlet都可以配置多个初始化参数    
    -->
   <servlet>
       <servlet-name>Test3</servlet-name>
       <servlet-class>com.example.JavaWeb.TestServlet3</servlet-class>

        <!-- 初始化参数定义在Servlet标签之内 -->
       <init-param>
           <param-name>key</param-name>
           <param-value>value</param-value>
       </init-param>

   </servlet>
    <servlet-mapping>
        <servlet-name>Test3</servlet-name>
        <url-pattern>/Test3</url-pattern>
    </servlet-mapping>

</web-app>

查看ServletConfig源码

Servlet在初始化阶段,Tomcat会自动生成ServletConfig对象并传入init(ServletConfig config)方法

ServletConfig是一个接口

public interface ServletConfig {
    String getServletName();

    ServletContext getServletContext();

    String getInitParameter(String var1);

    Enumeration<String> getInitParameterNames();
}
方法名 描述
String getServletName() 获取Servlet名称(web.xml中servlet-name)
ServletContext getServletContext() 获取ServletContext对象(马上就介绍)
String getInitParameter(String var1) 根据初始化参数名获取值(web.xml中param-name)
Enumeration getInitParameterNames() 获取初始化参数迭代器(早期的迭代器就是Enumeration)

读取初始化参数栗子

web.xml就是上面那个

TestServlet3

public class TestServlet3 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();//GenericServlet类提供的方法

        Enumeration<String> es = servletConfig.getInitParameterNames();//早期的迭代器
        while (es.hasMoreElements()) {
            String s = es.nextElement();
            System.out.println("param-name:"+s);
            System.out.println("param-value:"+getInitParameter(s));
        }
    }
}

客户端请求URL:http://localhost:8080/JavaWeb_war_exploded/Test3

//控制台输出
param-name:key
param-value:value

在注解中设置初始化参数

TestServlet3

@WebServlet(
        urlPatterns = "/Test3",
        initParams = {@WebInitParam(name = "key",value = "value")}
)
public class TestServlet3 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();//GenericServlet类提供的方法

        Enumeration<String> es = servletConfig.getInitParameterNames();//早期的迭代器
        while (es.hasMoreElements()) {
            String s = es.nextElement();
            System.out.println("param-name:"+s);
            System.out.println("param-value:"+getInitParameter(s));
        }
    }
}

客户端请求URL:http://localhost:8080/JavaWeb_war_exploded/Test3

//控制台输出
param-name:key
param-value:value

ServletContext

  • ServletContext是web.xml中,项目的初始化参数对象(每个项目仅有一个初始化参数对象)

  • ServletConfig是web.xml中,Servlet的初始化参数对象(每个Servlet都有一个ServletConfig对象)

image

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <context-param>
        <param-name>key</param-name>
        <param-value>value</param-value>
    </context-param>
</web-app>

可以通过ServletConfig的getServletContext()方法获取ServletContext

@WebServlet(
        urlPatterns = "/Test3",
        initParams = {@WebInitParam(name = "key",value = "value")}
)
public class TestServlet3 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();//GenericServlet类提供的方法

        Enumeration<String> es = servletConfig.getInitParameterNames();//早期的迭代器
        while (es.hasMoreElements()) {
            String s = es.nextElement();
            System.out.println("param-name:"+s);
            System.out.println("param-value:"+getInitParameter(s));
        }

        System.out.println("==============================");
        ServletContext servletContext = getServletConfig().getServletContext();
        Enumeration<String> ess = servletContext.getInitParameterNames();
        while (ess.hasMoreElements()) {
            String s = ess.nextElement();
            System.out.println("context-name:"+s);
            System.out.println("context-value:"+getInitParameter(s));
        }
    }
}

客户端请求URL:http://localhost:8080/JavaWeb_war_exploded/Test3

//控制台输出
param-name:key
param-value:value
==============================
context-name:key
context-value:value

标签:Java,name,param,value,ServletContext,ServletConfig,String
From: https://www.cnblogs.com/Ocraft/p/17923659.html

相关文章

  • centos配置JAVA_HOME
    下载jdk从华为云镜像下载openjdk17curl-oopenjdk-17_linux-x64_bin.tar.gzhttps://mirrors.huaweicloud.com/openjdk/17/openjdk-17_linux-x64_bin.tar.gz%Total%Received%XferdAverageSpeedTimeTimeTimeCurrent......
  • JavaScript手搓"防抖"优化代码
    一、为什么要防抖就好比我们想象一个场景:当我们在使用我们的页面,我们页面有一个提交数据的按钮!我们每次点击提交按钮,都会向我们的后端服务器发送一个请求!接下来我们来构建一下这样一个简单的页面!<buttonid="submit">提交</button><script>letsub=document.getEle......
  • java接口自动化系列(05):测试数据注入到测试方法
     注入测试数据这里我们是数据驱动方式,把数据注入到测试方法上一篇我们已经把用例数据封装到对象并放到list中,这里我们把用例对象list中的对象分别放到Object类型的一维数组中,再把一维数组添加到新对象类型一维数组的list中然后我们在测方法中打印获取到的用例数据,看获取到的......
  • Java登陆第二十九天——Servlet继承关系,service和doGet的区别
    Servlet继承关系树:Servlet接口查看Servlet源码publicinterfaceServlet{voidinit(ServletConfigvar1)throwsServletException;ServletConfiggetServletConfig();voidservice(ServletRequestvar1,ServletResponsevar2)throwsServletException,I......
  • Java数组常见的几种排序。
    publicclasscode2{publicstaticvoidmain(String[]args){int[]x={37,89,23};for(intz=0;z<x.length-1;z++){intminIndex=z;for(inti=z+1;i<x.length;i++){if(......
  • 一文让你玩转 Java 8 Stream
    Java8中的StreamAPI是一个强大的处理数据的新特性,它提供了一种声明式、高效且易于并行化的数据处理方式。以下是一些Stream的主要特性和常用场景:主要特性:延迟执行(LazyEvaluation):Stream不会立即执行任何操作,而是在需要时才进行计算。这有助于提高性能和资源效率。函数式编......
  • Java语言学习第一步:JDK下载与安装教程(超详细)
    一、简介JRE(JavaRuntimeEnvironment)Java程序运行时的环境,包含JVM和运行时所需的核心类库。若想运行一个已有的Java程序,只需要安装JRE即可。JDK(JavaDevelopmentKit)Java程序开发工具包,包含JRE和开发人员使用的工具。其中的开发工具:编译工具(javac.exe)和运行工具(java.exe......
  • Java Spring Boot 集成 elasticsearch6.8.x
    在全文搜索领域,毫无疑问,当下elasticsearch应用广泛,其优势自不必说,凭借全文快速搜索,可以在短时内实现大数据量的查询。今天学习下在SpringBoot中集成elasticsearch开发,这里主要展示可以怎么用,至于开发人员向通过ElasticsearchORM封装,也可以参考下面的示例。环境:Sprin......
  • JAVA面试心得
    当参加Java面试时,了解一些常见的问题和准备相应的答案是至关重要的。在我的面试经验中,我总结出了一些有助于成功的关键因素。以下是我在Java面试中的一些心得:1.深入理解Java基础知识在面试中,Java的基础知识是至关重要的。包括面向对象编程(OOP)的概念,如封装、继承和多态,以及Java的基......
  • 【开源】基于JAVA的超市商品管理系统
    一、摘要1.1简介随着社会的发展,人们的生活水平不断地提高,超市遍布城市各个社区,它们繁荣了社会经济,也便利了人们的生活,是人们生活中不可缺少的一部份。顾客需要非常方便的找到自己想要的商品,超巿商品库存、摆放、价格方面的工作,需要一个稳定、可靠的管理系统帮助寻找管理商品的位置......