注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

Convention中的basePackage与locators配置  

2011-08-30 13:54:12|  分类: struts |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在 Struts2.1.6中废弃了Codebehind插件,改用了Convention插件来实现所谓的0配置, 下面是我知道的几个Convention插件的几个配置属性: 

1. 

struts.convention.package.locators.basePackage=com.ZTest.web.action 

这个属性用于约定Action 类的根包(这个包是Java 类的包,而不是Struts.xml中配置的<package>节点) 

例如: 

在一个项目中有这样一系列的Java 包,那么当指定convention的这个属性,Struts 框架就会在你访问特定的URL时会自动的找到所要的请求的实现类。 

当你在浏览器中输入: http://localhost:8080/HelloWorld.action ,Struts会自动的找到并执行com.ZTest.web.action.HelloWorldAction.java类。 

当你在浏览器中输入: http://localhost:8080/test/aaa.action ,Struts会自动的找到并执行com.ZTest.web.action.test.aaaAction.java类。 

2. 

struts.convention.result.path=/WEB-INF/ruiri 

这个属性用于约定Action类执行完毕以后返回资源的结果路径,###必须以 "/" 开头, 

例如: 

当你在浏览器中输入: http://localhost:8080/HelloWorld.action ,Struts会自动的找到并执行com.ZTest.web.action.HelloWorldAction.java类,并放回到WEB-INF/ruiri/HelloWorld.jsp。 

当你在浏览器中输入: http://localhost:8080/test/aaa.action ,Struts会自动的找到并执行com.ZTest.web.action.test.aaaAction.java类, ,并放回到WEB-INF/ruiri/test/HelloWorld.jsp 。 

3. 
struts.convention.action.name.lowercase=false 

###是否将Action类转换成小写 
当一个类的类名是多个单词组合起来的时候,例如 HelloWolrdAction,如果指定了这个属性,则访问的地址必须是:  HelloWorld.action ,如果不是指定这个属性则是:  helloworld.action 



4. 
struts.convention.action.name.separator= 

这个属性是约定当一个Java 类 有多个单词组合成的时候,映射的URL地址的时候访问的格式的分隔符。 

如果不指定这个属性,Struts默认的分隔符是 “-”,例如 HelloWorldAction 则访问的URL 是Hello-World.action 

如果指定这个属性是上面的格式,则是没有分隔符,会按照Java 类名直接映射,例如 HelloWorldAction 则访问的URL 是HelloWorld.action 


struts.convention.default.parent.package=default 

这个属性指定的是Strtus.xml中配置的 <package>节点的父节点。(有什么用?可能就是用于定义全局的Result 吧,这个本人也没深入的研究过) 





struts.convention.package.locators=action  

确定搜索包的路径。只要是结尾为action的包都要搜索。 

详细讲解一下这个属性,因为我刚开始的时候被这个属性搞晕了,希望我的解释能帮助和我有过同样疑问的友人。 

例如:我们有这样一些类: 

com.ZTest.web.action.AAAAAction 

com.Ztest.web.action.BBBBAction 

com.Ztest.web.action.test/CCCCAction 

com.Ztest.web.action.test/DDDDAction 

com.Ztest.web.action.test/first/EEEEAction 

com.Ztest.web.action.test/first/FFFFAction 



如果,我设置这个属性的值为 action 那么 我们访问这几个类得URL就是 

http://localhost:8080/ZTest/AAAA.action 

http://localhost:8080/ZTest/BBBB.action 

http://localhost:8080/ZTest/test/CCCC.action 

http://localhost:8080/ZTest/test/DDDD.action 

http://localhost:8080/ZTest/test/first/EEEE.action 

http://localhost:8080/ZTest/test/first/FFFF.action 

而每个URL对应的资源文件必须是下面的格式:(按照本文中的result.path配置的结果) 

/WEB-INF/ruiri/AAAA.jsp 

/WEB-INF/ruiri/BBBB.jsp 

/WEB-INF/ruiri/test/CCCC.jsp 

/WEB-INF/ruiri/test/DDDD.jsp 

/WEB-INF/ruiri/test/first/EEEE.jsp 

/WEB-INF/ruiri/test/first/FFFF.jsp 

也就是说: 

struts.convention.package.locators=action 就是相当于下面的解释 

  类路径                                    命名空间(struts.xml中配置的<package>节点) 
com.ZTest.web.action.AAAAAction             ->    / 
com.ZTest.web.action.test.CCCCAction        ->    /test 

com.ZTest.web.action.test.first.EEEEAction ->    /test/first 

当然对应的资源的文件路径就是: 

/WEB-INF/ruiri/AAAA.jsp 

/WEB-INF/ruiri/test/CCCC.jsp 

/WEB-INF/ruiri/test/first/EEEE.jsp 

区别: 

struts.convention.package.locators=action  

确定搜索包的路径。只要是结尾为action的包都要搜索。 

struts.convention.package.locators.disable=false 

struts.convention.package.locators.basePackage=com.xxx.web.action 
basePackage按照默认不用配置,如果配置,只会找以此配置开头的包。 

locators及locators.basePackage都是一组以逗号分割的字符串。 
  评论这张
 
阅读(432)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016