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);} }

相关内容

热门资讯

“黑马”县的“金”点子 转自:中国银行保险报网□崔艳丽 本报记者 章丽铃长久以来,安徽省滁州市凤阳县因“朱元璋故里”“小岗村...
匠心守护绿茵烽火 智慧赋能城市...   初夏的江苏,绿茵场上烽火正燃。  由江苏省体育局与江苏省各设区市政府联合主办的江苏省城市足球联赛...
半月4家未盈利企业IPO获受理... 导读:虽然科创板、创业板已经开始受理未盈利企业IPO,但对于多数未盈利企业而言,港交所上市的可能性仍...
求一些恋爱养成游戏 求一些恋爱养成游戏翼之梦论坛知道吧?进去注册个号,有一个PC中文版的版块,进去什么都有。这个游戏不到...
为什么山上有老虎? 为什么山上有老虎?因为山上比较便于躲藏,也有各种小动物,是比较适合此类猛兽生活的环境
<<济南的冬天&g... <<济南的冬天>>板书设计有谁可以告诉我的板书设计在哪里可以找到?知到的朋友们请回答我好吗? 济...
带丈的四字成语 带丈的四字成语 火冒三丈软红十丈日落千磨颂迹丈尺水丈波百丈竿头食必方丈巾帼丈夫女中丈夫食前方丈白...
淮南:共同切磋比拼 技能大赛展... (转自:淮南日报)共同切磋比拼 技能大赛展风采“各位评委老师好,我们本次的参赛主题叫做《檐角飞云处 ...
幸福从天而降电视剧结局 幸福从天而降电视剧结局  1、《幸福从天而降》结局:天蓝用自己的经历告诫天晴,终于让天判孝晴打消了离...
51比50,副总统万斯投下关键... 转自:中安在线当地时间7月1日,美国国会参议院通过全面减税和支出法案,并提交众议院。美国参议院当天上...