我们为什么要学习XML的建模,他可以给我们带来什么好处,我们可以得到什么东西?
我们学习这个XML建模的好处就是,我们也可以在学习XML后更好的掌握java的集合框架现在我们要学习的是XML中的ConfigModel .ActionModel . ForwardModel . ConfigModelDactory
1.往config标签中添加了一个action标签
2.住action标签中添加了4个forward标签
3.将action标签的属性值path.type发生了更改
4.将forward标签的属性值name. type . redirect 发生了更改
以面向对象的思想思考上述操作:
1.confingModel对象中加一个actionModel对象,因为actionModel在configModel中是唯一的,所以在configModel必然有一个属性(容器Map),能够以一对一的方式存储不同个actionModel,还有添加的方法还有查询的方法
2.actinModel 也有一个(容器Map),也有个添加的方法查询的方法
3.actinModel 还有属性path . type
4.forwardModel 有属性name . path .redirect
package com.zkanghao; import java.util.HashMap; import java.util.Map; public class ConfigModel { private MapaMap=new HashMap public void push(ActionModel actionModel) { aMap.put(actionModel.getPath(), actionModel); public ActionModel pop(String path) { return aMap.get(path); public static void main(String[] args) { ConfigModel configModel=new ConfigModel(); ActionModel actionModel = configModel.pop("/loginAction"); ForwardModel forwardModel = actionModel.pop("success"); System.out.println(forwardModel.getPath());();
package com.zkanghao; import java.util.HashMap; import java.util.Map; public class ActionModel { private String path; private String type; private MapfMap = new HashMap public String getPath() { return path; public void setPath(String path) { this.path = path; public String getType() { return type; public void setType(String type) { this.type = type; //将forward往action中放 压栈 public void push(ForwardModel forwardModel) { fMap.put(forwardModel.getName(), forwardModel); //从action中通过name值取出forward public ForwardModel pop(String naem) { return fMap.get(naem);();
package com.zkanghao; import java.util.HashMap; import java.util.Map; public class ActionModel { private String path; private String type; private MapfMap = new HashMap public String getPath() { return path; public void setPath(String path) { this.path = path; public String getType() { return type; public void setType(String type) { this.type = type; //将forward往action中放 压栈 public void push(ForwardModel forwardModel) { fMap.put(forwardModel.getName(), forwardModel); //从action中通过name值取出forward public ForwardModel pop(String naem) { return fMap.get(naem);();
什么是工厂模式,工厂模式是23种模式之一
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。这满足创建型模式中所要求的“创建与使用相分离”的特点。
按实际业务场景划分,工厂模式有 3 种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。
23种设计模式---->工厂模式--->创建型模式
sessionFactory. sqlsessionFactory . securityFactory等等。。。。
package com.zkanghao; import java.io.InputStream; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class ConfigModelFactory { public static ConfigModel build(String xmlPath) throws Exception { ConfigModel configmodel = new ConfigModel(); //读取文件内容 InputStream in = ConfigModelFactory.class.getResourceAsStream(xmlPath); SAXReader sr = new SAXReader(); Document read = sr.read(in); // System.out.println(read.asXML()); //让actionmodel有值,再放入到configmodel中 ListactionEles = read.selectNodes("/config/action"); for (Element actionEle : actionEles) { ActionModel actionmodel = new ActionModel(); actionmodel.setPath(actionEle.attributeValue("path")); actionmodel.setType(actionEle.attributeValue("type")); //让forwardmodel有值,再放入到actionmodel中 ListforwardEles = actionEle.selectNodes("forward"); for (Element forwardEle : forwardEles) { // System.out.println(forwardEle.asXML()); ForwardModel forwardmodel = new ForwardModel(); forwardmodel.setName(forwardEle.attributeValue("name")); forwardmodel.setPath(forwardEle.attributeValue("path")); //当redirect值为false时,是转发,其它则是重定向 forwardmodel.setRedirect(!"false".equals(forwardEle.attributeValue("redirect"))); actionmodel.push(forwardmodel); configmodel.push(actionmodel); return configmodel; public static ConfigModel build() throws Exception { ConfigModel configmodel = new ConfigModel(); //读取文件内容 InputStream in = ConfigModelFactory.class.getResourceAsStream("/config.xml"); SAXReader sr = new SAXReader(); Document read = sr.read(in); // System.out.println(read.asXML()); //让actionmodel有值,再放入到configmodel中 ListactionEles = read.selectNodes("/config/action"); for (Element actionEle : actionEles) { ActionModel actionmodel = new ActionModel(); actionmodel.setPath(actionEle.attributeValue("path")); actionmodel.setType(actionEle.attributeValue("type")); //让forwardmodel有值,再放入到actionmodel中 ListforwardEles = actionEle.selectNodes("forward"); for (Element forwardEle : forwardEles) { // System.out.println(forwardEle.asXML()); ForwardModel forwardmodel = new ForwardModel(); forwardmodel.setName(forwardEle.attributeValue("name")); forwardmodel.setPath(forwardEle.attributeValue("path")); //当redirect值为false时,是转发,其它则是重定向 forwardmodel.setRedirect(!"false".equals(forwardEle.attributeValue("redirect"))); actionmodel.push(forwardmodel); configmodel.push(actionmodel); return configmodel; public static void main(String[] args) throws Exception { // 测试,拿第二个action中第二个forward的path值 ConfigModel configmodel = ConfigModelFactory.build("/config.xml"); ActionModel actionmodel = configmodel.pop("/loginAction"); ForwardModel forwardmodel = actionmodel.pop("success"); System.out.println("第二个action中第二个forward的path值为"+forwardmodel.getPath());
本文地址:https://www.0558.la/article/0720b759f2586dc82211.html
上一篇:javaee和javase有啥区别JavaEE之反射...
下一篇:新注册的域名多久可以备案新注册的域名要如...