当前位置: 代码迷 >> Web前端 >> Servlet基础01 在web.xml中配备参数和值
  详细解决方案

Servlet基础01 在web.xml中配备参数和值

热度:38   发布时间:2012-09-17 12:06:51.0
Servlet基础01 在web.xml中配置参数和值

?

?

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

?

?

?

?

?

?

  相关解决方案