ServletConfig

1 什么是ServletConfig#

1. 是Servlet程序的配置信息类
2. Servlet和ServletConfig对象都是由Tomcat负责创建
3. Servlet程序是第一次访问的时候创建的,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象

2 ServletConfig#

  • 三大作用

    1. 可以获得Servlet程序的别名(servlet-name)的值
    2. 获取初始化参数init-param
    3. 获取ServletContext对象
    
  • 编码

    Web.xml

    <servlet>
      <servlet-name>MyServlet_03</servlet-name>
      <servlet-class>com.dong.servlet.MyServlet_03</servlet-class>
      <!--初始化参数-->
      <init-param>
        <param-name>name</param-name>
        <param-value>张三</param-value>
      </init-param>
    </servlet>
    <servlet-mapping>
      <servlet-name>MyServlet_03</servlet-name>
      <url-pattern>/test3</url-pattern>
    </servlet-mapping>
    

    Servlet:

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进入方法!");
        //获取Servlet的别名
        System.out.println(getServletConfig().getServletName());
        //获取初始化参数的值
        System.out.println(getServletConfig().getInitParameter("name"));
        //获取ServletContext对象
        System.out.println(getServletConfig().getServletContext());
    }
    

3. 细节#

  • getServletConfig

    在HttpServlet的继承类中,可以直接获取ServletContext对象,通过 `getServletContext()` 方法,也可以通过ServeletConfig获取
    因为HttpServlet继承自GenericServlet, 而GenericServlet实现了ServletConfig接口, 所以, 通过继承HttpServlet而来的类中, 都会存在ServletConfig
    

    源码:

    public ServletContext getServletContext() {
        ServletConfig sc = this.getServletConfig();
        if (sc == null) {
            throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized"));
        } else {
            return sc.getServletContext();
        }
    }
    
  • init

    任何继承GenericServlet的类的int方法中,都要调用父类的int方法.这是因为在int方法中传递着ServletConfig实例,我们都知道GenericServlet实现了ServletConfig实例
    
     @Override
     public void init(ServletConfig servletConfig) throws ServletException {
         super.init(config);
     }
    

作者:苏无及

出处:https://www.cnblogs.com/suwuji/p/16421419.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   苏无及  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示