Servlet---ServletConfig类使用介绍

目录

一、ServletConfig类使用介绍

   1.ServletConfig类的三大作用

二、ServletContext类

   1.什么是ServletContext?

   2.什么是域对象

  3.ServletContex类的四个作用

     ①获取web.xml中配置的上下文参数context-param

     ②获取当前的工程路径,格式:/工程路径

     ③获取工程部署后在服务器硬盘上的绝对路径

     ④像Map一样存取数据


一、ServletConfig类使用介绍

ServletConfig类从类名来看,就知道是Servlet程序的配置信息类

Servlet程序和ServletConfig对象都是由Tomcat负责创建,我们负责使用

Servlet程序默认是第一次访问的时候创建的,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象

  如果是重写了init()方法,需要自己写一个super.init(config)要不然会出现空指针异常

   1.ServletConfig类的三大作用

       ①可以获取Servlet程序的别名servlet-name的值

       ②获取初始化参数init-para

       ③获取ServletContext对象·

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2 初始化方法");

//      可以获取Servlet程序的别名servlet-name的值
        System.out.println("别名:"+servletConfig.getServletName());

//      获取初始化参数init-para
        System.out.println("init-para初始化参数username的值是:"+servletConfig.getInitParameter("username"));
        System.out.println("init-para初始化参数url的值是:"+servletConfig.getInitParameter("url"));

//      获取ServletContext对象·
        System.out.println(servletConfig.getServletContext());
    }

<!--    servlet标签给Tomcat配置Servlet程序-->
    <servlet>
<!--    给Servlet程序起一个别名(一般是类名)    -->
        <servlet-name>HelloServlet2</servlet-name>
<!--    是Servlet全类名    -->
        <servlet-class>com.company.web_tomcat.HelloServlet2</servlet-class>

        <!--        init-param是初始化参数(可以配置多组)-->
        <init-param>
<!--         参数名-->
            <param-name>username</param-name>
<!--        参数值    -->
            <param-value>root</param-value>
        </init-param>
        <!--        init-param是初始化参数(可以配置多组)-->
        <init-param>
            <!--         参数名-->
            <param-name>url</param-name>
            <!--        参数值    -->
            <param-value>jdbc:mysql://localhost:3306/test</param-value>
        </init-param>
   
    </servlet>

<!--    servlet-mapping标签给Servlet程序配置一个访问地址,如果不加这个标签的话,上面标签servlet-name便会报错-->
    <servlet-mapping>
<!--     此标签的作用是告诉服务器是告诉服务器,我当前配置的地址是给哪个Servlet程序使用   -->
        <servlet-name>HelloServlet2</servlet-name>
<!--     配置访问地址
         /      斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径
         /hello  http://ip:port/工程路径/hello                                 -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

二、ServletContext类

   1.什么是ServletContext?

        是一个接口,表示Servlet上下文对象

        一个web工程,只有一个ServletContext对象实例

        ServletContext对象是一个域对象

       ServletContext是在web工程部署启动的时候创建,在web工程停止的时候销毁

  2.什么是域对象

     是可以像Map一样存取数据的对象,叫域对象

      这里的域指的是存取数据的操作范围---整个web工程

      

 3.ServletContex类的四个作用

     ①获取web.xml中配置的上下文参数context-param

     ②获取当前的工程路径,格式:/工程路径

     ③获取工程部署后在服务器硬盘上的绝对路径

   

    <servlet>
        <servlet-name>ContextServlet</servlet-name>
        <servlet-class>com.company.web_tomcat.ContextServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ContextServlet</servlet-name>
        <url-pattern>/ContextServlet</url-pattern>
    </servlet-mapping>

    <!--context-param是上下文参数(它属于整个web工程(也可以配置多组)        -->
    <context-param>
    <param-name>username</param-name>
    <param-value>context</param-value>
   </context-param>
    <context-param>
        <param-name>password</param-name>
        <param-value>root</param-value>
    </context-param>
public class ContextServlet extends HttpServlet {


//④像Map一样存取数据

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//      ①获取web.xml中配置的上下文参数context-param
        ServletContext context = getServletConfig().getServletContext();

        String username = context.getInitParameter("username");
        System.out.println("username:" + username);
        System.out.println("password:" + context.getInitParameter("password"));
        //②获取当前的工程路径,格式:/工程路径
        System.out.println("当前工程路径:" + context.getContextPath());
        //③获取工程部署后在服务器硬盘上的绝对路径
        //  /   斜杠被服务器解析地址为:http://ip:port/工程名/    映射到IDEA代码的web目录
        System.out.println("工程部署的绝对路径:" + context.getRealPath("/"));


    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

 ④像Map一样存取数据

  只要有ServletContext对象,并且保存了数据,不论在哪个地方,都可以取到(前提是在一个web工程中,且这个web工程没有被销毁)

public class ContextServlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//     ServletContext context = getServletConfig().getServletContext();
//     用下面获取ServletContext对象这种方法更简洁
       ServletContext context = getServletContext();

       context.setAttribute("key1","value1");
        System.out.println("Context1中获取域数据key1的值是:"+context.getAttribute("key1"));
        System.out.println("Context1中获取域数据key1的值是:"+context.getAttribute("key1"));
        System.out.println("Context1中获取域数据key1的值是:"+context.getAttribute("key1"));
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱布朗熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值