Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189341
  • 博文数量: 92
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1413
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-04 21:12
文章分类
文章存档

2013年(92)

我的朋友

分类: 信息化

2013-03-29 02:38:06

[代码] [Java]代码 package com.exam.control;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.Element  ;
import org.dom4j.io.SAXReader;
/**
 * 解析mystruts.xml文件
 * @author wang
 *
 */
public class ActionMappingManager {
	/**
	 * 保管全部action的ActionMapping
	 */
	private static Map actionMapping=new HashMap();
	
	/**
	 * 此布局方法:根据Action装备文件名称,初始化Action方位文件
	 * @param configMyStrutsName 装备文件名称数组
	 */
	public ActionMappingManager(String[]configMyStrutsName){
		for(String str:configMyStrutsName){
			initMyStrutsXml(str);
		}
	}
	
	
	/**
	 * 加载并解析action装备文件
	 * @param configMyStrutsFileName 装备文件名称
	 */
	@SuppressWarnings("unchecked")
	public void initMyStrutsXml(String configMyStrutsFileName){
			try {
				if(configMyStrutsFileName == null || configMyStrutsFileName.isEmpty()){
					throw new Exception("装备文件名不能为空");
				}
				//根据装备文件方法加载到输入流里
				InputStream is = this.getClass().getResourceAsStream("/" configMyStrutsFileName);
				
				//用dom4j 读取xml文件
				Document doc = new SAXReader().read(is);
				Element root = doc.getRootElement();//获取根方针
				//迭代root
				Iterator actionsIt= root.elements("actions").iterator();
				Element actions = actionsIt.next();
				
				//获取actions里的action
				for(Iterator actionIt = actions.elementIterator("action");actionIt.hasNext();){
					Element action = actionIt.next();
					ActionMapping am = new ActionMapping();
					am.setName(action.attributeValue("name"));
					am.setClassUrl(action.attributeValue("class"));
					
					//遍历全部action的子元素result
					for(Iterator resultLt= action.elementIterator("result");resultLt.hasNext();){
						Element resultElement=resultLt.next();
						String name=resultElement.attributeValue("name");

						//不写默认为success
						if(name==null || "".equals(name)){
							name="success";
						}
						
						Result result = new Result();
						result.setName(name);//success
						result.setRedriect(Boolean.valueOf(resultElement.attributeValue("redirect")));//能否是redriect
						result.setUrl(resultElement.getText());//视图方法
						
						
						//把每个封装好的result 添加到ActionMapping里
						am.addResult(name, result);
					}
					actionMapping.put(am.getName(), am);
				}
				
				//Iterator actions = root.elements("actions").iterator();
			} catch (Exception e) {
				
				e.printStackTrace();
			}
	}
	/**
	 * 根据actionName查询对应的ActionMapping
	 * @param actionName
	 * @return
	 */
	public ActionMapping getActionMappingByName(String actionName)throws Exception{
		if(actionName == null || actionName.isEmpty()){
			return null;
		}
		//查找集结
		ActionMapping mapping = actionMapping.get(actionName);
		if(mapping == null){
			throw new Exception("系统找不到:[" actionName "],请检查装备文件");
		}
		return mapping;
	}
}  
阅读(816) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~