Struts2注解详细说明文档.doc
《Struts2注解详细说明文档.doc》由会员分享,可在线阅读,更多相关《Struts2注解详细说明文档.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Struts2 Convention Plugin中文文档(一)Introduction从struts2.1版本开始,Convention Plugin作为替换替换Codebehind Plugin来实现Struts2的零配置。 包命名习惯来指定Action位置 命名习惯制定结果(支持JSP,FreeMarker等)路径 类名到URL的约定转换 包名到命名空间(namespace)的约定转换 遵循SEO规范的链接地址(即:使用my-action 来替代 MyAction) 基于注解的Action名 基于注解的拦截机(Interceptor) 基于注解的命名空间(Nameespace) 基于注解
2、的XWork包 默认action以及默认的结果(比如:/products 将会尝试寻找com.example.actions.Products 或 com.example.actions.products.Index进行处理)无需配置Convention即可使用Convention,Convention的某些约束习惯可以通过配置属性来控制,您也可以在类中覆写其中的方法来达到扩展目地。安装使用Convention插件,你需要将其JAR文件放到你应用的WEB-INF/lib目录中,你也可以在你Macen项目的POM文件中添加下面包依赖1. 2. org.apache.struts3. struts
3、2-convention-plugin4. 2.1.65. 转换基于Codebehind项目到Convention跳转到此页面,查看需要修改的变化和小提示如果你想在你系统中结合Convention插件使用REST。需要在你项目的struts.xml中添加如下配置1. 2. 3. Hello world到目前为止,你已经在你项目中添加了Convention插件支持,首先我们从一个非常简单的例子开始入手。本例中,我们将演示根据访问URL来访问固定的Action,默认情况下,Convention会默认所有的结果页面都存储在WEB-INF/content下,你也可以在struts的properties
4、文件中设定struts.convention.result.path的值到一个新的路径。路径最后“/”是不必要的,Convention会自动进行处理。以下是本例的JSP文件WEB-INF/content/hello-world.jsp1. 2. 3. Helloworld!4. 5. 启动Tomcat或其他你所使用的JEE容器,在浏览器访问http:/localhost:8080/hello-world , 你可看到以下信息:Hello world!这表明,Convention已经能正常运行,并找到了结果。即使在没有action存在情况下,convention也会根据URL规则来找到结果页面。
5、Code behind hello world我们继续扩展本例并添加代码实现类。为了实现本功能,首先需要Convention能正确找到我们的Action 类,默认情况下,Convention会找到com.opensymphony.xwork2.Action 的实现类,或制定包中以Action 结尾的类 actionConvention使用以下方法来搜索类路径,首先,Convention会从根package中寻找包名含有struts, struts2, action or actions 的任意packages。下一部,Convention从前一步找到的package以及其子package中寻找
6、 com.opensymphony.xwork2.Action 的实现以及以Action结尾的类,下面为Convention寻找的类1. com.example.actions.MainAction2. com.example.actions.products.Display(implementscom.opensymphony.xwork2.Action)3. pany.details.ShowCompanyDetailsAction4. com.example.actions.MainAction5. com.example.actions.products.Display(impleme
7、ntscom.opensymphony.xwork2.Action)6. pany.details.ShowCompanyDetailsAction每一个被Convention找到action都会对应一个明确的URL地址,URL以package的名字以及Action类名为基础。首先Convention从根package以及类所在的package名来确定对应的URL中的路径(namespace),以下就是根据package确定的URL namespace1. com.example.actions.MainAction-/2. com.example.actions.products.Displ
8、ay-/products3. pany.details.ShowCompanyDetailsAction-/company/details接下来Convention需要确定URL的具体资源部分。第一步取消类名中的Action,并以”-”来分割类名的其他部分,且将每个分部的首字母转为小写。如下所示1. com.example.actions.MainAction-/main2. com.example.actions.products.Display-/products/display3. pany.details.ShowCompanyDetailsAction-/company/detail
9、s/show-company-details你也可以通过配置struts.convention.exclude.packages 来告诉Convention忽略某些包,也可以设置struts.convention.package.locators 用来更改Convention默认的根packages,最后你还可以设置 struts.convention.action.packages. 来让Convention只搜索特定package下的Action以下就是action类的实现代码:1. packagecom.example.actions;2. 3. importcom.opensympho
10、ny.xwork2.ActionSupport;4. 5. publicclassHelloWorldextendsActionSupport6. privateStringmessage;7. 8. publicStringgetMessage()9. returnmessage;10. 11. 12. publicStringexecute()13. message=HelloWorld!;14. returnSUCCESS;15. 16. 编译以上代码,并将其class放到 WEB-INF/classes中,Convention将会将 /hello-world 映射到这个Action.
11、部署上面的类以后,我们在JSP文件中添加打印message的语句,具体代码如下:1. 2. 3. Themessageis$message4. 5. 启动应用服务器,在浏览器访问 http:/localhost:8080/hello-world 地址,我们看到如下结果界面:The message is Hello World!原文:http:/cwiki.apache.org/WW/convention-plugin.html翻译:石太祥Struts2 Convention Plugin中文文档(二Results and result codesStruts启动后,Convention将预设好
12、应用中的所有的action,默认情况下,配置将包含在你应用中能找到的所有JSP文件。同时您也可在Action代码中设置与习惯不同的结果页面。通常Action方法返回一个字符串,通过返回的字符串找到结果页面,而使用Convention允许你在action代码中指定和返回字符串不同的结果页面。编译下面的例子。我们希望在action中返回zero 而不是success,第一步,我们更新action类,返回zero。1. packagecom.example.actions;2. 3. importcom.opensymphony.xwork2.ActionSupport;4. 5. publiccl
13、assHelloWorldextendsActionSupport6. privateStringmessage;7. 8. publicStringgetMessage()9. returnmessage;10. 11. 12. publicStringexecute()13. if(System.currentTimeMillis()%2=0)14. message=Its0;15. returnzero;16. 17. 18. message=Its1;19. returnSUCCESS;20. 21. 接下来,我们添加一个新的JSP页面 WEB-INF/content/hello-wo
14、rld-zero.jsp 。需要注意的是,文件名的第一部分和action名是对应的,后面的部分和action返回的字符串对应。这就是convention确定具体使用那个页面来渲染结果。下面是修改后的JSP代码:1. 2. 3. Theerrormessageis$message4. 5. 现在,你可以编辑你的程序,重启应用,刷新页面,根据当前时间不通,会看到不通的渲染结果页面结果页面的类型会自动匹配文件,支持的渲染页面的格式为:jsp.ftl,vm,html,htm.下面是actiong和结果模版的映射关系:URLResultFile that could matchResult Type/h
15、ellosuccess/WEB-INF/content/hello.jspDispatcher/hellosuccess/WEB-INF/content/hello-success.htmDispatcher/hellosuccess/WEB-INF/content/hello.ftlFreeMarker/hello-worldinput/WEB-INF/content/hello-world-input.vmVelocity/test1/test2/helloerror/WEB-INF/content/test/test2/hello-error.htmlDispatcherAction链如
16、果在一个action结果中调用另外一个action ,他们俩将被链接到一起,如果在第一个action代码中未定义result,如下代码:1. packagecom.example.actions;2. 3. importcom.opensymphony.xwork2.Action;4. importcom.opensymphony.xwork2.ActionSupport;5. 6. publicclassHelloActionextendsActionSupport7. Action(foo)8. publicStringfoo()9. returnbar;10. 11. 12. Actio
17、n(foo-bar)13. publicStringbar()14. returnSUCCESS;15. 16. “foo”action执行时候,由于找不到结果,convention尝试在同一个包下寻找action名为“foo-bar”的action。如果找到这样的action,convention将会调用并返回相关联的result。XWork packages为了避免冲突,可将action放在一个自定义XWORK的package下。package命名由action所在的Java包,action对应的URL中namespace部分以及action的parent XWork package三个部
18、分组成。parent XWork package 值在属性 struts.convention.default.parent.package 中指定(默认为conventionDefault),package的属性值须继承于 strutsDefault因此,Convention插件中XWORK packages 采用如下命名规则:1. #Using our example from above, the XWork package for our action would be:上例中,action对应的 XWORK package如下:1. com.example.actions#/#con
19、ventionDefaultStruts2 Convention Plugin中文文档(三)Annotation 参考Convention使用某些注解语句来覆写插件默认的action到url的映射和自动搜索渲染到的页面。此外,你还可以修改action配置文件中定义的父XWORK的包信息Action annotationConvention 插件可以使用Action注解语句来修改action返回的URL地址。本注解同时也允许包含在Actions语句中,用来使一个action对应于多个URL。在action 方法中使用本注解语句,可以参考以下代码:1. packagecom.example.act
20、ions;2. 3. importcom.opensymphony.xwork2.ActionSupport;4. importorg.apache.struts2.convention.annotation.Action;5. 6. publicclassHelloWorldextendsActionSupport7. Action(/different/url)8. publicStringexecute()9. returnSUCCESS;10. 11. 现在我们action类中将使用 /different/url 来替代默认的 /hello-world,如果未指定Result(参考下节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2 注解 详细 说明 文档
限制150内