Servlet开发【05】取得初始化配置信息

 在Servlet开发中要取得初始化参数用到了JSP内置对象中的config对象,此对象实际上就是ServletConfig对象的接口实例。这一篇文章讲解 Servlet初始化的参数的取得。就是在Servlet初始化的时候可以取得一个设置的参数。

    初始化的方法可以使用init()方法来完成,在上一篇文章中也讲过了,init()是用来初始化一个Servlet程序的。在init()方法中可以传入一个ServletConfig的对象,此对象就是可以接受初始化配置参数的操作,因为所有的初始化参数都必须在web.xml文件中进行配置。

init()的方法如下:

  
  
  
  
  1. public void init(ServletConfig config) 
  2.              throws ServletException{} 

 下面是一个取得初始化参数的实例

  
  
  
  
  1. package ServletDemo; 
  2. import java.io.IOException; 
  3. import javax.servlet.*; 
  4. import javax.servlet.http.*; 
  5. public class initServlet extends HttpServlet{ 
  6.     private String initParam=null;//用于接收初始化参数 
  7.     public void init(ServletConfig config)throws ServletException{ 
  8.         this.initParam=config.getInitParameter("ref");//接收初始化参数 
  9.     } 
  10.     public void doGet(HttpServletRequest req,HttpServletResponse resp) 
  11.                throws ServletException,IOException{  
  12.         System.out.println("初始化参数:"+this.initParam);//输出初始化参数 
  13.     public void doPost(HttpServletRequest req,HttpServletResponse resp) 
  14.           throws ServletException,IOException{ //处理POST请求 
  15.        this.doGet(req, resp);   //调用doGet()方法        

一个Servlet要想起作用,肯定要在web.xml文件中进行配置。

  
  
  
  
  1. <servlet> 
  2.        <servlet-name>initParameter</servlet-name> 
  3.        <servlet-class>ServletDemo.initServlet</servlet-class> 
  4.        <init-param> 
  5.              <param-name>ref</param-name>  //参数名称 
  6.              <param-value>http://zhaoyuqiang.blog.51cto.com</param-value>//参数内容 
  7.        </init-param> 
  8.   </servlet> 
  9.   <servlet-mapping> 
  10.        <servlet-name>initparameter</servlet-name> 
  11.        <url-pattern>/initServletTest</url-pattern> 
  12.   </servlet-mapping> 

在浏览器中输入:http://localhost:8080/test/initServletTest

浏览器上显示的空白页,我们要看的是tomcat服务器,如下图所示:

    从上图可以看出,我们设置在web.xml中的初始化参数的确是取得了。

   注意:

    在操作的时候有一点需要引起注意,如果现在在Servlet之中同时覆写了两个init()方法,则只有取得初始化参数的init()方法起作用。

  在代码中写一个无参的构造方法,然后让它输出一行* ,有参数的init()方法输出行################,  看看到底是哪一个初始化参数能够输出。

  
  
  
  
  1. package ServletDemo; 
  2. import java.io.IOException; 
  3. import javax.servlet.*; 
  4. import javax.servlet.http.*; 
  5. public class initServlet extends HttpServlet{ 
  6.     private String initParam=null;//用于接收初始化参数 
  7.     public void init()throws ServletException{ 
  8.         System.out.println("**********************"); 
  9.     } 
  10.     public void init(ServletConfig config)throws ServletException{ 
  11.         System.out.println("########################"); 
  12.         this.initParam=config.getInitParameter("ref");//接收初始化参数 
  13.     } 
  14.     public void doGet(HttpServletRequest req,HttpServletResponse resp) 
  15.                throws ServletException,IOException{  
  16.         System.out.println("初始化参数:"+this.initParam);//输出初始化参数 
  17.     public void doPost(HttpServletRequest req,HttpServletResponse resp) 
  18.           throws ServletException,IOException{ //处理POST请求 
  19.        this.doGet(req, resp);   //调用doGet()方法        

执行一下:

  发现确实只有取得初始化参数的init()方法起作用,如果没有参数的方法的话,那么没有参数的方法才开始起作用

  从一开始的角度而言,取得初始化参数的操作在一些系统的架构中是比较常用的,例如:之后要讲解的struts开发框架,就用到了此种操作

你可能感兴趣的:(Servlet初始化参数,init())