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

编程技术  /  houtizong 发布于 3年前   45

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;/** *  */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 blocke.printStackTrace();}finally{result.close();stmt.close();connection.close();}} catch (Exception e) {// TODO: handle exception}}}

 

package com.myapp.domain;/** * */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;}}

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客