Struts2 MVC
来源:互联网 发布:日程管理app 知乎 编辑:程序博客网 时间:2024/04/28 00:38
1. 资料
- 江南白衣博物馆--Struts2笔记
- 京山游侠--SpringSide 3 中的 Struts 2
2.选型
Struts的招牌与用户群 + Webwork的较优雅架构 + Convention Plugin实现零配置文件,Struts2已经成为传统MVC里的最安全选择。
当然,GWT,Flex等是另一个潮流了。
3. in SpringSide 3.0
3.1 Convention Plugin实现零配置文件
Convention Plugin是2.1.6最新坐正的零配置Plugin,取代了原来的CodeBehind等插件,详细见详见Struts2笔记。 及其官方文档,Alfa.Shi翻译了中文版。
SpringSide 在struts.xml中重新定义扫描了根package名为web, 即会扫描xxx.xxx.web下所有的子Package。
3.2 CRUDAction的Prepareable与ModelDrivenen接口(涉及CRUD时的可选接口)
CRUD的Action全部使用Prepareable与ModelDriven接口,两个接口都是CRUD界面必备,详见Struts2笔记。
而非CRUD的action是否使用这两个接口就看具体情况了。
因为只有input() 和 save()两个函数需要二次绑定,而list()等函数并不需要,所以根据命名约定实现了prepareInput(),prepareSave()两个函数,Struts2会自动在执行input()与save()前执行它们,详见CRUDAction基类.
4.2. CRUDAction基类(涉及CRUD时的可选基类):
规范了CRUD函数的名称,规定使用ModelDriven和Preparedable接口,并规范了prepare二次绑定接口只在input和save函数中的使用
流程如下:
- 用户打开用户列表页,访问/user.action
a.执行默认的execute() 函数,实际执行list() 函数。
b.list() 函数查询列表放入某list变量,返回SUCCESS,默认跳转到user.jsp
c.user.jsp取出action中的list变量进行渲染。 - 用户新增对象,访问/user!input.action
a.首先将id放入id变量,执行prepareInput()函数创建一个新的user变量
b.input() 函数,返回INPUT,默认跳转到user-input.jsp
c.user-input.jsp 执行getModel()获得user变量渲染input框 - 用户提交Form,访问/user!save.action
a.执行preparedSave()函数创建新的user变量,将input框的内容绑定到getModel()获得的user变量
b.执行save()函数保存user,返回RELOAD,跳转到@Result中定义RELOAD页面,以redirect方式重新打开/user.action - 用户修改对象,访问/user!input.action?id=1
a.绑定id=1到id变量,执行prepareInput()从数据库查询出user。
b.下同2. - 用户提交Form,访问/user!save.action
a.绑定id=1到id变量,执行prepareSave()从数据库查询出user。
b.下同3.
3.3 View相关
- View /Taglib 相关规则详见View/Taglib,
- JSP放在WEB-INF/content 中保证文件不可读,使SpringSecurity专心的只过滤*.action。
- 基于Convention的神奇映射能力,WEB-INF/content/login.jsp的访问地址为/login.action,而且无需编写真正的LoginAction.java。
3.4 输入校验与国际化
- Struts2的validate框架优点是可以在客户端和服务端同时进行校验。
但是因为JQuery的validate plugin客户端检测更加好用,而且客户千方百计绕开客户端,直接发送一个邮箱格式不正确的请求意义不是很大,真的很紧要校验,还可以在服务层进行(参考hibernate validator)。
所以用了JQuery的validate plugin,见Javascript。 - 国际化,因为国际化式的开发是有成本的,挺麻烦的,因为不是每个项目都需要国际化的能力,所以在默认的mini-web示例里就不演示了。
3.5 信息与异常显示
1.页面在跳转时会丢失addActionMessage()的信息, 在struts.xml中配置使用store interceptor,可以在redirect页面时,将信息存储在session中.
2.尽量使用addActionMessage来添加信息, 如果用addActionError会自动跳到input页。
4. SpringSide Core的封装
4.1. Struts2Utils:
- 绕过jsp/freemarker直接输出字符串/JSON/XML的便捷函数,用于ajax请求等简单输出结果,支持encoding,no-cache等参数。
- 获取http request/response/session的简化方法.
- Struts2 MVC
- Struts2 MVC
- Struts2与MVC
- Struts2与MVC
- Spring MVC PK Struts2
- Spring MVC PK Struts2
- MVC以及Struts2
- Spring MVC和Struts2
- Spring MVC PK Struts2
- Spring MVC PK Struts2
- MVC模式 与 Struts2
- MVC框架技术Struts2
- Struts2和MVC
- struts2与spring MVC
- struts2 mvc分析
- Spring MVC和Struts2
- struts2与MVC
- Struts2的MVC思想
- VMware VDI技术与实现
- 直接下载豆瓣fm的全部歌曲py脚本。(json操作)
- Oracle的Environment variable:"path" 失败问题
- 应用内支付
- 【搜索】拯救ice-cream
- Struts2 MVC
- LoadString(nID) Problem and Solution
- page49
- 【搜索】油滴扩展
- eclipse乱码问题
- 用VIM编写C/C++程序
- [影评]《大话西游》之:你看,那人好像一只狗耶(外一篇:我们都是那只流泪的猴子。)
- 手机四种刷机方法
- 解决XP“网上邻居”、“查看工作组计算机”打不开的问题