Servlet初始化参数与上下文初始化参数的获取

实训 1.  初始化参数和上下文初始化参数训练

(下述步骤根据本机球境作适当修改)

 

1.实训目标

      创建一个Servlet,读取初始化参数和上下文初始化参数,并将这些参数显示在网页上。掌握Servlet读取参数的编程要点和配置步骤。

2.实训场景


3.概念及定义

      Servlet初始化参数与上下文初始化参数

  • Servlet初始化参数:

1.     Servlet初始化参数定义在web.xml中的一个servlet元素中,例如:

[html]  view plain  copy
  1. <servlet>  
  2.    <servlet-name>test</servlet-name>  
  3.    <servlet-class>com.bk.Test</servlet-class>  
  4.    <init-param>  
  5.       <param-name>default-time</param-name>  
  6.       <param-value>60</param-value>  
  7.    </init-param>  
  8. </servlet>  
可以有若干个<init-param>对。

2.  怎样取得Servlet初始化参数

可以在Servlet中直接调用getInitParameterr(java.lang.Stringname)方法来读取初始化参数。也可以通过ServletConfig接口的getInitParameter(java.lang.Stringname)方法。getServletConfig()该方法定义在Servlet接口中,返回ServletConfig接口的引用。

所有的servlet都继承了该方法。当容器实例化一个servlet之前,会从web.xml中读取这个servlet的初始化参数,并把这些参数交给ServletConfig然后在调用init()方法时,容器会传送这个ServletConfig的引用到servlet每个servlet都会有一个唯一的ServletConfig引用。一旦有了ServletConfig的引用就可以调用getInitParameter()方法来取得我们在servlet中设置的初始化参数。

 

  • 上下文初始化参数:

上下文初始化参数与Servlet初始化参数类似,区别是上下文初始化参数对整个web应用而不是Servlet初始化参数只对应一个servlet

在web应用的整个生命周期中上下文初始化参数都存在,任意的servlet和jsp都可以随时随地的访问它。

1.     在web.xml中的配置例子如下:

[html]  view plain  copy
  1. <context-param>  
  2.    <param-name>default-time</param-name>  
  3.    <param-value>60</param-value>  
  4. </context-param>  

上下文初始化参数对应于整个web应用,因此它不在某个servlet元素内。一个web应用有一个ServletContext,而一个servlet有一个ServletConfig

2.     怎样取得上下文初始化参数?

servlet的ServletConfig对象拥有该servlet的ServletContext的一个引用,所以可这样取得上下文初始化参数:getServletConfig().getServletContext().getInitParameter()

也可以在servlet中直接调用getServletContext().getInitParameter(),两者是等价的。

 

4.场景实现演示

4.1配置Tomcat5.5站点

  • 创建Web应用程序servletest

4.2Servlet读取参数研究

  • InitParamServlet.java完整代码如下:

[java]  view plain  copy
  1. packagejsplession;  
  2.    
  3. importjavax.servlet.ServletConfig;  
  4. importjavax.servlet.ServletContext;  
  5. importjavax.servlet.ServletException;  
  6. importjavax.servlet.http.HttpServlet;  
  7. importjavax.servlet.http.HttpServletRequest;  
  8. importjavax.servlet.http.HttpServletResponse;  
  9.    
  10. import java.io.PrintWriter;  
  11. importjava.io.IOException;  
  12.    
  13. publicclass InitParamServlet extends HttpServlet  
  14. {  
  15.   public void doGet(HttpServletRequest req,HttpServletResponse res)  
  16.               throws IOException,ServletException  
  17.   {  
  18.    
  19.     res.setContentType("text/plain;charset=GBK");  
  20.     PrintWriter out = res.getWriter();  
  21.    
  22.     String url =getInitParameter("URL");  
  23.    
  24.     ServletConfig config = getServletConfig();  
  25.     ServletContext context =getServletContext();  
  26.     String uid =config.getInitParameter("UID");  
  27.     String pwd =config.getInitParameter("PWD");  
  28.     String port =context.getInitParameter("some-port");  
  29.    
  30.     out.println("初始化参数和上下文初始化参数如下:");  
  31.     out.println("URL: " + url);  
  32.     out.println("UID: " + uid);  
  33.     out.println("PWD: " + pwd);  
  34.     out.println("some-port: " +port);  
  35.   }  
  36. }  

1.   创建public class InitParamServletextends HttpServlet

2.   重写public void doGet(HttpServletRequest req, HttpServletResponse res)

·        设置响应(response)内容类型,即res.setContentType("text/plain;charset=GBK")

·        获得response的输出流,即PrintWriter out = res.getWriter()

·        获得初始化参数URL,即String url =getInitParameter("URL")

·        获得ServletConfig的引用,即ServletConfig config = getServletConfig()

·        获得ServletContext的引用,即ServletContext context = getServletContext()

·        通过ServletConfig引用获得初始化参数:String uid = config.getInitParameter("UID"); String pwd =config.getInitParameter("PWD")

·        通过ServletContext引用获得上下文初始化参数:String port = context.getInitParameter("some-port")

3.    输出各个参数,如out.println("URL: " + url)

  • 修改web.xml,配置Servlet、初始化参数和上下文初始化参数,web.xml文件内容如下:

