web.xml之资源管理对象配置 resource-env-ref

转自:http://blog.csdn.net/liaoxiaohua1981/article/details/6855328

resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联

  1. <resource-env-ref>  
  2. <resource-env-ref-name>资源名</resource-env-ref-name>  
  3. <resource-env-ref-type>查找资源时返回的资源类名</resource-env-ref-type>  
  4.   
  5. </resource-env-ref>  


<resource-env-ref-name>:资源的名称 相对于java:comp/env >>context

<resource-env-ref-type>:当web应用查找该资源的时候,返回的Java类名的全称

 

建立步骤:

先在meta-inf目录下新建一个Context.xml文件配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Context>  
  3. <!--对于javax.sql.DataSource资源类型 Tomcat容器提供了默认factory org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory -->  
  4. <Resource name="jdbc/mssql" auth="Container"  
  5.           type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver"  
  6.           url="jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=spring3mvc"  
  7.           username="sa" password="wlyoa_)*#!" >  
  8. </Resource>  
  9. <Resource name="bean/MyBeanFactory" auth="Container"  
  10.           type="com.myapp.domain.MyBean"  factory="org.apache.naming.factory.BeanFactory" projectName="我的测试项目">  
  11. </Resource>  
  12. </Context>  

在web.xml中添加资源引用

  1. <!--定义外部资源管理对象 在Web容器目录的conf\Catalina\localhost\工程名.xml文件中(可见示例文件:WebContext.xml) -->  
  2.  <resource-env-ref>  
  3.   <resource-env-ref-name>bean/MyBeanFactory</resource-env-ref-name>  
  4.   <resource-env-ref-type>com.myapp.domain.MyBean</resource-env-ref-type>  
  5.  </resource-env-ref>  
  6.  <resource-env-ref>  
  7.   <resource-env-ref-name>jdbc/mssql</resource-env-ref-name>  
  8.   <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>  
  9.  </resource-env-ref>  


在Servlet类中可通过如下方式查找或使用资源

   

  1. /** 
  2.  *  
  3.  */  
  4. package com.myapp.controller;  
  5. import java.io.IOException;  
  6. import java.io.PrintWriter;  
  7. import java.sql.Connection;  
  8. import java.sql.ResultSet;  
  9. import java.sql.SQLException;  
  10. import java.sql.Statement;  
  11.   
  12. import javax.naming.Context;  
  13. import javax.naming.InitialContext;  
  14. import javax.naming.NamingException;  
  15. import javax.servlet.ServletException;  
  16. import javax.servlet.http.HttpServlet;  
  17. import javax.servlet.http.HttpServletRequest;  
  18. import javax.servlet.http.HttpServletResponse;  
  19. import javax.sql.DataSource;  
  20.   
  21. import com.myapp.domain.MyBean;  
  22.   
  23. /** 
  24.  * @author louisliao 
  25.  *我的第一个Servlet 
  26.  */  
  27. public class MyFirstServlet extends HttpServlet {  
  28.   
  29.     private String servletInitParam="";  
  30.     /** 
  31.      *  
  32.      */  
  33.     public MyFirstServlet() {  
  34.         // TODO Auto-generated constructor stub  
  35.     }  
  36.   
  37.     public void init(){  
  38.         servletInitParam=this.getInitParameter("ServletInitParam");  
  39.     }  
  40.     public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {  
  41.           
  42.         testDataSourceJNDI();  
  43.         testBeanSourceJNDI();  
  44.         String parame1=getServletContext().getInitParameter("MyContextParam");  
  45.         String projectName=getServletContext().getInitParameter("ProjectName");  
  46.         System.out.println("上下文初始化参数1:"+parame1);  
  47.         System.out.println("上下文初始化参数2:"+projectName);  
  48.         PrintWriter writer=response.getWriter();  
  49.         writer.println("<html><head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>");  
  50.         writer.println(projectName);  
  51.         writer.println("</title></head>");  
  52.         writer.println("<body>");  
  53.         writer.println(servletInitParam+":"+servletInitParam+"<br/>");  
  54.         writer.println("上下文初始化参数1:"+parame1+"<br/>");  
  55.         writer.println("上下文初始化参数2:"+projectName+"<br/>");  
  56.         writer.println("</body></html>");  
  57.     }  
  58.     public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {  
  59.         doGet(request, response);  
  60.     }  
  61.     public void destroy() {  
  62.         super.destroy();  
  63.         System.out.println("我是destroy()方法!用来进行销毁实例的工作");  
  64.     }  
  65.     /** 
  66.      * Java-Bean资源读取测试 
  67.      */  
  68.     private void testBeanSourceJNDI()  
  69.     {  
  70.         try {  
  71.             System.err.println("testBeanSourceJNDI");  
  72.             Context context=new InitialContext();  
  73.             Context envContext=(Context)context.lookup("java:/comp/env");  
  74.             MyBean mBean=(MyBean)envContext.lookup("bean/MyBeanFactory");  
  75.             System.out.println(mBean.getHello()+":"+mBean.getProjectName());  
  76.               
  77.         } catch (Exception e) {  
  78.             // TODO: handle exception  
  79.         }  
  80.     }  
  81.     /** 
  82.      * DataSource资源测试 
  83.      */  
  84.     private void testDataSourceJNDI()   
  85.     {  
  86.         try {  
  87.               
  88.         System.err.println("DataSourceJNDI");  
  89.         Connection connection=null;  
  90.         ResultSet result = null;  
  91.         Statement stmt = null;  
  92.         Context context=new InitialContext();  
  93.         Context envContext=(Context)context.lookup("java:/comp/env");  
  94.         DataSource dataSource=(DataSource)envContext.lookup("jdbc/mssql");  
  95.         try {  
  96.             connection=dataSource.getConnection();  
  97.             stmt=connection.createStatement();  
  98.             result=stmt.executeQuery("select * from Author");  
  99.             while (result.next()) {  
  100.                 System.out.println(result.getString("name"));  
  101.                   
  102.             }  
  103.         } catch (SQLException e) {  
  104.             // TODO Auto-generated catch block  
  105.             e.printStackTrace();  
  106.         }  
  107.         finally{  
  108.             result.close();  
  109.             stmt.close();  
  110.             connection.close();  
  111.         }  
  112.         } catch (Exception e) {  
  113.             // TODO: handle exception  
  114.         }  
  115.     }  
  116. }  


 


 

  1. /** 
  2.  *  
  3.  */  
  4. package com.myapp.domain;  
  5.   
  6. /** 
  7.  * @author louisliao 
  8.  * 
  9.  */  
  10. public class MyBean {  
  11. private String projectName;  
  12. private String hello="欢迎使用";  
  13. public String getProjectName() {  
  14.     return projectName;  
  15. }  
  16. public void setProjectName(String projectName) {  
  17.     this.projectName = projectName;  
  18. }  
  19. public String getHello() {  
  20.     return hello;  
  21. }  
  22. public void setHello(String hello) {  
  23.     this.hello = hello;  
  24. }  
  25.   
  26. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值