码迷,mamicode.com
首页 > 其他好文 > 详细

对xml文件封装思想的处理

时间:2015-12-28 22:01:22      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

配置文件的封装:

<?xml version="1.0" encoding="UTF-8"?>
<mystruts>
        <action name="login" class="cn.lyjs.framework.action.LoginAction" method="login">
            <result name="loginFaild" >/login.jsp </result>
            <result name="loginSuccess" type="redirect">/index.jsp </result>
        </action>
        
        <action name="register" class="cn.lyjs.framework.action.RegisterAction" method="register">
            <result name="registerSuccess" type="redirect">/index.jsp </result>
        </action>
</mystruts>

如果对这个配置文件进行封装,采用由里到外的思想,层层封装。

result---》action----》package

对result封装

package cn.lyjs.framework.bean;

public class Result {
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getPage() {
        return page;
    }
    public void setPage(String page) {
        this.page = page;
    }
    //跳转的结果标记
    private String name;
    //跳转的类型  转发  重定向
    private String type;
    //跳转的页面
    private String page;
}

对Action的封装

package cn.lyjs.framework.bean;

import java.util.Map;

/**
 * 封装action节点
 *         <action name="login" class="" method="">
            <result name="" type=""> </result>
        </action>
 * @author Lavender
 *
 */
public class ActionMapping {
    //请求路径名称
    private String className;
    //处理action类的全名
    private String classPath;
    //处理方法
    private String method;
    //结果视图集合
    private Map<String,Result> results;
    public String getClassName() {
        return className;
    }
    public void setClassName(String className) {
        this.className = className;
    }
    public String getClassPath() {
        return classPath;
    }
    public void setClassPath(String classPath) {
        this.classPath = classPath;
    }
    public String getMethod() {
        return method;
    }
    public void setMethod(String method) {
        this.method = method;
    }
    public Map<String, Result> getResults() {
        return results;
    }
    public void setResults(Map<String, Result> results) {
        this.results = results;
    }

}

所有Action加入集合

package cn.lyjs.framework.bean;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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


public class ActionMappingManager {
    
    private Map<String,ActionMapping> allActions;
    
    public ActionMappingManager(){
        allActions = new HashMap<String,ActionMapping>();
        // 初始化
        this.init();
    }
    
    public ActionMapping getActionMapping(String actionName){
        if(actionName==null){
            throw new RuntimeException("传入参数有误,请查看struts.xml配置的路径。");
        }
        ActionMapping actionMapping=allActions.get(actionName);
        if(actionMapping==null){
            throw new RuntimeException("路径在struts.xml中找不到,请检查");
        }
        return actionMapping;
    }
    
    private void init(){
        try {
            SAXReader reader=new SAXReader();
            InputStream inputStream=this.getClass().getResourceAsStream("/mystruts.xml");
            Document docment= reader.read(inputStream);
            Element root=docment.getRootElement();
            Element packageList=root.element("package");
        //    for(Element list: packageList){
                List<Element> listAction=packageList.elements("action");
                for(Element ele_action:listAction){
                    ActionMapping actionMapping=new ActionMapping();
                    actionMapping.setClassName(ele_action.attributeValue("name"));
                    actionMapping.setClassPath(ele_action.attributeValue("class"));
                    actionMapping.setMethod(ele_action.attributeValue("method"));
                    Map<String,Result> results=new HashMap<String, Result>();
                    Iterator i=ele_action.elementIterator("result");
                    while(i.hasNext()){
                        Element ele_result=(Element) i.next();
                        Result result=new Result();
                        result.setName(ele_result.attributeValue("name"));
                        result.setType(ele_result.attributeValue("type"));
                        result.setPage(ele_result.getTextTrim());
                        results.put(result.getName(), result);
                    }
                    actionMapping.setResults(results);
                    allActions.put(actionMapping.getClassName(), actionMapping);
                }
                
                
        //    }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

对xml文件封装思想的处理

标签:

原文地址:http://www.cnblogs.com/lyjs/p/5084096.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!