对xml文件封装思想的处理

配置文件的封装:

<?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();
        }
    }
}
时间: 2024-12-31 03:36:49

对xml文件封装思想的处理的相关文章

解析服务器端回传 XML 文件并封装为对象

起因 项目的上游数据对接方通过XML文件与主体项目进行通信,获取其XML的方法为通过HTTP的GET请求返回XML文件,之前还未遇到过这种传递方式,就稍微查了一下资料,写了一个出来,如果你也有类似的需求,可供参考. 正文 整个"接收-存储-查询-赋值"由两个模块组成,即"接收-存储"与"查询-赋值",配合一个用于封装的实体类与一个提高复用性的"Date-String"转换工具类. 整体的思路很简单,首先用java的"

瞎j8封装第二版之用xml文件来代理dao接口

也是重新整理了之前的那篇 模仿Mybatis用map per.xml实现Dao层接口的功能 话不多说直接上代码 首先是结构 依赖pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta

sax解析xml文件,封装到对象中

创建User.java类 public class User { private String id; private String name; private String age; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public

java读取XML文件,及封装XML字符串

package com.yyl.text; import java.io.FileInputStream; import java.util.ArrayList; import org.junit.Test; import org.nuxeo.common.xmap.XMap; import com.yin.vo.Book; import com.yin.vo.Books; public class XmapTest { /** * 读取XML文件内容 * @throws Exception *

【PHP对XML文件的操作技术【完整版】】

无论是c/c++还是java.c#均有对XML文件操作的技术,PHP对XML文件的操作的技术主要有三种: DOM.XPath.SimpleXml. 一.DOM DOM:Document Object Model ,中文名字为“文档对象模型” 核心思想:把一个xml文件看作是一个对象模型,然后通过对象的方式来操作xml文件 注意: 当将xml文件看成对象的时候,一般将标签称作节点解析xml文件的时候,相当于建立一棵树,树的节点可以表示标签.内容.属性等 DOM解析XML文件的流程: 1 PHP d

Android学习之XML数据的三种解析方式以及生成XML文件

首先,我得声明,本博客的思想主要参考了此博客:http://blog.csdn.net/liuhe688/article/details/6415593 不过代码我自己一句句敲的 好了,首先讲一下解析XML的三种方式:(恕我粘贴一下哈) SAX解析器: SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理.在事件源调用事件处理器中特定方

Spring介绍及配置(XML文件配置和注解配置)

本节内容: Spring介绍 Spring搭建 Spring概念 Spring配置讲解 使用注解配置Spring 一.Spring介绍 1. 什么是Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由 RodJohnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构

曹工说Spring Boot源码(9)-- Spring解析xml文件,到底从中得到了什么(context命名空间上)

写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean de

xml文件存储

模拟备份短信功能,首先要知道存短信得分为四个部分,短信体,时间,传送方式:接收/发送,还有就是电话号码. 然后我们定义一个javabean对他进行封装.然后通过stringbuffer拼接好,传入到本地sd卡中,就完成了: 短信封装类 package com.example.xmlsave; public class Mess { private String body; private String date; private String address; private String ty