XML文件配置使用

原创 2015年11月19日 00:00:03

XML文件

读取该文件使用dom4j进行读取

WEB-INF下的TOMCAT配置XML文件

该文件主要进行servlet,filter等tomcat相关容器配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

  <filter>
    <filter-name>CharsetEncodingFilter</filter-name>
    <filter-class>com.houlu.drp.util.filter.CharsetEncodingFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>CharsetEncodingFilter</filter-name>
    <url-pattern>*.jsp</url-pattern> 
  </filter-mapping>
  <filter-mapping>
    <filter-name>CharsetEncodingFilter</filter-name>
    <url-pattern>/servlet/*</url-pattern> 
  </filter-mapping>

  <servlet>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>com.houlu.drp.util.servlet.InitServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>


  <servlet>
    <servlet-name>ShowAddItemServlet</servlet-name>
    <servlet-class>com.houlu.drp.basedata.web.ShowAddItemServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ShowAddItemServlet</servlet-name>
    <url-pattern>/servlet/item/ShowAddItemServlet</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>AddItemServlet</servlet-name>
    <servlet-class>com.houlu.drp.basedata.web.AddItemServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>AddItemServlet</servlet-name>
    <url-pattern>/servlet/item/AddItemServlet</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>SearchItemServlet</servlet-name>
    <servlet-class>com.houlu.drp.basedata.web.SearchItemServlet</servlet-class>
  </servlet>


  <servlet-mapping>
    <servlet-name>SearchItemServlet</servlet-name>
    <url-pattern> /servlet/item/SearchItemServlet</url-pattern>
  </servlet-mapping>

</web-app>

这里写图片描述

sys-config.xml文件

该文件是自己建立的,主要包含了jdbc相关信息

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <db-info>
        <driver-name>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-name>
        <url>jdbc:sqlserver://localhost:1433;databaseName=DRPManagement</url>
        <username>a6697238</username>
        <password>monkeyws</password>
    </db-info>
</config>

beans-config.xml文件

该文件配置了项目使用的类名,是程序能够进行动态加载类

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <service-class>
        <service id="com.houlu.drp.basedata.manager.ItemManager" class="com.houlu.drp.basedata.manager.ItemManagerImpl" />
    </service-class>
    <dao-class>
        <dao id="com.houlu.drp.basedata.dao.ItemDao" class="com.houlu.drp.basedata.dao.ItemDao4SqlServerImpl" />
    </dao-class>
</beans>  

建立工厂,动态加载类

  • 建立工具类BeanFactory,该类可以通过读取XML文件的类名,动态 创建对象 ,代替了 new instance() 操作
package com.houlu.drp.util;

import java.util.HashMap;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.houlu.drp.basedata.dao.ItemDao;
import com.houlu.drp.basedata.manager.ItemManager;



/**
 * 抽象工厂,创建两个系列
 * @author Administrator
 *
 */
public class BeanFactory {

    //系统配置文件
    private String beansConfigFile = "beans-config.xml";

    private static BeanFactory instance = null;

    private BeanFactory(){
        try {
            doc = new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream(beansConfigFile));
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            throw new RuntimeException();
        }
    }

    public static BeanFactory getInstance(){
        if (instance == null) {
            synchronized (BeanFactory.class) {
                instance = new BeanFactory();
            }
        }   
        return instance;
    }

    //读取 xml文件的docunment
    private Document doc = null;

    //保存service相关对象
    private Map serviceMap = new HashMap();

    //保存dao相关对象
    private Map daoMap = new HashMap();

    /**
     * 取得Service系列产品
     * @param beanId
     * @return
     */
    public synchronized Object getServiveObject(Class c){
        //如果存在实例,返回
        if(serviceMap.containsKey(c.getName())){
            return serviceMap.get(c.getName());
        }
        Element beanElt = (Element)doc.selectSingleNode("//service[@id=\""+c.getName()+"\"]");
        String className = beanElt.attributeValue("class");
        Object serviceBean = null;
        try {
            serviceBean = Class.forName(className).newInstance();       
            //将创建好的对象放到Map中
            serviceMap.put(c.getName(), serviceBean);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException();
        }
        //System.out.println(className);
        return serviceBean; 
    }

    /**
     * 取得Dao系列产品
     * @param beanId
     * @return
     */
    public synchronized Object getDaoObject(Class c){
        //如果存在实例,返回
        if(daoMap.containsKey(c.getName())){
            return daoMap.get(c.getName());
        }
        Element beanElt = (Element)doc.selectSingleNode("//dao[@id=\""+c.getName()+"\"]");
        String className = beanElt.attributeValue("class");
        Object daoBean = null;
        try {
            daoBean = Class.forName(className).newInstance();       
            //将创建好的对象放到Map中
            daoMap.put(c.getName(), daoBean);
        } catch (Exception e) {
            throw new RuntimeException();
        }
        //System.out.println(className);
        return daoBean; 
    }

    public static void main(String[] args){
//      ItemDao iteDao = (ItemDao)BeanFactory.getInstance().getDaoObject(ItemDao.class);
        ItemManager itemManager = (ItemManager)BeanFactory.getInstance().getServiveObject(ItemManager.class);

//      System.out.println(iteDao);
        System.out.println(itemManager);
    }
}

