XML文件配置使用

来源:互联网 发布:淘宝潮牌男模特排名 编辑:程序博客网 时间:2024/06/06 00:30

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);    }}
0 0
原创粉丝点击