struts2零配置问题

karlpan01 2009-10-27 03:31:54
主要是寻求一个思路,此处我所说的零配置是指,不用注解,不用通配。
希望大家能给个思路出来。
...全文
347 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl3450341 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 landor2004 的回复:]
只能做到尽量的零配置,因为要定义一些全局的拦截器,比如身份认证、global-results等
不过基于struts2.1的Convention Plugin可以尽可能的实现零配置,这个插件遵循了一些脚手架的规则

由于我也是正在逐步使用,所以还仅仅知道一些浅显的东西,而且这个帖子并不是讲解实现,仅仅是阐述思想

Convention Plugin的规则是:
包名对应配置文件中的namespace,action类的名字为配置文件中的action。举个例子,如果配置了如下语句XML code<constantname="struts.convention.package.locators" value="web"/>
那么com.lan.web.system.UserAction,对应的namespace为/system  action为user

假如在struts.xml中配置了这个XML code<constantname="struts.convention.result.path" value="/"/>
那么上面的action的success result就会返回到webroot/system/user.jsp上(包名又映射为文件夹名),Convention Plugin还可以映射其他的result
比如action返回"input",那么会映射到webroot/system/user-input.jsp上

以上说的都仅仅是一方面,具体的可以参考struts2.1的doc

如果符合上面的命名规则,那么可以做到大部分文件的零配置,但是我发现对于struts的方法默认规则似乎就没有办法了,上面的规则仅仅是在class的级别上

比如在UserAction中有add、delete等方法的时候,没有默认的映射规则,所以还是要写注解,但是这个注解也已经极其简单了

简单举个例子:
Java code @Action("delete")public String delete(){//......return"deletesuccess";
}

这样根据映射规则,应该映射到webroot/system/user-deletesuccess.jsp,通过简单的注解,免去了多个action的冗余

struts2.1配合spring2.5+的话,通过struts2-spring-plugin包可以完全取消applicationContext.xml中的对action的注入配置,因为那个包已经完成了byType自动注入的功能
有兴趣的朋友可以去研究一下struts2-spring-plugin包的源码。

如果做到完全的零配置,那么建议去用groovy on grails吧,完全脚手架,各种规则都制定的非常好,除了指定一下数据库资源,剩下的完全零配置
[/Quote]

学习了
karlpan01 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 landor2004 的回复:]
只能做到尽量的零配置,因为要定义一些全局的拦截器,比如身份认证、global-results等
不过基于struts2.1的Convention Plugin可以尽可能的实现零配置,这个插件遵循了一些脚手架的规则

由于我也是正在逐步使用,所以还仅仅知道一些浅显的东西,而且这个帖子并不是讲解实现,仅仅是阐述思想

Convention Plugin的规则是:
包名对应配置文件中的namespace,action类的名字为配置文件中的action。举个例子,如果配置了如下语句XML code<constantname="struts.convention.package.locators" value="web"/>
那么com.lan.web.system.UserAction,对应的namespace为/system  action为user

假如在struts.xml中配置了这个XML code<constantname="struts.convention.result.path" value="/"/>
那么上面的action的success result就会返回到webroot/system/user.jsp上(包名又映射为文件夹名),Convention Plugin还可以映射其他的result
比如action返回"input",那么会映射到webroot/system/user-input.jsp上

以上说的都仅仅是一方面,具体的可以参考struts2.1的doc

如果符合上面的命名规则,那么可以做到大部分文件的零配置,但是我发现对于struts的方法默认规则似乎就没有办法了,上面的规则仅仅是在class的级别上

比如在UserAction中有add、delete等方法的时候,没有默认的映射规则,所以还是要写注解,但是这个注解也已经极其简单了

简单举个例子:
Java code @Action("delete")public String delete(){//......return"deletesuccess";
}

这样根据映射规则,应该映射到webroot/system/user-deletesuccess.jsp,通过简单的注解,免去了多个action的冗余

