day5 ServletConfig接口详解
创始人
2024-05-29 10:41:39
0

文章目录

    • ServletConfig详解
    • ServletTestServlet
    • ServletTestServlet2

ServletConfig详解

  • 什么是ServletConfig?

    • Servlet对象的配置信息对象。
    • ServletConfig对象中封装了标签中的配置信息。(web.xml文件中servlet的配置信息)
  • 一个Servlet对应一个ServletConfig对象。

  • Servlet对象是Tomcat服务器创建,并且ServletConfig对象也是Tomcat服务器创建。并且默认情况下,他们都是在用户发送第一次请求的时候创建。

  • Tomcat服务器调用Servlet对象的init方法的时候需要传一个ServletConfig对象的参数给init方法。

  • ServletConfig接口的实现类是Tomcat服务器给实现的。(Tomcat服务器说的就是WEB服务器。)

  • ServletConfig接口有哪些常用的方法?

    • public String getInitParameter(String name); // 通过初始化参数的name获取value
      public Enumeration getInitParameterNames(); // 获取所有的初始化参数的name
      public ServletContext getServletContext(); // 获取ServletContext对象
      public String getServletName(); // 获取Servlet的name
      
    • 以上方法在Servlet类当中,都可以使用this去调用。因为GenericServlet实现了ServletConfig接口。

ServletTestServlet

