?
?
? ?我们知道,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) ; }?
?
?
?
?
?
?