大可制作:QQ群:31564239(asp|jsp|php|mysql)

JSP/Servlet: config

config隐含对象转换为Servlet之后,对应于javax.servlet.ServletConfig 类型的对象,ServletConfig 是有关于Servlet设定信息的对象,要了解ServletConfig,不免要牵涉到对web.xml中Servlet的注册名称之了解。

到目前为止在执行JSP网页时,并不用在web.xml中设定任何的信息,对于每一个JSP网页的执行,它们默认的Servlet注册名称是jsp,您可以为每一个JSP网页注册一个Servlet名称,并设定URL-Pattern对应,对每一个拥有注册名称的Servlet, Container会为该名称产生一个实例,这个实例可以拥有自己的初始参数设定。

先来看看如何设定JSP网页对应的Servlet注册名称,并设定一些初始参数,首先我们设定web.xml,在当中加入一些标签设定:

  • web.xml
 ...
<servlet>
<servlet-name>JSPConfigTest</servlet-name>
<jsp-file>/configtest.jsp</jsp-file>
<init-param>
<param-name>count</param-name>
<param-value>100</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>JSPConfigTest</servlet-name>
<url-pattern>/JSPConfigTest.html</url-pattern>
</servlet-mapping>
...

<servlet>标签用来设定有关于Servlet的设定,<servlet-name>设定 Servlet注册名称,这个注册名称产生的实例来自于configtest.jsp转换后的Servlet类,也就是<jsp- file>所设定的内容,<init-param>用来设定初始参数,<param-name>是参数名称,而< param-value>是对应于参数名称的参数值。

<servlet-mapping>用来设定Servlet注册名称的别名,您将JSPConfigTest这个注册名称对应至 JSPConfigTest.html,如您所见的,您可以使用别名来隐藏网页所使用的技术细节,增加网页的安全性,浏览这个网页的使用者,也许完全不会 知道这个网页使用了JSP技术。

假设您的Web应用程序是在webapps/myjsp/下,如果使用以下的网址来浏览的话:
http://localhost:8080/myjsp/JSPConfigTest.html

那么实际上会调用注册名称JSPConfigTest所对应的JSP文件,也就是configtest.jsp,假设这个网页的内容如下:

  • configtest.jsp
...
<%
out.println("Servlet Name: " +
config.getServletName() + "<br>");
out.println("Initial count: " +
config.getInitParameter("count"));
%>
...

getServletName()可以取得Servlet的注册名称,而getInitParameter()可以取得指定的初始参数设定值,您也可以试着使用getInitParameterNames()来取得所有的初始参数名称,下面是网页的执行结果:
Servlet Name: JSPConfigTest
Initial count: 100