我们知道,servlet是不错的控制层框架。我们有时候需要将某些参数配置化,就是写入到配置文件中去。
比如我们要配置数据库连接的驱动等等。
下面我们来看下简单的一些操作,可能书上写的一样,但是没有经过代码的修饰是无法找到感觉和印象的。
1.值给一个servlet配置参数,也就是说,我们在web.xml中配置的参数和值只能被一一个servlet所使用的
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ServletServer</servlet-name>
<servlet-class>endual.ServletServer</servlet-class>
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
<init-param>
<param-name>JDBC$MySql</param-name>
<param-value>com.mysql.jdbc</param-value>
</init-param>
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
</servlet>
<context-param>
<param-name>web$name</param-name>
<param-value>chenwei</param-value>
</context-param>
<servlet-mapping>
<servlet-name>ServletServer</servlet-name>
<url-pattern>/servlet/ServletServer</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
以上的代码就是将配置的参数和值写入到servlet的配置中去,可以是多个参数的
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ServletServer</servlet-name>
<servlet-class>endual.ServletServer</servlet-class>
<init-param>
<param-name>JDBC$MySql</param-name>
<param-value>com.mysql.jdbc</param-value>
</init-param>
<init-param>
<param-name>JDBC$MySql2</param-name>
<param-value>com.mysql.jdbc2</param-value>
</init-param>
</servlet>
<context-param>
<param-name>web$name</param-name>
<param-value>chenwei</param-value>
</context-param>
<servlet-mapping>
<servlet-name>ServletServer</servlet-name>
<url-pattern>/servlet/ServletServer</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
,
下面我们来看再servlet中调用这些参数
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//ServletContext servletContext = this.getServletConfig().getServletContext() ;
// String name = servletContext.getInitParameter("web$name") ;
String xxx = this.getInitParameter("JDBC$MySql"); //servlet类this对象本身有一个getInitParameter("JDBC$MySql")方法可以直接调用即可
System.out.println(xxx);
// System.out.println(name) ;
}
多个参数的情况下还有一个方法是返回第数组类型的。
2.还有一种情况是的,我们好多个servlet都要用到同一个配置的参数和值,当然我们可以将这些参数和值每个servlet都配置
一遍,没有关系。
有一种更好的方法就是将配置的参数和值独立出来,这样我们就可以减少代码了的。下面看:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ServletServer</servlet-name>
<servlet-class>endual.ServletServer</servlet-class>
<init-param>
<param-name>JDBC$MySql</param-name>
<param-value>com.mysql.jdbc</param-value>
</init-param>
</servlet>
、、、、、、、、、、、、、、、、、、、、、、、、、、、
<context-param>
<param-name>web$name</param-name>
<param-value>chenwei</param-value>
</context-param>
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
<servlet-mapping>
<servlet-name>ServletServer</servlet-name>
<url-pattern>/servlet/ServletServer</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
servlet调用的代码比第一个要多一点,如果有兴趣可以去看下它的源码的实现的,我找了一会儿,就没有找了,看不到原貌的实现。但还是恨简单的
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext servletContext = this.getServletConfig().getServletContext() ;
String name = servletContext.getInitParameter("web$name") ;
System.out.println(name) ;
}