0308 ServletContext对象

ServletContext对象中封装的真个web项目中的信息,一个web项目中只有一个ServletContext对象,但可以有多个servlet对象

ServletContext对象的生命周期 创建: 服务器启动或 发布web应用(前提,服务器启动状态) 销毁:web应用被卸载(服务器关闭,移除该web应用)

怎样获得ServletContext对象

之前是在servlet类中的init方法中通过config.getServletContext();得到一个对象

但是通过查阅API他们的继承关系 直接getServletContext()返回一个ServletContext对象。

作用

(1)获得web应用中任何资源的绝对路径

代码展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Servlet03 extends HttpServlet {
 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("hello dandan...");
        //获取ServletContext对象
        ServletContext context=getServletContext();
        //获取服务器上资源的绝对路径
        String pathA=context.getRealPath("a.txt");
        String pathB=context.getRealPath("WEB-INF/b.txt");
        String pathC=context.getRealPath("WEB-INF/classes/com/oracle/web/c.txt");
        System.out.println(pathA);
        System.out.println(pathB);
        System.out.println(pathC);
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

  当发出请求

 

 

 

 (2)ServletContext是一个域对象

ServletContext域对象的作用范围:整个web应用(所有的web资源都可以随意向   servletcontext域中存取数据,数据可以共享)

可以存取数据,可以实现从Servlet01中写入数据,从Servlet02中读取数据

数据存储的方式还是以键值对的方式存储,同时同一个键值对的key值相同就value值就会被覆盖掉

图解

 

 

域对象的通用的方法(所有域对象通用方法)

setAtrribute(String name,Object obj);

getAttribute(String name)

removeAttribute(String name);

代码展示 从Servlet01中写入数据,从Servlet02中读取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyServlet01 extends HttpServlet {
 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("hello dandan...");
        //获取ServletContext对象
        ServletContext context=getServletContext();
        //域对象存值
        context.setAttribute("name", "张三");
        context.setAttribute("password", "123123");
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MyServlet02 extends HttpServlet {
 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取ServletContext对象
        ServletContext context=getServletContext();
        //域对象取值
        System.out.println(context.getAttribute("name"));
        System.out.println(context.getAttribute("password"));
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

  

 

 

 

 

 

posted @   公雪  阅读(113)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示