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
- XML文件配置使用
- 使用XML文件配置AX
- 使用XML文件配置Log4j的方法
- Dozer 使用 xml文件配置1
- Dozer 使用 xml文件配置2
- Dozer 使用 xml文件配置3
- Dozer 使用 xml文件配置4
- 使用XML文件配置Log4j的方法
- Android中使用XML文件配置OptionMenu
- Android中使用XML文件配置OptionMenu
- Android中使用XML文件配置OptionMenu
- [C3P0]XML文件配置及使用
- XML文件配置转化对象使用
- Spring xml 配置使用外部config 文件
- xml文件参数配置及使用
- 使用XML文件方式配置log4cxx(log4cxx xml例子)
- 使用XML文件方式配置log4cxx(log4cxx xml例子)
- 配置ehcache.xml文件
- UESTC 1073 单点更新
- Codeforces 596D 区间DP
- Ubuntu 14.04数据库服务器--mysql的安装和配置
- Android Linux 常用命令
- IOS UITableView 多选,全选删除,拖动,置顶的实现
- XML文件配置使用
- 2048游戏优化,1小时,屏幕适配相关
- 保存文件到手机内存
- Android中视图重绘的方法
- 状态模式(State Pattern)
- ubuntu14.04,以root身份登入桌面!!
- c++ 11 多线线程系列-----------使用c++11 lambda创建线程
- ref与out之间的区别
- MATLAB批量文件重命名(详细解释)