Servlet-ServletContext类

ServletContext

一、什么是ServletContext

1、ServletContext是一个接口,它表示Servlet上下文对象

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

3、ServletContext对象是一个域对象

4、ServletContext实例在web工程部署启动时创建,在web工程停止时销毁

 

 

二、什么是域对象?

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

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

 

存数据            取数据       删除数据

Map                             put()                  get()                   remove()

域对象                       setAttribute()           getAttribute()           removeAttribute()

 

 

 

三、ServletContext四个作用

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

2.获取当前工程路径,格式:/工程路径

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

4.像map一样存取数据

 

 

相关代码

package com.orzjiangxiaoyu.context.servlet;

import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * ServletContext
 * 什么是ServletContext
 * 1、ServletContext是一个接口,它表示Servlet上下文对象
 * 2、一个web工程只有一个ServletContext对象实例
 * 3、ServletContext对象是一个域对象
 * 4、ServletContext实例在web工程部署启动时创建,在web工程停止时销毁
 *
 * 什么是域对象?
 * 域对象,是可以像map一样存取数据的对象,叫做域对象。
 * 这里的域指的是存取数据的操作范围,整个web工程
 *
 * 存数据            取数据       删除数据
 * Map                put()                  get()             remove()
 * 域对象            setAttribute()        getAttribute()        removeAttribute()
 *
 *
 * ServletContext四个作用
 * 1.获取xml中配置的上下文参数context-param:getInitParameter(String var1)
 * 2.获取当前工程路径,格式:/工程路径:getContextPath()
 * 3.获取工程部署后在服务器硬盘上的绝对路径:getRealPath("/");
 * 4.像map一样存取数据
 *
 *
 * @author orz
 * @create 2020-09-10 16:11
 */
public class ContextServlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //一、获取ServletContext
            //方法一:常使用
            ServletContext servletContext = getServletContext();
            System.out.println("ServletContext:"+servletContext);
            //方法二:
            ServletConfig servletConfig = getServletConfig();
            ServletContext servletContext1 = servletConfig.getServletContext();
            System.out.println("ServletContext:"+servletContext);



        //二、四个作用

//        1.获取xml中配置的上下文参数context-param
        //String getInitParameter(String var1);
//    <!-- context-param是上下文参数   -->
//    <context-param>
//        <param-name>username</param-name>
//        <param-value>orzjiangxiaoyu</param-value>
//    </context-param>
//    <context-param>
//        <param-name>password</param-name>
//        <param-value>root</param-value>
//    </context-param>
        System.out.println("username:"+servletContext.getInitParameter("username"));
        System.out.println("password:"+servletContext.getInitParameter("password"));


//        2.获取当前工程路径,格式:/工程路径
        //String getContextPath()

        System.out.println("当前工程路径:"+servletContext.getContextPath());


//        3.获取工程部署后在服务器硬盘上的绝对路径
        //String getRealPath(String var1);
//        斜杠/ 表示被服务器解析地址为http://ip:port/工程名称/
//        映射到idea代码的web目录
        System.out.println("绝对路径:"+servletContext.getRealPath("/"));


//        4.像map一样存取数据


    }
}
View Code
package com.orzjiangxiaoyu.context.servlet;

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**ServletContext四个作用之一像map一样存取数据
 *
 * 什么是域对象?
 * 域对象,是可以像map一样存取数据的对象,叫做域对象。
 * 这里的域指的是存取数据的操作范围,整个web工程
 *
 * 存数据            取数据       删除数据
 * Map                put()                  get()             remove()
 * 域对象            setAttribute()        getAttribute()        removeAttribute()
 *
 * @author orz
 * @create 2020-09-10 16:32
 */
public class Context1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        ServletContext servletContext = getServletContext();

        System.out.println("Context1未保存之前 key=key1,value="+servletContext.getAttribute("key1"));

        System.out.println("Context1保存");
        servletContext.setAttribute("key1","value1");
        System.out.println("Context1保存之后 key=key1,value="+servletContext.getAttribute("key1"));

        servletContext.setAttribute("key2","value2");
        System.out.println("Context1未删除前 key=key2,value="+servletContext.getAttribute("key2"));
        servletContext.removeAttribute("key2");
        System.out.println("Context2删除后 key=key2,value="+servletContext.getAttribute("key2"));
        //

        //

    }
}
View Code
package com.orzjiangxiaoyu.context.servlet;

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * 这里的域指的是存取数据的操作范围,整个web工程
 * @author orz
 * @create 2020-09-10 16:33
 */
public class Context2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = getServletContext();
        System.out.println("Context2 key=key1 value="+servletContext.getAttribute("key1"));
    }
}
View Code

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- context-param是上下文参数   -->
    <context-param>
        <param-name>username</param-name>
        <param-value>orzjiangxiaoyu</param-value>
    </context-param>
    <context-param>
        <param-name>password</param-name>
        <param-value>root</param-value>
    </context-param>

    <servlet>
        <servlet-name>ContextServlet</servlet-name>
        <servlet-class>com.orzjiangxiaoyu.context.servlet.ContextServlet1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ContextServlet</servlet-name>
        <url-pattern>/contextServlet</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>Context1</servlet-name>
        <servlet-class>com.orzjiangxiaoyu.context.servlet.Context1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Context1</servlet-name>
        <url-pattern>/context1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Context2</servlet-name>
        <servlet-class>com.orzjiangxiaoyu.context.servlet.Context2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Context2</servlet-name>
        <url-pattern>/context2</url-pattern>
    </servlet-mapping>
</web-app>
View Code

 

posted @ 2020-09-10 21:42  orz江小鱼  阅读(158)  评论(0编辑  收藏  举报