Struts2的前景还是稳健的,使用的人数在不断的增加。参看struts 2依然坚挺 Seam前景不明
但基于Struts2的开发,如果没有足够的经验和规范做支撑,并不能带来还多的好处,如果失控,一样和JSP+servlet泛滥,这一点需要警示。
1).Action类及Action Name的命名规范
Action类的后缀统一加上"Action",
Action的Name与类的名称保持一致,但不要"Action"的后缀。
这样是为了通过Action的调用url, 很方便的找到Action类。
1 action name="searchKnowledge"
2 class="com.demo.search.action.SearchKnowledgeAction">
3 result name="search">/demo/search.jspresult>
4 action>
如上,看到/searchKnowledge.action,就可以很清楚的知道类是SearchKnowledgeAction了。很多人不注重这一点,开发调试中,每次都要笨拙的看struts.xml文件。
2).每个项目都必须至少有一个公用的Action类,GenericAction
完成的功能如下:
1.获取、注入request
2.获取、注入Session
3.错误页面跳转
4.获取在线用户和会员的信息(个人信息、权限、角色等)
5.注入类型转换的格式转换类,如日期类型转换:ConvertUtils.register(new DateConverter(), Date.class);
6.获取系统配置信息,如公用变量(如配置路径等)
7.对于request参数的处理等
8.其他可扩展的操作
3).擅长使用Dispatch的模式
有人说Action,不就是Dispatch的延伸吗,其实还可以做的更好。
这个典型的模式如下:
1.页面表单的Hidden参数中,就是一个ID,如queryID="queryKnowledges". Action="/paginate.action"
2.PaginateAction的模板如下
1private String queryID;
2 public String execute() {
3 //获得Service的接口
4 //根据queryID调用Ibatis分页查询方法
5 return queryID; //这一点,就是动态跳转,在Action不明确注明"success"之类的跳转名称。
6 }
3.在struts.xml中进行配置与queryID想对应:
1 action name="paginate"
2 class="com.gehc.util.pagination.PaginateAction">
3 result name="queryKnowledges">
4 /demo/knowledgeList.jsp
5 result>
6
7 result name="queryIssue">
8 /pm/issue/allIssue.jsp
9 result>
10
11 action>
实战代码如下:
4).配置文件的目录结构
5).不断的提炼公用的Action,并放在一个package中:
如上传、下载、异常处理、excel数据录入、过滤器(filter)、截取器(inteceptor)等等
6).将一个模块中的Action放置在一起
7).擅与使用redirect来保持request参数.
使用redirect一样可以将request参数传递到下一页面中,不需要使用session.
viewPost?postid=${postid}
public String execute() throws Exception {
//一些处理……
name=xiaowang ; //给要传递的参数赋值
return SUCCESS; //默认页面
//return "redirect_1" ; //重定向(不带参数) showInfo.do
//return "redirect_2" ; //重定向(带固定参数yangzi) showInfo.do?name=yangzi
//重定向(带动态参数,根据struts.xml的配置将${name}赋值为xiaowang)最后为 showInfo.do?name=xiaowang
// return "redirect_3" ;
//return "redirect_4" ; //这个是重定向到 一个action
}
action name="login" class="LoginAction">
result name="success" type="velocity">/pages/logok.vmresult>
result name="redirect_1" type="redirect">showInfo.doresult>
result name="redirect_2" type="redirect">showInfo.do?name=yangziresult>
result name="redirect_3" type="redirect">showInfo.do?name=${name}result>
result name="redirect_4" type= "redirect">
param name="actionName">showInfoparam>
param name="name">${name}param>
result>
action>
8)灵活使用chain模式,来编写简短而高度重用的Action,把相关的几个action连接起来,共同完成一个功能。
同一个Chain的多个action间数据的传递非常方便,由于处于chain中的action属于同一个http请求,共享一个ActionContext,故可以在上下文中获取,在页面上可以直接使用,上一个Action的成员变量。
1<action name="step1" class="test.Step1Action">
2 <result name="success" type="chain">step2.action</result>
3</action>
4
5<action name="step2" class="test.Step2Action">
6 <result name="success">finish.jsp</result>
7</action>
9) 编写简洁而高度重用的Action的另一个方法,就是将页面的渲染,格式转换的逻辑,抽取出来,自定义成Result。
官方的Result
Chain Result - 用于 Action Chaining
Dispatcher Result - 用于 JSP 整合
FreeMarker Result - 用于 FreeMarker 整合
HttpHeader Result - 用于控制特殊的HTTP行为
JasperReports Result - 用于 JasperReports 整合
Redirect Result - 用于直接跳转到例外的URL
Redirect Action Result - 用于直接跳转到另外的action
Stream Result - 用于向浏览器返回一个InputStream (一般用于文件下载)
Velocity Result - 用于 Velocity 整合
XSL Result - 用于 XML/XSLT 整合
PlainText Result - 用于显示某个页面的原始的文本 (例如 jsp, html 等)
Json Result
JFreechart Result
10) 明确Action类不要超长,如不要超过500行代码。
很多人为了偷懒,喜欢在一个Action中,不断的添加方法,而不管这些方法与Action的语义是否符合,到底是多个Action,还是多个方法,在开发过程中,还是要注重这些方法是否与创建Action类的目的、语义保持一致。
最好明确代码的长度,团队人多,手杂,水平不一,为了保证可维护性,这是一个不得已的方法。
分享到:
相关推荐
《Struts 2.1权威指南》是《Struts 2权威指南》的第二版,《Struts 2.1权威指南》介绍的Struts 2是最新的Struts 2.1。相对于2007年发布的Struts 2.0,Struts 2.1改变较大,Struts 2.1不仅修正了Struts 2.0中少量Bug...
Struts2权威指南 带目录索引完整版
不用多说了,Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版),解压出来有200多M,因为权限不怎么够,我一共分了12卷,是一本不可多得的好书。第一卷附目录: 第1章 Struts 2概述,第2章 Struts 2下的Hello...
书中通过大量的示范性实例(全书范例近百个),逐一、详细地讲解了Struts2各知识点的用法,并细致地讲解每个用法的各种参数、选项,可以帮助读者入门到精通。 3.配合案例,快速提高 《Struts 2.1权威指南》最后配备...
Struts2权威指南完整版PDFStruts2权威指南完整版PDF
struts2 权威指南 李刚 源代码 完整
Struts2权威指南pdf 源码 java Spring Hibernate
Struts2权威指南完整版.pdf 不错的Struts入门教程 也可以当工具书
struts2权威指南.rar struts2权威指南.rar struts2权威指南.rar struts2权威指南.rar
Struts2权威指南(完整版)含源码 Struts2权威指南(完整版)含源码
struts2权威指南中的源代码,但是都没有架包哦!主要原因是JAR太多了 那样文件就太大了!用的struts2.0.6的版本!
struts2权威指南完整版PDF(共21章)
struts2权威指南 电子书 配套源码 文件大小153mb 分为8个压缩包,每分卷1分,每分卷20兆(最多只让上传20兆,没有办法) struts2权威指南电子书连接:http://sdan250.download.csdn.net/user/sdan250/all/3
Struts2权威指南全部源码.但我发现,有些就算跟着代码打,也有错误。所以下载的请谨慎
Struts 2权威指南源码.rar
Struts2权威指南Struts2权威指南Struts2权威指南
struts2权威指南struts2权威指南struts2权威指南
struts2权威指南struts2权威指南struts2权威指南struts2权威指南struts2权威指南struts2权威指南struts2权威指南struts2权威指南struts2权威指南
Struts2.1权威指南 李刚的著作 共四个部分 用7-zip解压