struts2.1配合spring2.5+的话,通过struts2-spring-plugin包可以完全取消applicationContext.xml中的对action的注入配置,因为那个包已经完成了byType自动注入的功能
有兴趣的朋友可以去研究一下struts2-spring-plugin包的源码。

如果做到完全的零配置,那么建议去用groovy on grails吧,完全脚手架,各种规则都制定的非常好,除了指定一下数据库资源,剩下的完全零配置
[/Quote]
很好呵呵!struts2.1.*以后用convention替代codebehind之后,确实是可以这样了,完全无注解,意味只有execute,那样不能被接受,而如你所说,少量注解又绕开这个问题。不错!
总之约定大于配置。
用一个帖子能得到你这样的答案不错了呵呵!
Landor2004 2009-10-27
  • 打赏
  • 举报
回复
只能做到尽量的零配置,因为要定义一些全局的拦截器,比如身份认证、global-results等
不过基于struts2.1的Convention Plugin可以尽可能的实现零配置,这个插件遵循了一些脚手架的规则

由于我也是正在逐步使用,所以还仅仅知道一些浅显的东西,而且这个帖子并不是讲解实现,仅仅是阐述思想

Convention Plugin的规则是:
包名对应配置文件中的namespace,action类的名字为配置文件中的action。举个例子,如果配置了如下语句
<constant name="struts.convention.package.locators" value="web"/>

那么com.lan.web.system.UserAction,对应的namespace为/system action为user

假如在struts.xml中配置了这个
<constant name="struts.convention.result.path" value="/"/>

那么上面的action的success result就会返回到webroot/system/user.jsp上(包名又映射为文件夹名),Convention Plugin还可以映射其他的result
比如action返回"input",那么会映射到webroot/system/user-input.jsp上

以上说的都仅仅是一方面,具体的可以参考struts2.1的doc

如果符合上面的命名规则,那么可以做到大部分文件的零配置,但是我发现对于struts的方法默认规则似乎就没有办法了,上面的规则仅仅是在class的级别上

比如在UserAction中有add、delete等方法的时候,没有默认的映射规则,所以还是要写注解,但是这个注解也已经极其简单了

简单举个例子:
	@Action("delete")
public String delete(){
//......
return "deletesuccess";
}


这样根据映射规则,应该映射到webroot/system/user-deletesuccess.jsp,通过简单的注解,免去了多个action的冗余

struts2.1配合spring2.5+的话,通过struts2-spring-plugin包可以完全取消applicationContext.xml中的对action的注入配置,因为那个包已经完成了byType自动注入的功能
有兴趣的朋友可以去研究一下struts2-spring-plugin包的源码。

如果做到完全的零配置,那么建议去用groovy on grails吧,完全脚手架,各种规则都制定的非常好,除了指定一下数据库资源,剩下的完全零配置
Landor2004 2009-10-27
  • 打赏
  • 举报
回复
很喜欢这样的帖子,但是似乎这种帖子不多......
zl3450341 2009-10-27
  • 打赏
  • 举报
回复
绕晕了

看看楼下高见
阿士匹灵 2009-10-27
  • 打赏
  • 举报
回复
路过 学习
呵呵
shihuaxian123 2009-10-27
  • 打赏
  • 举报
回复
不配置,那使用框架是浪费
bolink5 2009-10-27
  • 打赏
  • 举报
回复
顶起来啊
swandragon 2009-10-27
  • 打赏
  • 举报
回复
不用注解,不用通配。

我也想知道怎么能实现零配置
huang_w 2009-10-27
  • 打赏
  • 举报
回复

看了楼主想打破传统

强顶了!

原来jdk低版本不也是没有注解吗?都是人想出来的

楼主想出来后记得共享一下思路啊
wgj830823 2009-10-27
  • 打赏
  • 举报
回复
不用统配?不用注解?
yulu0214 2009-10-27
  • 打赏
  • 举报
回复
不注解,不用统配,那就用xml,property呗。
你不会指望什么都不同,就把包下好往那一方,它自己就会自动去处理请求了吧。。。。这属于代码智能哈/。。
道光2008 2009-10-27
  • 打赏
  • 举报
回复
不明白你说的

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