使用该方法,在需要创建对象的时候,可以通过反射机制装载对象

package com.houlu.drp.basedata.web;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import com.houlu.drp.basedata.dao.ItemDao;
import com.houlu.drp.basedata.manager.ItemManager;
import com.houlu.drp.basedata.manager.ItemManagerImpl;
import com.houlu.drp.util.BeanFactory;


/**
 * 物料servlet抽象
 * @author Administrator
 *
 */
public abstract class AbstractItemServlet extends HttpServlet {

    protected ItemManager itemManager;

    public AbstractItemServlet(){

        System.out.println("AbstractItemServlet-----------Construct");
    }

    @Override
    public void init() throws ServletException{

    //  itemManager = (ItemManager)BeanFactory.getInstance().getServiveObject("itemManager");

        BeanFactory beanFactory = (BeanFactory)this.getServletContext().getAttribute("beanFactory");
        itemManager = (ItemManager)beanFactory.getServiveObject(ItemManager.class);
    }



}

hibernate环境配置和使用

一.hibernate简介        Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。...
  • leimengyuanlian
  • leimengyuanlian
  • 2014年05月26日 21:45
  • 2319

jquery-pager的使用

刚刚调了一个非常头疼的问题,就是用jquery的分页功能, 像下面这样已经配置好了,但就是不起作用,调了半天才发现,原来引用了两次jquery,删掉一个就行了,郁闷死了! jQ...
  • aaa1117a8w5s6d
  • aaa1117a8w5s6d
  • 2012年07月09日 22:29
  • 2814

SSM 配置及使用@Transactional 详解

SSM也就是常用的Spring + Spring MVC + Mybatis 框架 有时候一个方法涉及到多个表的操作,为了保证安全性,可靠性,得用事务,保证几条sql语句,要么全成功,要么回滚。本篇...
  • chaoyechage
  • chaoyechage
  • 2017年10月20日 20:03
  • 169

linux使用外部stmp服务器发送邮件

1、安装senmail apt-get install sendmail 2、
  • u013990248
  • u013990248
  • 2014年08月28日 16:09
  • 823

struts标签库:配置和使用

struts标签库的配置和使用 配置: * 配置国际化支持,在struts-config.xml文件中加入如下配置: * 最好提供国际化资源文件(MessageResources.prope...
  • seeds_home
  • seeds_home
  • 2012年08月23日 08:41
  • 397

Linux下tcpdump的使用

若没有安装,则需要安装  yum install tcpdump* 从所有网卡中捕获数据包 运行下面命令来从所有网卡中捕获数据包:  tcpdump -i any 从指定网卡中捕获...
  • baidu_32452525
  • baidu_32452525
  • 2018年01月13日 22:04
  • 35

C#中使用log4net

log4net是开源日志组件,配置类似log4j。 log4net下载地址:http://logging.apache.org/log4net/ 1.控制台应用配置log4net a.新建控台应用Te...
  • flyliuweisky547
  • flyliuweisky547
  • 2013年11月04日 14:45
  • 1749

JSP/Servelet数据源连接池的配置

1.配置Context.xml文件name="jdbc/books" //引用名可以自定义auth="Container"  //指定管理DataSource的Managertype="javax.s...
  • accp_jiaqiang
  • accp_jiaqiang
  • 2009年07月14日 10:29
  • 192

为 Neutron 准备物理基础设施【II】(12)

本节将按照上一节的规划安装配置控制节点和计算节点。 控制节点 devstack-controller 步骤如下 安装 Ubuntu 14.04 此处省略 256 个字 配置网卡 编辑 /etc/...
  • ice2spring
  • ice2spring
  • 2017年12月21日 15:10
  • 31

CLAPACK在Windows上的安装与使用

CLAPACK
  • xiaolixi199311
  • xiaolixi199311
  • 2018年01月02日 16:49
  • 60
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XML文件配置使用
举报原因:
原因补充:

(最多只允许输入30个字)