每日记录(ServletContext)

发布时间 2023-06-03 16:46:48作者: 傲世小苦瓜

Servlet三大域对象:

l ServletContext:范围最大,应用范围!

l HttpSession :会话范围!

l HttpServletRequest:请求范围!

域对象之一

域对象都有存取功能:

setAttribute(“attrName”, attrValue );//put

Object attrValue = getAttribute(“attrName”);//get

removeAttribute(“attrName”);//remove

1 ServletContext的作用

l 存取域属性,ServletContext是一个域对象;

l 可以用来获取应用初始化参数;

l 获取资源

ServletContext的生命周期

l ServletContext在容器启动时就被创建了;

l ServletContext在容器关闭时才会死!

l 一个项目只有一个ServletContext对象。

3 获取ServletContext

l 通过ServletConfig的getServletContext()方法来获取!

Ø ServletConfig是init()方法的参数,那只能在init()方法中获取了;

Ø GenericServlet代理了ServletConfig的所有方法,而且还提供了getServletConfig(),所以在GenericServlet的子类中可以使用如下方式来获取ServletContext对象:

² this.getServletContext()

² this.getServletConfig().getServletContext()

Ø HttpSession也有这个方法,session.getServletContext()。

4 域对象:ServletContext

l void setAttribute(String name, Object value):存储属性;

l Object getAttribute(String name):获取属性;

l void removeAttribute(String name):移除属性;

l Enumeration getAttributeNames():获取所有属性名称;

5 获取初始化参数

一个 项目不只是可以配置servlet的初始化参数,还可以配置应用初始化参数

下面就是在web.xml中配置应用的初始化参数,这些参数需要使用ServletContext来获取

<context-param>

<param-name>p1</param-name>

<param-value>v1</param-value>

</context-param>

<context-param>

<param-name>p2</param-name>

<param-value>v2</param-value>

</context-param>

l String getInitParameter(String name):通过参数名获取参数值;

l Enumeration getInitParameterNames():获取所有参数的名称;

6 获取资源

l 获取真实路径:getRealPath(String path):路径必须以“/”开头!它相对当前项目所在路径的。

l 获取指定路径下的所有资源路径:Set set = sc.getResourcePaths(“/xxx”)

l 获取资源流:InputStream in = sc.getResourceAsStream(“/xxx”)

7 Class和ClassLoader获取资源

User.class如何变成Class<User>的呢,由ClassLoader完成的!把硬盘上的User.class加载到内存,变成Class对象。

使用它们获取资源流!它们相对类路径(classpath)