一、ServletConfig对象
ServletConfig是一个接口,它的对象是由服务器创建的,然后传递给Servlet的init()方法,你可以在init()方法中使用它。
该接口中有4个方法:
1 | String getInitParameter(String name):通过参数名获取在web.xml中配置的初始化参数的值; |
ServletConfig对象对应web.xml文件中的<servlet>
元素。例如你想获取当前Servlet在web.xml文件中的配置名,那么可以使用servletConfig.getServletName()方法获取!
1 | <servlet> |
1 | 在OneServlet中,可以使用ServletConfig对象的getInitParameter()方法来获取初始化参数,例如: |
二、ServletContext对象
(一)ServletContext概述
ServletContext也是一个接口,服务器会为每个应用创建一个ServletContext对象:
1、ServletContext对象的创建是在服务器启动时完成的;
2、ServletContext对象的销毁是在服务器关闭时完成的。
ervletContext对象的作用是在整个Web应用的动态资源之间共享数据!例如在AServlet中向ServletContext对象中保存一个值,然后在BServlet中就可以获取这个值,这就是共享数据了。
(二)获取ServletContext
1 | -- ServletConfig 中的 getServletContext(); |
(三)ServletContext的作用
1、ServletContext既然代表着当前web站点,那么所有Servlet都共享着一个ServletContext对象,所以Servlet之间可以通过ServletContext实现通讯(存取数据)。
2、ServletConfig获取的是配置的是单个Servlet的参数信息,ServletContext可以获取的是配置整个web站点的参数信息
3、利用ServletContext读取web站点的资源文件
4、实现Servlet的转发【用ServletContext转发不多,主要用request转发】
#####(四)作用的详细介绍
实现通讯(存取数据)
1 | 域对象的功能 |
所有域对象都有存取数据的功能,因为域对象内部有一个Map,用来存储数据,下面是ServletContext对象用来操作数据的方法:
1、void setAttribute(String name, Object value):来存储一个对象,也可以称之为存储一个域属性,
2、Object getAttribute(String name):用来获取ServletContext中的数据,当前在获取之前需要先去存储才行,
3、void removeAttribute(String name):用来移除ServletContext中的域属性,如果参数name指定的域属性不存在,那么本方法什么都不做;
4、Enumeration getAttributeNames():获取所有域属性的名称;
配置整个web站点的参数信息
1、Servlet可以获取初始化参数,但它是局部的参数;也就是说,一个Servlet只能获取自己的初始化参数,不能获取别人的,即初始化参数只为一个Servlet准备!
2、ServletContext可以配置公共的初始化参数,为所有Servlet而用!
3、还可以使用ServletContext来获取在web.xml文件中配置的整个应用的初始化参数!
注意:应用初始化参数与Servlet初始化参数不同:
如下,就为整个应用配置了两个初始化参数:
1 | <context-param> |
1 | ServletContext context = this.getServletContext(); |
读取web站点的资源文件
1 | 1、获取真实路径 : servletContext.getRealPath(String path) |
补充:
获取类路径下资源
类路径:对一个JavaWeb项目而言,就是/WEB-INF/classes和/WEB-INF/lib/每个jar包!
1 | 方法一: |
Java新手,若有错误,欢迎指正!