Servlet下的ServletContext

ServletContext简介

一个项目只有一个ServletContext对象
可以在多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet传递数据
该对象一直存在,在Tomcat启动时就创建,在Tomcat关闭时才会消失
ServletContext对象的作用是在整个web应用的动态资源之间共享数据

获取ServletContext

ServletContext在ServletConfig中
在GenericServlet中可以直接使用getServletContext()获取
获取getServletContext有多种方式:
ServletConfig中有getServletContext()
GenericServlet中有getServletContext()
HttpSession中有getServletContext()
ServletContextEvent中有getServletContext()

域对象的功能

ServletContext是javaweb四大域对象之一:
pageContext
ServletContext
HttpSession
ServletContext
所有的域对象都有存取数据功能,域对象内部有一个Map,ServletContext用来存取数据的方法:
void setAttribute(String name,Object value):用来存储一个对象,也称之为一个域属性,如果多次使用该方法,并且name相同,则会覆盖
object getAttribute(String name):用来获取ServletContext中的数据,例如String value = (String)servletContext.getAtrribute("name");
void removeAttribute(String name):用来移除ServletContext中的域属性,name不存在,则无任何操作
Enumeration getAttributeNames():获取所有域属性名称

获取应用的初始化参数

Servlet也可以获取初始化参数,但它是局部的参数,也就是说,一个Servlet只能获取自己的初始化参数,不能获取别人的,即该Servlet自己的初始化参数在<servlet>标签下使用<init-param>、<param-name>、<param-value>设置
可以配置公共的初始化参数,为所有Servlet用,这需要使用ServletContext才能使用

这里写图片描述

配置好参数后调用代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //得到ServletContext
        ServletContext context = getServletContext();
        //调用getInitParameter(String)得到初始化参数
        String s = context.getInitParameter("context1");
        System.out.println(s);

    }

获取资源相关方法

1、获取真实资源路径
使用getRealPath(“文件名”)获取路径

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取资源真实路径
        String path = this.getServletContext().getRealPath("/index.jsp");
        System.out.println(path);
    }

2、获取资源流
通过ServletContext获取资源流,即把资源以输入流的方式获取:
InputStream getResourceAsStream(“文件名”)

获取a.txt资源流:InputStream in = servletContext.getResourceAsStream("a.txt");
文件在根目录下

3、获取指定目录下的所有资源路径
使用Set getResourcePaths(“文件夹名”)方法
Set set = context.getResourcePaths(“WEB-INF”);
本方法必须以“/”开头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值