[html]  view plain  copy
  1. <?xmlversionxmlversion="1.0" encoding="UTF-8"?>  
  2. <web-appidweb-appid="WebApp_ID" version="2.4"  
  3.      xmlns="http://java.sun.com/xml/ns/j2ee"  
  4.      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.      xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.      <display-name>servletest</display-name>  
  7.      <context-param>  
  8.             <param-name>some-port</param-name>  
  9.             <param-value>5000</param-value>  
  10.      </context-param>  
  11.      <servlet>  
  12.             <servlet-name>init</servlet-name>  
  13.             <servlet-class>jsplession.InitParamServlet</servlet-class>  
  14.             <init-param>  
  15.                    <param-name>URL</param-name>  
  16.                    <param-value>jdbc:mysql://localhost/pizza</param-value>  
  17.             </init-param>  
  18.             <init-param>  
  19.                    <param-name>UID</param-name>  
  20.                    <param-value>matt</param-value>  
  21.             </init-param>  
  22.             <init-param>  
  23.                    <param-name>PWD</param-name>  
  24.                    <param-value>secret</param-value>  
  25.             </init-param>  
  26.      </servlet>  
  27.      <servlet-mapping>  
  28.             <servlet-name>init</servlet-name>  
  29.             <url-pattern>/init</url-pattern>  
  30.      </servlet-mapping>  
  31.      <welcome-file-list>  
  32.             <welcome-file>index.jsp</welcome-file>  
  33.      </welcome-file-list>  
  34. </web-app>  

4.3部署运行

  • 部署文件编译InitParamServlet.java,把class文件放到WEB-INF\classes\jsplession目录下
  • 启动Tomcat
  • 在IE浏览器的地址栏中输入http://localhost:8080/servletest/init

实训 2.    Servlet数据库练习示例

(数据库与数据表根据本机配置环境作适当修改)

[java]  view plain  copy
  1. packagecom.jsp.Database;  
  2. importjava.sql.*;  
  3. importjavax.sql.*;  
  4. importjava.io.*;  
  5. importjavax.servlet.*;  
  6. importjavax.servlet.http.*;  
  7. importcom.microsoft.jdbc.sqlserver.SQLServerDriver;  
  8. publicclass JDBCServlet extends HttpServlet  
  9. {  
  10.    /* 连接数据库属性*/  
  11.    Stringdriver;  
  12.    Stringpassword,url,user;  
  13.    /*处理doGet */  
  14.    
  15. publicvoid doGet(HttpServletRequest request,HttpServletResponse response)  
  16. throwsIOException,ServletException  
  17. {  
  18.    response.setContentType("text/html;charset=gb2312");  
  19.     PrintWriter out=response.getWriter();  
  20.     try  
  21.     {  
  22.     Connection con=getConnection();  
  23.     Statement stmt=con.createStatement();  
  24.     ResultSetrst=stmt.executeQuery("select * from user_info");  
  25.     while(rst.next())  
  26.         {  
  27.        out.println(rst.getString("userid"));  
  28.         out.println("<br>");  
  29.              
  30.         }  
  31.         rst.close();  
  32.         stmt.close();  
  33.         con.close();  
  34.          
  35.     }  
  36.     catch(SQLException e)  
  37.         {  
  38.         e.printStackTrace();  
  39.         }     
  40.     }  
  41. /*处理doPost请求*/  
  42.     public void doPost(HttpServletRequestrequest,HttpServletResponse response)  
  43.     throws IOException,ServletException  
  44.     {  
  45.     doGet(request,response);  
  46.     }  
  47.    
  48.     publicvoid init()throws ServletException  
  49.     {  
  50.  driver=getInitParameter("DRIVER");  
  51. password=getInitParameter("PASSWORD");  
  52. url=getInitParameter("URL");  
  53. user=getInitParameter("USER");  
  54.     }  
  55.     privateConnection getConnection()  
  56.     {  
  57.        Connection con=null;  
  58.        try  
  59.        {  
  60.           Class.forName(driver);  
  61.           con=DriverManager.getConnection(url,user,password);         
  62.         }  
  63.         catch(Exception e )  
  64.         {  
  65.            e.printStackTrace();  
  66.         }  
  67.      
  68.         return con;  
  69.     }     
  70.   }  

========web.xml文件配置========

[html]  view plain  copy
  1. <servlet>  
  2. <servlet-name>JDBCServlet</servlet-name>  
  3. <servlet-class>com.jsp.Database.JDBCServlet</servlet-class>  
  4. <init-param>  
  5. <param-name>DRIVER</param-name>  
  6. <param-value>com.microsoft.jdbc.sqlserver.SQLServerDriver</param-value>  
  7. </init-param>  
  8.    
  9. <init-param>  
  10. <param-name>URL</param-name>  
  11. <param-value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev</param-value>  
  12. </init-param>  
  13.    
  14. <init-param>  
  15. <param-name>USER</param-name>  
  16. <param-value>sa</param-value>  
  17. </init-param>  
  18. <init-param>  
  19.    
  20. <param-name>PASSWORD</param-name>  
  21. <param-value></param-value>  
  22. </init-param>  
  23. </servlet>  
  24.    
  25.    
  26. <servlet-mapping>  
  27. <servlet-name>JDBCServlet</servlet-name>  
  28. <url-pattern>/init_servlet</url-pattern>  
  29. </servlet-mapping>  

WEB.XML在你的tomcat/webapp/你的目录/WEB-INF/下..

或者复制tomcat/webapp/ROOT/WEB-INF/下的,,做一下修改就行了.

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值