Java EE使用Servlet获取web.xml中的参数

  在项目中,有一些经常使用的代码,我们需要保存到配置文件里,在Web.xml中提供了良好的方法进行参数的读取

一、Web.xml中参数的设定

(1)设置全局参数,该参数所有的Servlet都可以访问

    <!-- 设置全局参数 -->
    <context-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </context-param>

(2)设置局部参数,该参数只有相应的Servlet能够访问

         <!-- 设置局部参数 -->
    <servlet>
        <servlet-name>InitServlet</servlet-name>
        <servlet-class>servlets.InitServlet</servlet-class>
         <init-param>
            <param-name>driverClassName</param-name>
            <param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
        </init-param>
    </servlet>

此时设置的参数仅在该Servlet中有效,其他Servlet不能访问

二、获取参数

获取全局参数的方法如下所示:

                  ServletContext application=this.getServletContext();

                  application.getInitParameter("参数名称");

获取局部参数的方法如下所示:

                 this.getInitParameter("参数名称");//此处的this指Servlet本身

用下面的Servlet来接受Web.xml中设置的参数:代码如下所示:

package servlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class InitServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		ServletContext application = this.getServletContext();
		String encoding = application.getInitParameter("encoding");
		System.out.println("encoding参数是:" + encoding);
                
                String driverClassName = this.getInitParameter("driverClassName");      
	        System.out.println("driverClassName参数是:" + driverClassName);
	        PrintWriter out = response.getWriter();
                out.println("driverClassName:"+driverClassName);
                //在这儿测试使用获取全局变量的方式获取局部参数
                String driverClassName_test=application.getInitParameter("driverClassName");
                out.println("driverClassName_test:"+driverClassName_test); 
                System.out.println("driverClassName_test参数是:" + driverClassName_test);
        
        }
}

下面就是web.xml配置的全部代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!-- 设置全局参数 -->
    <context-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </context-param>
         <!-- 设置局部参数 -->
    <servlet>
        <servlet-name>InitServlet</servlet-name>
        <servlet-class>servlets.InitServlet</servlet-class>
         <init-param>
            <param-name>driverClassName</param-name>
            <param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>InitServlet</servlet-name>
        <url-pattern>/InitServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>


下面我们进行测试:

由于全局代码设置的encoding为utf-8,故显示结果为utf-8,而局部代码设置的是sun.jdbc.odbc.JdbcOdbcDriver,照样显示,而当使用全局代码的方式去查看局部代码是,取到的值为null,具体如下图所示:

Java EE使用Servlet获取web.xml中的参数_第1张图片
图1 显示结果


以上就是使用Servlet获取web.xml中的参数。
 

 

 

 

你可能感兴趣的:(java,java,servlet,web.xml,ee)