struts2零配置Action路径到Result页面路径的自动映射.doc

上传人:飞****2 文档编号:52204697 上传时间:2022-10-21 格式:DOC 页数:7 大小:57KB
返回 下载 相关 举报
struts2零配置Action路径到Result页面路径的自动映射.doc_第1页
第1页 / 共7页
struts2零配置Action路径到Result页面路径的自动映射.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《struts2零配置Action路径到Result页面路径的自动映射.doc》由会员分享,可在线阅读,更多相关《struts2零配置Action路径到Result页面路径的自动映射.doc(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Struts2约定优于配置(Action路径到Result页面路径的自动映射)1 Convention插件1.1 需要的jar包struts2-convention-plugin-2.2.1.jar1.2 设置Convention结果result页面存放路径目录struts-plugin.xml文件中:默认配置所有的结果result页面都存储在WEB-INF/content下,通过设置struts.convention.result.path属性的值改变结果result页面到其他路径。如:Xml代码则将result路径配置到了WEB-INF/page 下;则将result路径配置到了/page

2、下。1.3 设置Convention的Action类存在路径搜索包struts-plugin.xml文件中:默认配置包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。通过设置struts.convention.package.locators属性来修改这个配置。如:Xml代码则定义了在项目中,包路径包含web和action的将被视为Action存在的路径来进行搜索。com.xxx.web.*/com.xxx.action.*都将被视为含有Action的包路径而被搜索。接着,Convention从前一步找到的pack

3、age以及其子package包中寻找 com.opensymphony.xwork2.Action 的实现以及以Action结尾的类:com.example.actions.MainActioncom.example.actions.products.Display (implements com.opensymphony.xwork2.Action)pany.details.ShowCompanyDetailsAction1.4 命名空间从定义的struts.convention.package.locators【标示开始到包结束】的部分,就是命名空间。如:配置com.xxx.web.use

4、r.userAction的命名空间是:“/user”;com.xxx.web.user.detail.UserAction的命名空间是:“/user/detail”。1.5 Actin类名路径分割Convention通过如下规则确定URL的具体资源部分:去掉类名的Action部分。然后将将每个分部的首字母转为小写,用-分割,你可以设置struts.convention.action.name.separator 如:如:UserAction-user UserDetailAction -user-detail。结合上面配置,对于com.xxx.web.user.detail.UserDetai

5、lAction,映射的url就是/WEB-INF/content/user/detail/user-detail.jsp1.6 支持jsp、html、htm、vm等格式struts支持.jsp, .html, .htm, .vm格式的文件。下面是action和结果模版的映射关系:URLResultFile that could matchResult Type/hellosuccess/WEB-INF/content/hello.jspDispatcher/helloupdate/WEB-INF/content/hello-update.jspDispatcher/hellosuccess/W

6、EB-INF/content/hello-success.htmDispatcher/hellosuccess/WEB-INF/content/hello.ftlFreeMarker/hello-worldinput/WEB-INF/content/hello-world-input.vmVelocity/test/test1/helloerror/WEB-INF/content/test/test1/hello-error.htmlDispatcher/test/test2/hellonew/WEB-INF/content/test/test2/hello-new.htmlDispatche

7、r/test/test2/hellodetail/WEB-INF/content/test/test3/hello- detail.htmlDispatcher以上的内容来自struts2的文档http:/struts.apache.org/2.1.6/docs/convention-plugin.html当然,简单的通过默认的方式来进行配置不能完全满足实际项目的需要。所幸,convention的零配置是非常灵活的。1.7 Action注解通过Action注释对如下例子:Java代码package com.example.web;import com.opensymphony.xwork2.A

8、ction;import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport Action(action1) public String method1() return SUCCESS; Action(/user/action2) public String method2() return SUCCESS;方法名默认调用路径默认映射路径method1/hello!method1.action /WEB-INF/content/hello.jspmethod2/hello!

9、method2.action/WEB-INF/content/hello.jsp通过Action注释后方法名Action注释后调用路径Action注释 后映射路径method1/action1!method1.action/WEB-INF/content/action1.jspmethod1/user/action2!method2.action/WEB-INF/content/user/action2.jsp1.8 Actions注解通过Actions注释Java代码package com.example.web;import com.opensymphony.xwork2.ActionSu

10、pport; import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Actions;public class HelloAction extends ActionSupport Actions( Action(/different/url), Action(/another/url) ) public String method1() return “error”; 我们可以通过:/different/url!method1.action或/a

11、nother/url!method1.action来调用method1方法。对应的映射路径分别是/WEB-INF/content/different/url-error.jsp; /WEB-INF/content/another/url-error.jsp可能误导了大家,一个方法被Action注释后,只是多了一种调用方式,而不是说覆盖了原来的调用方式。比如对于如下例子:Java代码com.example.web;import com.opensymphony.xwork2.ActionSupport; import org.apache.convention.annotation.Action

12、;import org.apache.convention.annotation.Actions;public class HelloAction extends ActionSupport Action(/another/url) public String method1() return “error”; 我们调用method1方法可以通过两种方式:1、/hello!method1.action映射 url:/WEB-INF/content/hello-error.jsp2、/another/url!method1.action映射 url:/WEB-INF/content/anothe

13、r/url-error.jsp可见,两种方式均可对method1方法进行调用,唯一的区别就是,两种调用的映射是不一样的,所以,想跳转到不同的界面,这是一个非常好的选择。1.9 Namespace注解通过Namespace 注释package com.example.web;import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Actions;Namesp

14、ace(/other)public class HelloWorld extends ActionSupport public String method1() return “error”; Action(url) public String method2() return “error”; Action(/different/url) public String method3() return “error”; 通过/other/hello-world!method1.action访问method1方法。通过/other/url!method2.action访问method2方法通过/

15、different /url!method3.action访问method3方法与Action 注释不同的是,该注释覆盖了默认的namespace(这里是/),此时再用hello!method1.action 已经不能访问method1了.1.10 Results和Result注解Results和Result1 全局的(global)。全局results可以被action类中所有的action分享,这种results在action类上使用注解进行声明。package com.example.actions;import com.opensymphony.xwork2.ActionSupport

16、; import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Actions;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;Results( Result(name=failure, location=/WEB-INF/fail.jsp)public class HelloW

17、orld extends ActionSupport public String method1() return “failure”; Action(/different/url) public String method2() return “failure”; 当我们访问/hello-world!method1.action时,返回/WEB-INF/fail.jsp当我们访问/hello-world!method2.action时,返回/WEB-INF/fail.jsp当我们访问/different/url!method2.action时,返回/WEB-INF/fail.jsp2 本地的

18、(local)。本地results只能在action方法上进行声明。Java代码package com.example.actions;import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Actions;import org.apache.convention.annotation.Result;import org.apache.convention

19、.annotation.Results;public class HelloWorld extends ActionSupport Action(value=/other/bar,results=Result(name = error, location = ,type=redirect) public String method1() return “error”; 当我们调用/hello-world!method1.action时,返回/WEB-INF/content/hello-error.jsp当我们调用/other/bar!method1.action时,返回1.11 ParentP

20、ackage 注解ParentPackage注解用来定义具体action类的父XWork包或java包,下面例子演示了在action类上使用本注解:packagecom.example.actions;importcom.opensymphony.xwork2.ActionSupport;importorg.apache.struts2.convention.annotation.Action;importorg.apache.struts2.convention.annotation.ParentPackage;ParentPackage(customXWorkPackage)publicc

21、lassHelloWorldextendsActionSupportpublicStringexecute()returnSUCCESS;1.12 异常注解配置ExceptionMapping 注解用来影射action抛出的异常。可以参考exception mapping documentation 获得详细信息。注解用类级别,在这种情况下,注解会应用到类里面的所有actionExceptionMappings(ExceptionMapping(exception=java.lang.NullPointerException,result=success,params=param1,val1)

22、publicclassExceptionsActionLevelActionpublicStringexecute()throwsExceptionreturnnull;可以在ExceptionMapping注解中使用params 属性来传递具体值给结果渲染页。ExceptionMapping注解同样可以在action级别进行设置:publicclassExceptionsMethodLevelActionAction(value=exception1,exceptionMappings=ExceptionMapping(exception=java.lang.NullPointerExcep

23、tion,result=success,params=param1,val1)publicStringrun1()throwsExceptionreturnnull;1.13 自动加载无需启动服务Convention插件可以自动重新加载配置的功能,无需重启容器,就可以刷新类中包含的action。这自动加载automatic xml 配置文件类似。你必须在struts.xml 中添加以下代码来启用本功能:此功能没有在所有容器中进行过测试,强力建议不要在生产环境中使用。1.14 扫描Action的Jar包默认情况下,Convention 插件不会从jar文件中寻找action。如果想实现这一功能,jar文件必须被struts.convention.action.includeJars 所定义的正则 匹配到。在例子中 myjar1.jar和 myjar2.jar 将被插件检测到:提示:正则表达式只针对jar文件的路径进行匹配,而不是文件名。jar的URL应该包含jar文件的路径并以!/结尾。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com