Struts和Webwork
![](/icons/21346de.gif)
扇子请跳过本篇
![](/icons/21346dou2.gif)
MVC不就是把M、V、C分开么?至唯物朴素
![](/icons/21346de.gif)
做法是两个JSP
![](/icons/21346yi.gif)
个负责View
![](/icons/21346dou.gif)
![](/icons/21346yi.gif)
个负责Controller
![](/icons/21346dou.gif)
再加
![](/icons/21346yi.gif)
个负责Model
![](/icons/21346de.gif)
Java Bean
![](/icons/21346dou.gif)
已经可以工作得很好
![](/icons/21346dou.gif)
那时候
![](/icons/21346yi.gif)
切都很简单
![](/icons/21346dou2.gif)
而现在为了
![](/icons/21346yi.gif)
些不是本质
![](/icons/21346de.gif)
功能
![](/icons/21346dou.gif)
冒出这么多非标准
![](/icons/21346de.gif)
Web框架
![](/icons/21346dou.gif)
实在让人
![](/icons/21346yi.gif)
阵郁闷
![](/icons/21346dou2.gif)
像Ruby _disibledevent="insert"把
![](/icons/21346yi.gif)
组相关action交给
![](/icons/21346yi.gif)
个Controler控制
![](/icons/21346dou2.gif)
ROR和制作中
![](/icons/21346de.gif)
Groovy On Rails都是这种模式
![](/icons/21346dou.gif)
Spring也有MultiActionController支持
![](/icons/21346dou2.gif)
以上 3者都是把URL参数直接反射为Controller
![](/icons/21346de.gif)
![](/icons/21346hanshu.gif)
![](/icons/21346dou.gif)
而Stripes
![](/icons/21346de.gif)
设计可用annotation标注url action到响应
![](/icons/21346hanshu.gif)
![](/icons/21346de.gif)
映射
![](/icons/21346dou2.gif)
3.3.xml宣告式编程
![](/icons/21346de.gif)
取舍
我
![](/icons/21346de.gif)
取舍很简单
![](/icons/21346dou.gif)
反正Spring没有任何强制
![](/icons/21346dou.gif)
我只在可能需要不重新编译而改变某些东西
![](/icons/21346de.gif)
时候
![](/icons/21346dou.gif)
才把东西放在xml里动态注入
![](/icons/21346dou2.gif)
jsp路径的类
![](/icons/21346de.gif)
就统统收回到controller里面定义.
3.4.Data Binder
Data Binder是Controller
![](/icons/21346de.gif)
必有环节
![](/icons/21346dou.gif)
对于Spring提供
![](/icons/21346de.gif)
DataBinder
![](/icons/21346dou.gif)
照理完全可用
![](/icons/21346dou.gif)
唯
![](/icons/21346yi.gif)
不爽是对象如果有内嵌对象
![](/icons/21346dou.gif)
如订单对象里面包含了Customer对象
![](/icons/21346dou.gif)
Spring需要你先自行创建了Customer对象并把它赋给了Order对象
![](/icons/21346dou.gif)
才可能实现order.customer.customer_no这样
![](/icons/21346de.gif)
绑定
![](/icons/21346dou2.gif)
我偷懒
![](/icons/21346dou.gif)
又拿Jakarta BeanUtils出来自己做了
![](/icons/21346yi.gif)
个Binder
![](/icons/21346dou2.gif)
3.5.提取基类
最后还是忍不住提取了
![](/icons/21346yi.gif)
个基类
![](/icons/21346dou.gif)
负责MultiAction和其他
![](/icons/21346yi.gif)
些简便
![](/icons/21346de.gif)
思路方法
![](/icons/21346dou2.gif)
Sprnig
![](/icons/21346de.gif)
MultiActionController做得太死
![](/icons/21346dou.gif)
规定所有
![](/icons/21346hanshu.gif)
![](/icons/21346de.gif)
第1,2个参数必须是request和response
![](/icons/21346dou.gif)
不懂动态
![](/icons/21346de.gif)
![](/icons/21346dou.gif)
温柔
![](/icons/21346de.gif)
进行参数注入
![](/icons/21346dou2.gif)
经过化简再化简
![](/icons/21346dou.gif)
已经是很简单
![](/icons/21346yi.gif)
个Java Bean
![](/icons/21346dou.gif)
任谁都可以轻松上手
![](/icons/21346dou.gif)
即使某年某月技术
![](/icons/21346de.gif)
大潮把现在所有MVC框架都淹没了
![](/icons/21346dou.gif)
也不至于没人识得维护
延伸阅读
最新评论