- 浏览: 550888 次
- 来自: 广州
文章分类
最新评论
-
moshalanye:
不是没人顶,而是江南白衣 是SpringSide的创始人,C ...
编写对GC友好,又不泄漏的代码 -
awdxzc:
请教,stand meeting要怎么开效率比较高? 要求团队 ...
假如只能把四种软件开发实践写在手背上 -
congjl2002:
你好,我使用的JDK6,以下信息是否说明MaxPermSize ...
JDK5.0垃圾收集优化之--Don't Pause -
步青龙:
好书啊,顶下!!!
架构师09年书单 -
Wuaner:
这么好的文章, 没人顶?! 引用6.内存泄漏 java 不 ...
编写对GC友好,又不泄漏的代码
本文来自SpringSide WIki,请留意Wiki上的最新版本。
初学struts, 抛块砖头出来,请各位常年与Struts作战的兄弟点评。
Struts 1.2 其实已经大不同,只要大家有简约的态度,即使我们日常的Struts,同样可以写得非常精简,不一定要如传统观念认为的那么繁重,从而节省每天编码的时间。
Struts与Spring结合的基本知识请阅读Struts使用要点。
1.DispatchAction
以一个Controller响应一组动作绝对是Controller界的真理,Struts的DispatchAction同样可以做到这点。
<forward name="list" path="/admin/userList.jsp"/>
action>
其中parameter="method" 设置了用来指定响应方法名的url参数名为method,即/admin/user.do?method=list 将调用UserAction的public ActionForward list(....) 函数。
public ActionForward unspecified(....) 函数可以指定不带method方法时的默认方法。
2. struts-config.xml使用通配符
对一些CRUD的Action,可以使用通配符,如果这批action里某个action某个方法还存在特殊路径,可以在代码里直接new ActionForward("/foo.jsp");
<forward name="list" path="/WEB-INF/pages/admin/{1}List.jsp"/>
<forward name="edit" path="/WEB-INF/pages/admin/{1}Form.jsp"/>
<forward name="success" path="/admin/{1}.do?method=list" redirect="true"/>
action>
3.No FormBean
Struts 1.2.7 之后一共有三种方法,不需要定义FormBean Java类也不需要在struts-config.xml里详细定义formBean的每个属性。
第一种是appfuse里使用的,定义DynaValidatorForm里,内嵌一个pojo属性.
<form-property name="user" type="org.appfuse.model.User"/>
form-bean>
User user = (User) userForm.get("user");
//设置form
userForm.set("user",user);
第二种是用BeanValidatorForm,直接把Pojo作FormBean,无需继承于FormBean接口。
ValidatorForm userForm = (BeanValidatorForm) form;User user = (User) userForm.getInstance();
//设置form
BeanUtils.copyProperties(userForm, user);
比如User对象 有 id,name,status三个属性,而form表单中只有id和name两个input框,如果使用方法1,2,直接把user 作为 form bean, user对象的status因为没设值,将为null, copy 到作为商业对象的user时,就会以null覆盖原值。而lazyBean就没有这个问题,如果form中没有status属性,它不会将它copy给商业对象。
另外,apache commons-beantuils 1.7.0的lazybean仍有小bug,需要使用commons-1.7.1 snapshot版,而且它直接提供下载的snapshot版缺少了几个class,应使用springside提供的版本。
ConvertUtils.register(new IntegerConverter(null), Integer.class);
}
4. 一些不必受困于Struts机制的简化写法
一些简便直接的方法,大家可不必太受困于Struts的机制:
4.1 不在struts-config.xml配置jsp路径,直接在代码里跳转
or
return new ActionForward("/foo/bar.jsp",true);
4.2 不走jsp,直接输出字符串
try {
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(text);
} catch (IOException e) {
log.error(e);
}
return null;
}
4.3. 不依赖Struts Taglib,EL直接输出FormBean 属性
普通FormBean:${bookForm.image}
LazyValidatorForm:${bookForm.map.image}
其中bookForm 是formBean名。另一种输出属性的方式是使用jodd-form, 设<jodd:form bean="bookForm"></jodd:form>
4.4 不用i18N地使用Message与Error
Struts的ActionMessages很常用,但只接收i18N的key作为输入参数,老定义i18n很麻烦,偏方之一就是设一个message= {0},然后直接new ActionMessage("message", message);
5. 终极化简--StrutsEntityAction
SpringSide封装的EnttiyCRUDAction,,每个包含了CRUD操作的Action仅需如下代码,详细请阅读SpringSide的Struts封装
private UserManager userManager;
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
}
评论
如何在struts2中使用annotation实现配置文件能够做到的类似struts中的dispatchAction.谢谢。
struts1.x脱节了,只不过是借用了struts的名字.就连demo用的都和webwork2一样;
Struts的ActionMessages很常用,但只接收i18N的key作为输入参数,老定义i18n很麻烦,偏方之一就是设一个message= {0},然后直接new ActionMessage("message", message);
这里没有看明白,想表达什么意思? 在jsp的国际化还是action里边的什么Error设置?
Struts的ActionMessages很常用,但只接收i18N的key作为输入参数,老定义i18n很麻烦,偏方之一就是设一个message= {0},然后直接new ActionMessage("message", message);
这里没有看明白,想表达什么意思? 在jsp的国际化还是action里边的什么Error设置?
现在真的支持这种用法了,不过我早自己改造了一下以支持此用法了。
dispatchaction 在struts1.1里面就有了,这已经是一年多前的事情了,不过struts1.0里面是没有的,难道你改造的是struts1.0??
我总是觉得,一些想法,最好有实际的,完整的哪怕只是Helloworld型靶子项目来演示和验证,再一起讨论,比只发一个文章就坐而论道好。
非常地同意;
我努力地充电中,也很希望以后加入开源项目的队伍中,讨论分享一下........
从1.0m1版本起有一直在关注springside,学到一些东西,谢谢你们的贡献.
所以我们分了两个Examples,其中BookStore是主流的,而NewFashion是一个实验性的项目,探讨一下JavaEE里,最简约最先进的项目,到底能写成什么样子。欢迎各位有想法的兄弟姐妹加入来一起捏泥巴。
我总是觉得,一些想法,最好有实际的,完整的哪怕只是Helloworld的靶子项目来演示和验证,再一起讨论,比只发一个文章说下想法就坐而论道好。
而newfashion 会是一个struts2+jpa+JDK6 的,以RoR为追赶目标的项目
springside是很讲究实用的开源项目,提供Pragmatic的企业应用KickStart,针对newfashion实例项目说几句,想一下有多少人在使用jdk6呢,相信很多jdk1.5也有很多人用也不是太久,这和你们宣传的"Pragmatic的企业应用"是不是有相违背呢,是不是有点太超前呢.
从1.0m1版本起有一直在关注springside,学到一些东西,谢谢你们的贡献.
而newfashion 会是一个struts2+jpa+JDK6 的,以RoR为追赶目标的项目,等2.0M1发布后就正式开干,各位老大可以关注一下,多给意见。
是不是copy后null值变成了java.lang.obj[34235]的问题?
是的,1.7.1-snapshot.jar已修复该问题,但snapshot.jar又没有编译optional/org/apache/ 下的几个类,springside作了修复。
感谢,已备存springSide的jar。
是不是copy后null值变成了java.lang.obj[34235]的问题?
是的,1.7.1-snapshot.jar已修复该问题,但snapshot.jar又没有编译optional/org/apache/ 下的几个类,springside作了修复。
dispatchaction还是有一点作用的。
formbean已经越来越显得没用了。
是不是copy后null值变成了java.lang.obj[34235]的问题?
呵呵!新版本确实比以前方便多了!
论坛里面技术太多,很多自己都没听说过,不过看到自己做项目时第一次用到的框架--struts,能不顶一下吗?呵呵!
从硬着头皮看Rod的《J2EE development without EJB》开始,觉得spring确实是好东西,SpringMVC就不错,有空的时候,老兄发一篇SpringMVC开发的帖子吧!小弟也学习一下;有空也看看你们的SpringSide!
“奇技淫巧”? 呵呵!
发表评论
-
Software Craftsmanship可以做些什麼?
2012-01-15 22:23 1906週末都在學習"軟件匠藝",去那些出書的,開 ... -
SSO中的Pattern
2009-05-29 23:49 3058SSO方案中太多平行对称的分支选择,就像博而赫斯那小 ... -
ESB笔记2009
2009-04-05 01:08 5447又过一年了,更新一次自己的ESB笔记,内容实在,枯燥无味 ... -
要不要就一起升级JDK6.0?
2009-03-19 10:22 6929背景音乐:《要不要就一起加入G C D》,唱:陈珊妮 ... -
架构师09年书单
2009-03-18 16:22 10877年又过年,去年在 ... -
一个Java架构师的新年期望
2009-01-24 16:17 10826年末最后一天,昭事上帝 ,聿怀多福,祈望来年的Java社 ... -
一次Java垃圾收集调优实战
2008-07-09 10:39 87591 资料 JDK5.0垃圾收集 ... -
Mule ESB 2.0 苦斗两周之后的初印象
2008-07-04 10:27 6746与Mule 2.0抵死缠绵了两周,喜忧掺半。但只在2. ... -
Terracotta,POJO开发模型的最后一块拼图
2008-05-29 10:22 3020Terra ... -
08年的读书计划
2008-05-04 16:31 712408已过了一季,马上就要三十的人了,总有些脱不开烟火气 ... -
设计美好的服务器(7)--Apache CXF笔记
2007-12-29 11:52 5620OverView Apache CXF ... -
设计美好的服务器(6)--SEDA架构笔记
2007-12-21 00:33 72081.Overview SEDA Ad ... -
设计美好的服务器(5)--Shoal集群框架
2007-12-20 10:06 4735Overview Shoal Sho ... -
数据服务笔记
2007-10-26 09:07 52341.Overview 数据 ... -
ESB架构笔记
2007-10-09 23:42 19274ESB是什么 ESB综述1:定 ... -
Prototype.js--Javascript编写者的小军刀
2006-08-08 08:37 2259Overview Prototype.js官方文章 ... -
轻的,谁都会写的Service方案--REST与JSON
2007-06-15 11:26 121041.REST 1.1 缘起 N年前,一说到跨平台的服务 ... -
架构师核心技能养成计划
2007-02-18 19:07 8423作者:江南白衣,原文出处: http://blog.csdn ... -
架构师书单
2007-02-10 14:35 169622月份买了过千元的书后,重列了一个2.0 版的架构师书单,请 ...
相关推荐
Medea是一个实用的代码生成框架。 它采用XMI格式的UML类和状态图,并使用XSLT模板为各种技术,层和完整的应用程序生成代码:J2EE,CMP,Hibernate,JSP,Struts,JSF,jBPM,XSD
- "Struts in Action" 关注Struts框架,用于构建MVC(模型-视图-控制器)架构的Web应用。 - "Lucene in Action" 教授如何使用Apache Lucene进行全文搜索引擎的开发。 - "Better Faster Lighter Java" 提供优化...
压缩包中的文件列表暗示了这可能是一本电子书的资源,例如 "Pragmatic.Bookshelf.From.Java.to.Ruby.Jun.2006.pdf",这可能来自 Pragmatic Bookshelf 出版社,一家知名的程序员图书出版商。"intro.txt" 可能是书籍的...
SpringSide4-Master,这是一个以Spring Framework为核心的JavaEE应用参考示例项目,它以其Pragmatic(实用主义)风格深受广大开发者喜爱,是JavaEE世界中不可或缺的技术瑰宝。该项目不仅体现了Spring Framework的...
SpringSide以Spring Framework为核心,提供Pragmatic之中又适合工业化大规模开发的企业应用Kickstart。 如果说Sun 的代码规范规定了大家在代码中如何命名变量,怎么编写注释的话,SpringSide则是对怎么用不轻也不重...
- 描述: Struts是一个基于MVC模式的Java Web框架,本书详细介绍了Struts框架的使用方法。 - **链接**: http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174005 8. **Lucene in Action** - 描述: Lucene是...
SpringSide是一个以Spring Framework为核心,遵循Pragmatic风格的Java EE应用参考示例。它集成了当前Java EE世界的主流技术选型与最佳实践,旨在帮助开发者更好地理解和使用这些技术。 **主要技术包括:** - **IOC...