转自:http://blog.csdn.net/liaoxiaohua1981/article/details/6855328
resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联
- <resource-env-ref>
- <resource-env-ref-name>资源名</resource-env-ref-name>
- <resource-env-ref-type>查找资源时返回的资源类名</resource-env-ref-type>
- </resource-env-ref>
<resource-env-ref-name>:资源的名称 相对于java:comp/env >>context
<resource-env-ref-type>:当web应用查找该资源的时候,返回的Java类名的全称
建立步骤:
先在meta-inf目录下新建一个Context.xml文件配置如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <Context>
- <!--对于javax.sql.DataSource资源类型 Tomcat容器提供了默认factory org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory -->
- <Resource name="jdbc/mssql" auth="Container"
- type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver"
- url="jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=spring3mvc"
- username="sa" password="wlyoa_)*#!" >
- </Resource>
- <Resource name="bean/MyBeanFactory" auth="Container"
- type="com.myapp.domain.MyBean" factory="org.apache.naming.factory.BeanFactory" projectName="我的测试项目">
- </Resource>
- </Context>
在web.xml中添加资源引用
- <!--定义外部资源管理对象 在Web容器目录的conf\Catalina\localhost\工程名.xml文件中(可见示例文件:WebContext.xml) -->
- <resource-env-ref>
- <resource-env-ref-name>bean/MyBeanFactory</resource-env-ref-name>
- <resource-env-ref-type>com.myapp.domain.MyBean</resource-env-ref-type>
- </resource-env-ref>
- <resource-env-ref>
- <resource-env-ref-name>jdbc/mssql</resource-env-ref-name>
- <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
- </resource-env-ref>
在Servlet类中可通过如下方式查找或使用资源
- /**
- *
- */
- package com.myapp.controller;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import javax.naming.Context;
- import javax.naming.InitialContext;
- import javax.naming.NamingException;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.sql.DataSource;
- import com.myapp.domain.MyBean;
- /**
- * @author louisliao
- *我的第一个Servlet
- */
- public class MyFirstServlet extends HttpServlet {
- private String servletInitParam="";
- /**
- *
- */
- public MyFirstServlet() {
- // TODO Auto-generated constructor stub
- }
- public void init(){
- servletInitParam=this.getInitParameter("ServletInitParam");
- }
- public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
- testDataSourceJNDI();
- testBeanSourceJNDI();
- String parame1=getServletContext().getInitParameter("MyContextParam");
- String projectName=getServletContext().getInitParameter("ProjectName");
- System.out.println("上下文初始化参数1:"+parame1);
- System.out.println("上下文初始化参数2:"+projectName);
- PrintWriter writer=response.getWriter();
- writer.println("<html><head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>");
- writer.println(projectName);
- writer.println("</title></head>");
- writer.println("<body>");
- writer.println(servletInitParam+":"+servletInitParam+"<br/>");
- writer.println("上下文初始化参数1:"+parame1+"<br/>");
- writer.println("上下文初始化参数2:"+projectName+"<br/>");
- writer.println("</body></html>");
- }
- public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
- doGet(request, response);
- }
- public void destroy() {
- super.destroy();
- System.out.println("我是destroy()方法!用来进行销毁实例的工作");
- }
- /**
- * Java-Bean资源读取测试
- */
- private void testBeanSourceJNDI()
- {
- try {
- System.err.println("testBeanSourceJNDI");
- Context context=new InitialContext();
- Context envContext=(Context)context.lookup("java:/comp/env");
- MyBean mBean=(MyBean)envContext.lookup("bean/MyBeanFactory");
- System.out.println(mBean.getHello()+":"+mBean.getProjectName());
- } catch (Exception e) {
- // TODO: handle exception
- }
- }
- /**
- * DataSource资源测试
- */
- private void testDataSourceJNDI()
- {
- try {
- System.err.println("DataSourceJNDI");
- Connection connection=null;
- ResultSet result = null;
- Statement stmt = null;
- Context context=new InitialContext();
- Context envContext=(Context)context.lookup("java:/comp/env");
- DataSource dataSource=(DataSource)envContext.lookup("jdbc/mssql");
- try {
- connection=dataSource.getConnection();
- stmt=connection.createStatement();
- result=stmt.executeQuery("select * from Author");
- while (result.next()) {
- System.out.println(result.getString("name"));
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- finally{
- result.close();
- stmt.close();
- connection.close();
- }
- } catch (Exception e) {
- // TODO: handle exception
- }
- }
- }
- /**
- *
- */
- package com.myapp.domain;
- /**
- * @author louisliao
- *
- */
- public class MyBean {
- private String projectName;
- private String hello="欢迎使用";
- public String getProjectName() {
- return projectName;
- }
- public void setProjectName(String projectName) {
- this.projectName = projectName;
- }
- public String getHello() {
- return hello;
- }
- public void setHello(String hello) {
- this.hello = hello;
- }
- }