package com.bjpowernode.javaweb.servlet;import jakarta.servlet.*;import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;/*** ServletConfig*   1. ServletConfig是什么?*      jakarta.servlet.ServletConfig*      显然ServletConfig是Servlet规范中的一员。*      ServletConfig是一个接口。(jakarta.servlet.Servlet是一个接口。)*   2. 谁去实现了这个接口呢? WEB服务器实现了*      public class org.apache.catalina.core.StandardWrapperFacade implements ServletConfig {}*      结论:Tomcat服务器实现了ServletConfig接口。*      思考:如果把Tomcat服务器换成jetty服务器,输出ServletConfig对象的时候,还是这个结果吗?*          不一定一样,包名类名可能和Tomcat不一样。但是他们都实现了ServletConfig这个规范。*   3. 一个Servlet对象中有一个ServletConfig对象。(Servlet和ServletConfig对象是一对一。)*      100个Servlet,就应该有100个ServletConfig对象。*   4. ServletConfig对象是谁创建的?在什么时候创建的?*      Tomcat服务器(WEB服务器)创建了ServletConfig对象。*      在创建Servlet对象的时候,同时创建ServletConfig对象。*   5. ServletConfig接口到底是干啥的?有什么用呢?*      Config是哪个单词的缩写?*          Configuration*      ServletConfig对象被翻译为:Servlet对象的配置信息对象。*      一个Servlet对象就有一个配置信息对象。*      两个Servlet对象就有两个配置信息对象。**   6. ServletConfig对象中到底包装了什么信息呢?*      *         configTest*         com.bjpowernode.javaweb.servlet.ConfigTestServlet*     *     ServletConfig对象中包装的信息是:*          web.xml文件中标签的配置信息。**     Tomcat小猫咪解析web.xml文件,将web.xml文件中标签中的配置信息自动包装到ServletConfig对象中。**   7. ServletConfig接口中有哪些方法?*      *         configTest*         com.bjpowernode.javaweb.servlet.ConfigTestServlet*         *         *             driver*             com.mysql.cj.jdbc.Driver*         *         *             url*             jdbc:mysql://localhost:3306/bjpowernode*         *         *             user*             root*         *         *             password*             root1234*         *     *     以上标签中的是初始化参数。这个初始化参数信息会自动被小猫咪封装到ServletConfig对象当中。*  8. ServletConfig接口中有4个方法:*      第1个方法:*          public String getInitParameter(String name);*      第2个方法:*          public Enumeration getInitParameterNames();*      第3个方法:*          public ServletContext getServletContext();*      第4个方法:*          public String getServletName();**      以上的4个方法,在自己编写的Servlet类当中也可以使用this去调用。(这个Servlet继承了GenericServlet)*/
public class ConfigTestServlet extends GenericServlet {@Overridepublic void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();// 获取ServletConfig对象ServletConfig config = this.getServletConfig();// 输出该对象// org.apache.catalina.core.StandardWrapperFacade@aea0d43out.print("ServletConfig对象是:" + config.toString());out.print("
");// 获取String servletName = config.getServletName();out.print(""+servletName+"");out.print("
");// 通过ServletConfig对象的两个方法,可以获取到web.xml文件中的初始化参数配置信息。// java.util.Enumeration getInitParameterNames() 获取所有的初始化参数的nameEnumeration initParameterNames = config.getInitParameterNames();// 遍历集合while(initParameterNames.hasMoreElements()) { // 是否有更多元素String parameterName = initParameterNames.nextElement(); // 取元素String parameterVal = config.getInitParameter(parameterName); // 通过name获取valueout.print(parameterName + "=" + parameterVal);out.print("
");}// java.lang.String getInitParameter(java.lang.String name) 通过初始化参数的name获取value/*String driver = config.getInitParameter("driver");out.print(driver);*/// 实际上获取一个Servlet对象的初始化参数,可以不用获取ServletConfig对象。直接通过this也可以。Enumeration names = this.getInitParameterNames();while(names.hasMoreElements()){String name = names.nextElement();String value = this.getInitParameter(name);// 打印到后台System.out.println(name + "=" + value);}// 怎么获取ServletContext对象呢?// 第一种方式:通过ServletConfig对象获取ServletContext对象。ServletContext application = config.getServletContext();// 输出out.print("
" + application); //org.apache.catalina.core.ApplicationContextFacade@19187bbb// 第二种方式:通过this也可以获取ServletContext对象。ServletContext application2 = this.getServletContext();out.print("
" + application2); //org.apache.catalina.core.ApplicationContextFacade@19187bbb} }

ServletTestServlet2

package com.bjpowernode.javaweb.servlet;import jakarta.servlet.*;import java.io.IOException;
import java.io.PrintWriter;public class ConfigTestServlet2 extends GenericServlet {@Overridepublic void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();// 获取ServletConfig对象ServletConfig config = this.getServletConfig();// 输出// org.apache.catalina.core.StandardWrapperFacade@287af686out.print("ServletConfig对象:" + config);String value = config.getInitParameter("key");out.print("
" + value);} }

相关内容

热门资讯

这个周末邂逅人艺之友 一起“再... 【这个周末#邂逅人艺之友# 一起“再造时光”】5月10日至11日,北京人民艺术剧院联合东城区委区政府...
它博会纳新采购节成交额破350... 转自:上观新闻如何通过创新项目为参展商开辟增量新渠道,是TOPS它博会始终关注的核心问题之一。去年T...
龙江交投:助力龙江旅游经济由“... 新华信用杭州5月11日电(王思凝)作为2025世界品牌莫干山大会的重要组成部分,以“促消费 树品牌 ...
女演员陷“辱华”争议,疑被新剧... 5月10日,女演员李凯馨相关话题连上热搜。日前,一名自称是李凯馨前助理的网友在微博爆料。在其曝光的录...
《三餐四季》广东篇今晚开播:食... 每当人们谈到广东,总有一个绕不开的话题——粤菜。在这个美食天堂里,藏着无数让人念念不忘的老味道。央视...
既当“护企卫士” 也做“贴心管... 转自:中国警察网从精准打击民营企业内部“蛀虫”到出台相关政策打通惠企服务“最后一公里”,近年来,上海...
当事人回应上门做饭月薪2万质疑... 转自:JSTV荔枝视频 【#当事人回应上门做饭月薪2万质...
今年秋天,中国将隆重纪念中国人... 来源:新华社2025年5月7日至10日,国家主席习近平应邀对俄罗斯进行国事访问并出席纪念苏联伟大卫国...
“下辈子还要做妈妈的女儿” “今天是母亲节,让我们一同重温江西革命史上的那些无私伟大的“革命母亲”。”作者 | 何丹凤题图 | ...
政商学界共话中欧合作前景:探索... 经济观察报 记者 陈姗5月9日,在“中欧建交50周年论坛”上,来自中国和欧盟的政治家、商界领袖、名师...
王涵:资本市场改革要为创新企业...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 兴业证券股份有限公司...
美股巨震后迎来5月魔咒,特朗普...   4月是美股近5年来最动荡的月份。  刚过去的4月是美股近5年来最动荡的月份。华尔街股谚有“卖在五...
为什么选出美国籍教皇?梵蒂冈消... ► 文 观察者网 陈思佳当地时间5月8日,来自美国的枢机主教罗伯特·普雷沃斯特当选第267任天主教罗...
母亲节 | 有爱莫迟 转自:人民政协报母亲节又到了!想想母亲离开我已经五年了,思念之情油然而生。母亲犹如一朵永远不败的鲜花...
他们围在一起给特朗普打电话,随... 乌克兰外交部长瑟比加10日下午在社交媒体发文说,乌方准备自12日起实施至少30天的全面无条件停火。瑟...
山西鹏飞集团有限公司等13家企... 新华信用杭州5月11日电(徐淑明)作为2025世界品牌莫干山大会的重要组成部分,以“促消费 树品牌 ...
再官宣丨飞天之夜黄小西音乐盛典... 惊喜不断 “乐”享不停!继「黄小西」T次方音乐与艺术节及首批阵容官宣后,我们再次带来重磅消息:由总台...
中芯国际:指引大“翻车”,“国... 中芯国际(0981.HK/688981.SH)北京时间2025年5月8日晚,港股盘后发布2025年度...
平谷快递小哥听到微弱呼救声,被... 转自:北京日报客户端“大姐,您别怕,我马上报警救您出来!”5月5日下午3点40分,顺丰快递小哥高海在...
男子得物买52瓶古驰香水包装是... 转自:河南商报 【#男子得物买52瓶古驰香水包装是假的#...