Servlet下的ServletContext

来源:互联网 发布:352净化器怎么样 知乎 编辑:程序博客网 时间:2024/05/18 20:09

ServletContext简介

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

获取ServletContext

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

域对象的功能

ServletContext是javaweb四大域对象之一:pageContextServletContextHttpSessionServletContext所有的域对象都有存取数据功能,域对象内部有一个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”);
本方法必须以“/”开头

原创粉丝点击