ServletConfig

本文阅读 4 分钟
首页 代码,Java 正文

JavaWeb系列教程
JavaWeb—Servlet
模拟Servlet本质
使用IDEA开发Servlet程序
Servlet对象的生命周期
适配器(GenericServlet)改造Servlet
ServletConfig
Servlet–ServletContext
HTTP协议,get和post的区别
web站点欢迎页
一篇学会HttpServletRequest
<font color="orange" size="4"> 如果大家觉得有帮助的话,不妨动动小手,点赞收藏一波,也方便后面的复习哈
在这里插入图片描述</font>

img

ServletConfig 是一个接口(jakarta.Servlet的一个接口) ServletConfig 是Servlet规范的一员 全称:jakarta.servlet.ServletConfig Servlet对象的配置信息对象。 ServletConfig对象中封装了标签中的配置信息。(web.xml文件中servlet的配置信息) 每个serlvet类的实例都有且只有一个对应的servletConfig对象

public class org.apache.catalina.core.StandardWrapperFacade

结论:Tomcat服务器实现了ServletConfig这个接口-----WEB服务器实现了这个接口 不同服务器有不同的实现 思考:如果把Tomcat服务器换成jetty服务器,输出ServletConfig对象的时候,还是这个结果吗? 不一定一样,包名类名可能和Tomcat服务器不一样,但是他们都实现了ServletConfig这个规范

  • Tomcat服务器调用Servlet对象的init方法的时候需要传一个ServletConfig对象的参数给init方法。
    - Tomcat服务器(WEB服务器)创建了ServletConfig对象 在创建Servlet对象的时候,同时创建了ServletConfig对象
    - Servlet对象是Tomcat服务器创建,并且ServletConfig对象也是Tomcat服务器创建。并且默认情况下,他们都是在用户发送第一次请求的时候创建。
  • Tomcat服务器调用Servlet对象的init方法的时候需要传一个ServletConfig对象的参数给init方法。ServletConfig接口的作用

Config是Configuration单词的缩写 ServletConfig对象翻译为:Servlet对象的配置信息对象 一个Servlet对象就有一个配置信息对象

web.xml文件中标签中的配置信息

public String getInitParameter(String name); // 通过初始化参数的name获取value
<servlet>
        <servlet-name>configTestServlet</servlet-name>
        <servlet-class>com.bjpowernode.servlet.ConfigTestServlet</servlet-class>
        <!--这里可以配置servlet对象的初始化信息 -->
        <init-param>
            <param-name>driver</param-name>
            <param-value>com.mysql.cj.jdbc.Driver</param-value>
        </init-param>
       
    </servlet>
    <servlet-mapping>
        <servlet-name>configTestServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>

String value=config.getInitParameter("driver); 通过这个方法,传入name,可以获取初始化配置信息的value

public Enumeration<String> getInitParameterNames(); // 获取所有的初始化参数的name
public ServletContext getServletContext(); // 获取ServletContext对象
public String getServletName(); // 获取当前Servlet的name
package com.bjpowernode.servlet;

import jakarta.servlet.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
 /
 * @author zengyihong
 * @create 2022--03--06 18:39
 */
public class ConfigTestServlet extends GenericServlet { 
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 

        response.setContentType("text/html");
        PrintWriter out=response.getWriter();

        ServletConfig config = this.getServletConfig();
        //org.apache.catalina.core.StandardWrapperFacade@778f4ce
        out.println("ServletConfig对象:"+config);
        out.println("<br>");

        String configServletName = config.getServletName();
        out.println("<servlet-name>"+configServletName+"</servlet-name>");
//通过ServletConfig对象中的方法可以获取web.xml文件中的初始化参数配置信息
        //java.util.Enumeration<java.lang.String> getInitParameterNames() 获取所有初始化参数name
//java.lang.String getInitParameter(java.lang.String name) 通过初始化参数的name,来获取value
        Enumeration<String> initParameterNames = config.getInitParameterNames();//获取对应name的value
        //遍历集合
        out.println("<br>");
        while (initParameterNames.hasMoreElements()){ 
            String s = initParameterNames.nextElement();
            String value = config.getInitParameter(s);

            out.println(s+"----->"+value);
            out.println("<br>");
        }
        //实际上获取一个Servlet对象的初始化参数,可以不用获取ServletConfig对象
        //因为适配器有相关方法
        Enumeration<String> names = this.getInitParameterNames();
        while (names.hasMoreElements()){ 
            String s = names.nextElement();
            System.out.println(s+"---->"+this.getInitParameter(s));
            //out.println("<br>");
        }

        //怎么获取ServletContext对象

        //第一种方式通过ServletConfig对象来获取ServletContext对象
        ServletContext application=config.getServletContext();
        //输出
        //org.apache.catalina.core.ApplicationContextFacade@bb8cbf0
        out.print("<br>"+application);
        //第二种:通过this来获取ServletContext对象,注意:this必须是继承GenericServlet
        ServletContext application2 = this.getServletContext();
        //org.apache.catalina.core.ApplicationContextFacade@bb8cbf0
        out.print("<br>"+application2);


    }
}

<font size="5" color="purple">希望得到大家的支持在这里插入图片描述</font>

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://zengyihong.blog.csdn.net/article/details/123355030
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复