设为首页 加入收藏

TOP

Struts2 MVC底层的简单实现(一)
2014-11-24 01:43:08 来源: 作者: 【 】 浏览:5
Tags:Struts2 MVC 底层 简单 实现

一直想写Struts2的底层实现,酝酿了两个星期,今天把它实现。
首先,我们在运用的时候都会使用action,实现跳转,下面我们写一个UserAction:
public class UserAction {
public String toAddUser(){
return "success";
}

public String addUser(){
return "adduser";
}
}


我们在使用Struts2的时候,一个很重要的配置文件是:struts.xml,因此我们需要读取它,知道他里面的内容,java解析xml我写过了一篇文章,可以去看看。


下面我们写一个配置文件:
< xml version="1.0" encoding="UTF-8" >



/success.jsp
/addUser.jsp



之后我们就需要去读取这个配置文件,但是之前我们需要我们需要建立几个实体类去存储这些元素,由外到内排列:
1.package的实体类


import java.util.List;
public class PackageEntity {

private String name;
private String namespace;
private List actions;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNamespace() {
return namespace;
}
public void setNamespace(String namespace) {
this.namespace = namespace;
}
public List getActions() {
return actions;
}
public void setActions(List actions) {
this.actions = actions;
}
}


private List actions;是吧action实体类的内容放到package中。
2.action的实体类


import java.util.List;
public class ActionEntity {
private String name;
private String classname;
private List results;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
public List getResults() {
return results;
}
public void setResults(List results) {
this.results = results;
}
}


private List results;是把result的实体类放到action中。
3.result的实体类
public class ResultEntity {
private String name;
private String page;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
}


page是指后面的jsp。
经过两个list就把配置文件中所有的元素集中到package中,便于下面的跳转。
下面写一个配置的工具类:
public class ConfigUtils {
//new一个package的对象,便于调用元素
public static PackageEntity pe=new PackageEntity();


public static void config(){
SAXReader reader=new SAXReader();
try {
//读取struts.xml
Document doc=reader.read(Thread.currentThread().getContextClassLoader().getResourceAsStream("struts.xml"));
//读取根元素
Element root=doc.getRootElement();
//得到根元素下的节点元素
Element packageElement=root.element("package");
List actions=new ArrayList();
pe.setName(packageElement.attributeva lue("name"));
pe.setNamespace(packageElement.attributeva lue("namespace"));
//得到根元素下的节点元素
List listActions=packageElement.elements("action");
for(Element actionElement:listActions){
ActionEntity ae=new ActionEntity();
//得到子节点
ae.setName(actionElement.attributeva lue("name"));
ae.setClassname(actionElement.attributeva lue("class"));
//得到根元素下的节点元素
List resultElements

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用Lua脚本语言开发出高扩展性的.. 下一篇利用Aspose.Imaging for .NET转换..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: