首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Struts2.1.6(Convention插件零配置 )

2012-09-06 
Struts2.1.6(Convention插件0配置 )在 Struts2.1.6中废弃了Codebehind插件,改用了Convention插件来实现所

Struts2.1.6(Convention插件0配置 )
在 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类执行完毕以后返回资源的结果路径

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

当你在浏览器中输入: ,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

5
struts.convention.default.parent.package=default

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

6

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

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

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

区别:

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

struts.convention.package.locators.disable=false

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

locators及locators.basePackage都是一组以逗号分割的字符串。

?

<!-- 附件 --><!-- 底部操作栏 -->

热点排行