config对象对应于javax.servlet.ServletConfig类,此类位于servlet-api.jar包中。
web容器在初始化时使用一个ServletConfig(即config)对象向JSP页面传递信息,此配置信息包括初始化参数(在当前Web应用的应用部署描述文件web.xml中定义)以及表示Servlet或JSP页面所属Web应用的ServletContext对象。
config对象的几个方法:
(1)public String getParameter(String name);
返回制定的名称name初始化参数的值,如果参数不存在则返回null。
(2)public java.util.Enumeration getinitParameterNames();
得到所有初始化参数名称的枚举。
(3)public ServletContext getServletContext();
返回Servlet或JSP页面所属的ServletContext的一个引用。
(4)public String getServletName();
返回Servlet实例或JSP页面的名称,此名称可以在Web应用部署描述文件中指定,对于一个未注册(也就是未命名)Servlet实例或JSP页面,将返回该Servlet类的类名。
一个config对象的教程
config对象代表当前JSP配置信息,但JSP页面通常无须配置,因此也就不存在配置信息。该对象在JSP页面中比较少用,但在Servlet中则用处相对较大,因为Servlet需要在web.xml文件中进行配置,可以指定配置参数。关于Servlet的使用将在2.10节介绍。
看如下JSP页面代码,该JSP代码使用了config的一个方法getServletName()。
程序清单:codes/02/2.9/jspObject/configTest.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %> |
上面代码中粗体字代码输出了config的getServletName()方法的返回值,所有的JSP页面都有相同的名字:jsp,所以粗体字代码输出为jsp。
实际上,我们也可以在web.xml文件中配置JSP(只是比较少用),这样就可以为JSP页面指定配置信息,并可为JSP页面另外设置一个URL。
config对象是ServletConfig的实例,该接口用于获取配置参数的方法是getInitParameter(String paramName)。下面代码示范了如何在页面中使用config获取JSP配置参数。
程序清单:codes/02/2.9/jspObject/configTest2.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %> |
上面代码中两行粗体字代码输出了config的getInitParameter()方法返回值,它们分别获取name、age两个配置参数的值。
配置JSP也是在web.xml文件中进行的,JSP被当成Servlet配置,为Servlet配置参数使用init-param元素,该元素可以接受param-name和param-value两个子元素,分别指定参数名和参数值。
在web.xml文件中增加如下配置片段,即可将JSP页面配置在Web应用中。
<servlet> |
上面的配置文件片段中粗体字代码为该Servlet(其实是JSP)配置了2个参数:name和value。上面的配置片段把configTest2.jsp页面配置成名为config的Servlet,并将该Servlet映射到/config处,这就允许我们通过/config来访问该页面。在浏览器中访问/config看到如图2.20所示的界面。
图2.20 输出JSP配置参数值 |
从图2.20中可以看出,通过config可以访问到web.xml文件中的配置参数。实际上,我们也可以直接访问configTest2.jsp页面,在浏览器中访问该页面将看到如图2.21所示的界面。
图2.21 直接访问JSP页面将不能访问配置参数 |
对比图2.20和2.21不难看出,如果希望JSP页面可以获取web.xml配置文件中的配置信息,则必须通过为该JSP分配的路径来访问该页面,因为只有这样访问JSP页面才会让配置文件起作用。