ServletContext对象

目录

一、ServletContext对象是什么?

二、如何获取ServletContext对象

三、ServletContext对象常见的方法

四、需求

一、ServletContext对象是什么?

    ServletContext是javax.servlet包下的一个接口,又称为上下文对象,是配置对象也是一个域对象;当服务器启动时候,会为服务器中的每一个web应用程序创建一个ServletContext对象;在web应用中的servlet想要实现资源共享,可以通过ServletContext来完成。

二、如何获取ServletContext对象

public ServletContext getServletContext(){

   // 获取ServletContext对象
 return this.getServletConfig().getServletContext();


}

三、ServletContext对象常见的方法

getInitParameter() //获取指定参数名称的全局参数值
getRealPath(String path) //获得当前项目的服务器磁盘路径
getContextPath() //获取项目的根路径
getAttribute(String parameterName) //获取ServletContext域中指定名称的参数值;
setAttribute(String paramterName,Object parameterValue) //存储参数到ServletContext域中;
removeAttribute(String parameterNam) //将ServletContext域中指定名称的参数移除;

四、需求

获取Servlet里定义的参数

(1)web.xml 文件

 <context-param>
        <param-name>username</param-name>
        <param-value>root</param-value>
    </context-param>
    <context-param>
        <param-name>password</param-name>
        <param-value>root456</param-value>
    </context-param>

(2)servlet

①ServletContextServlet

/*
 * Copyright (c) 2020, 2023, webrx.cn All rights reserved.
 *
 */
package com.by.servlet2;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletContextServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//         1. 获取ServletContext对象(super可以省略)
        ServletContext servletContext = super.getServletContext();
//        2. 获取全局初始化参数
        String username = servletContext.getInitParameter("username");
        String password = servletContext.getInitParameter("password");
        System.out.println(username);
        System.out.println(password);
//        3.获取服务器的真是路径
        String realPath = servletContext.getRealPath("");
        System.out.println("真实路径"+realPath);
//        4.获取项目的跟路径
        String contextPath = servletContext.getContextPath();
        System.out.println("项目的根路径:"+contextPath);
//        5. 往ServletContext域中,存储一个名称为msg的属性,值为”hello"
        String str="hello";
        servletContext.setAttribute("msg",str);
    }
}

②ServletContextServlet2

/*
 * Copyright (c) 2020, 2023, webrx.cn All rights reserved.
 *
 */
package com.by.servlet2;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletContextServlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = super.getServletContext();
//        1.获取全局的param参数
        String username = servletContext.getInitParameter("username");
        String password = servletContext.getInitParameter("password");
        System.out.println(username+password);
        String msg = (String) servletContext.getAttribute("msg");
        System.out.println(msg);
    }
}

③ServletContextServlet3

/*
 * Copyright (c) 2020, 2023, webrx.cn All rights reserved.
 *
 */
package com.by.servlet2;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletContextServlet3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1. 获取ServletContext对象
        ServletContext servletContext = super.getServletContext();
//        2. 将servletContext域中的msg删除
        servletContext.removeAttribute("msg");
    }
}

(3)三个servlet的配置文件

<!--    定义三个servletContext的servlet-->
    <servlet>
        <servlet-name>servletContextServlet</servlet-name>
        <servlet-class>com.by.servlet2.ServletContextServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletContextServlet</servlet-name>
        <url-pattern>/servletContextServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>servletContextServlet2</servlet-name>
        <servlet-class>com.by.servlet2.ServletContextServlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletContextServlet2</servlet-name>
        <url-pattern>/servletContextServlet2</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>servletContextServlet3</servlet-name>
        <servlet-class>com.by.servlet2.ServletContextServlet3</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletContextServlet3</servlet-name>
        <url-pattern>/servletContextServlet3</url-pattern>
    </servlet-mapping>

(4)测试

第一个前两个servlet是接收servletcontext设置的全局参数,第三个是清空将servletContext域中的msg信息,清空之后再次访问第二个servlet 就接收不了msg信息了。

①首先访问第一个servlet

②访问第二个servlet

 ③访问第三个servlet 将ServletContext域中的信息删除,然后再访问第二个servlet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今天的接口写完了吗?

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

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

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

打赏作者

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

抵扣说明:

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

余额充值