首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

利用java反照模拟struts2工作

2012-09-17 
利用java反射模拟struts2工作webwork.xml文件,类似于struts2中的struts2.xml result元素中目前支持jsp与js

利用java反射模拟struts2工作
webwork.xml文件,类似于struts2中的struts2.xml



result元素中目前支持jsp与json类型,支持json类型的返回调用主要是为了ajax的支持,在ajax中使用json来传值当然方便很多,当然以后可以扩展更多的返回类型,比如freemarker等等。
下面来看看如何装载xml文件中的各个元素。为了以后方便扩展,分别写了4个相应的bean配置。

actionConfig.java,resultConfig.java,paramConfig.java,WebworkXmlConfig.java


再来看一下对url请求处理。



不管客户端是以get或post类型请求都将交给execute来处理,然而execute加了synchronized 关键字,主要是为了线程安全,为什么要在execute方法中每次都装载一次webwork.xml文件呢,这样设计的目的主要是为了有时需要改变webwork.xml中的逻辑时不需要再去重启服务器这样的麻烦事儿。
看一下方法执行后的结果交给了ResultManager类来处理,在返回值的处理使用了设计模式中的状态模式来处理,由于富应用的兴起,不能只是简单的视图跳转,所以可以通过状态模式来扩展自己想以各种各样的类型来返回数据给客户端,在这我只写了两个类型处理,分别是Jsp与Json状态类型。先来看一下两个状态的顶层接口。



然后再来看一下ResultManager类如何来控制result类型的控制访问的。

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AjaxAction {private User user;public String execute(HttpServletRequest req, HttpServletResponse resp) {System.out.println("success!");return "";}public String ajaxTest(HttpServletRequest req, HttpServletResponse resp) {user.setAge(18);user.setBirth("1988-12-12");user.setSex("男");user.setUsername("admin");return "ajaxResponse";}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}


测试结果表明json结果已经返回到客户端,在客户端自己需要下载json2.js来解析服务器端返回的json数据。
看……一个简单的MVC小框架就已经出来了,但是一个真正的MVC框架考虑的远不止这些,还有更多的工作需要去分析设计,这只是为了理解一下MVC模式。

[来自网络的收藏,非原创]

热点排行