ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:21.13KB ,
资源ID:6609827      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6609827.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(struts2 零配置.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

struts2 零配置.docx

1、struts2 零配置Struts2已经日益成为Web层比较主流的开发框架,它来源于Webwork2,是一个非常优秀的MVC框架。在Webwork2设计之处,Annotation和Ruby on Rails还没有像现在那么火,所以整个框架在配置方面还是沿用了Web框架惯用的XML作为主要的配置方式。 随着时代的发展,对于Web程序员来说,如何简化配置成了一个很重要的课题。在这方面,Struts2也有一些探索。在Struts2的官方网站上,我们可以找到一些优秀的plugin来做这些工作: http:/cwiki.apache.org/S2PLUGINS/codebehind-plugin.htm

2、l http:/cwiki.apache.org/S2PLUGINS/smarturls-plugin.html LightURL的目的是为了吸取这些优秀的plugin的优点,并支持更方便的配置方式。 安装 1. 将struts2-lighturl-plugin.jar加入到classpath下 2. 配置你的web.xml Java代码 1. 2. 3. 4. struts 5. com.demo2do.lighturl.LightURLFilter 6. 7. 8. 9. 10. struts 11. /* 12. struts com.demo2do.lighturl.LightURLF

3、ilter struts /* 3. 需要指定你的action package所在位置和一些基本配置 这一步一般在struts.properties中完成。你可以建一个struts.properties的配置文件,并放到classpath下,并指定如下配置 Java代码 1. #actionpackageconfig 2. lighturl.action.packages=com.demo2do.lighturl.action 3. 4. #actionmappingimplementationclass5. struts.mapper.class=com.demo2do.lighturl.L

4、ightURLActionMapper 6. 7. #defaultparentpackage8. lighturl.action.default.parent.package=struts-config 9. 10. #defineyourentitypackage(optional) 11. #lighturl.entity.package=com.demo2do.lighturl.entity# action package configlighturl.action.packages=com.demo2do.lighturl.action# action mapping impleme

5、ntation classstruts.mapper.class=com.demo2do.lighturl.LightURLActionMapper# default parent packagelighturl.action.default.parent.package=struts-config# define your entity package (optional)# lighturl.entity.package=com.demo2do.lighturl.entity在完成以上的步骤后,lighturl的所有配置即告完成,现在你已经可以使用所有lighturl所提供的特性。 Nam

6、espace, ActionName和URL映射 lighturl所提供的最基本的特性是根据你的Action所在的package,确定namespace和actionName,并进行对应的URL映射。 举例说明,你在上面所讲述的struts.properties中,已经指定了你的action package Java代码 1. lighturl.action.packages=com.demo2do.lighturl.actionlighturl.action.packages=com.demo2do.lighturl.action那么,如果你有以下的Action类,那么lighturl将根据

7、如下的规则来确定每个Action类所对应的namespace,actionName和url映射关系 1. 根据lighturl.action.packages的配置的package到你的Action类的相对package来确定namespace,如果其中有驼峰法命名,那么转化成-连接的单词 com.demo2do.lighturl.action.Index - / com.demo2do.lighturl.action.user.Search - /user com.demo2do.lighturl.action.blog.category.Index - /blog/category com

8、.demo2do.lighturl.action.accoutDetail.View - /account-detail 2. 将Action类的类名转化成actionName。如果碰到的Action类以Action结尾,则去掉末尾的Action,如果其中有驼峰法命名,那么转化成-连接的单词 com.demo2do.lighturl.action.Index - index com.demo2do.lighturl.action.user.SearchAction - search com.demo2do.lighturl.action.blog.CategoryBlog - category

9、-blog 3. 将namespace与actionName拼起来,就成构成映射到具体Action类的url http:/host:port/app/user/index - com.demo2do.lighturl.action.user.Index http:/host:port/app/blog/category-blog - com.demo2do.lighturl.action.blog.CategoryBlog 上面的这种URL匹配方式,我称之为:package匹配 特殊形式的URL 应该说根据package来进行Action映射,可以解决绝大多数从url到action的映射配置问

10、题。不过有的时候,我们可能需要支持一些特殊形式的url。LightURL在默认情况下,支持下列2种特殊形式的URL 1. 支持将名为Index的Action直接映射到package上 这种匹配我称之为:Namespace匹配。这一个特性很直观。如果你在某个Action的package下面有一个名为Index的Action类,那么如果你直接访问这个package,那么你可以访问到这个类: com.demo2do.lighturl.action.Index - http:/host:port/app/ com.demo2do.lighturl.action.user.Index - http:/h

11、ost:port/app/user com.demo2do.lighturl.action.blog.category.Index - http:/host:port/app/blog/category 2. 支持类似: /entity/$id形式的URL 这种匹配我通常称之为:entity匹配。这个特性也比较简单,如果你有某个entity,并且在你的Action package下有一个与entity同名的package。同时在这个package下有一个叫View的Action,那么上述形式的URL会被映射到该Action。 com.demo2do.lighturl.action.user.V

12、iew - http:/host:port/app/user/3456 com.demo2do.lighturl.action.blog.View - http:/host:port/app/user/1113 你可以通过在struts.properties中指定你entity所在的package来对哪些url可以具备这些特性,如果你输入的url不在你所指定的package中含有entity,那么这个url将无法被识别。 针对有些情况,数据库的主键可能不是数字。此时,你可以通过自己实现com.demo2do.lighturl.config.EntityPrimaryKeyIdentifier的

13、接口来指定你的url中id具备什么特点。默认的实现是将主键识别为数字。 使用Annotation来指定映射 除了上述这些基本特性以外,还可以通过Annotaion来指定URL映射。目前情况下,LightURL所支持的Annotation有两种类型: 1. URL完整匹配 URL完整匹配是指如果某个url完整匹配于Annotation中所指定的内容,那么这个URL将被映射到Annotation所在的Action类的method Java代码 1. packagecom.demo2do.lighturl.action.user; 2. 3. importcom.demo2do.lighturl.a

14、nnotation.Action; 4. importcom.opensymphony.xwork2.ActionSupport; 5. 6. /* 7. *authorDownpour 8. * 9. */10. publicclassSearchextendsActionSupport 11. 12. privatestaticfinallongserialVersionUID=-1728616675239859226L; 13. 14. /*(non-Javadoc) 15. *seecom.opensymphony.xwork2.ActionSupport#execute() 16.

15、*/17. Override18. Action(/all/search-user) 19. publicStringexecute()throwsException 20. returnsuper.execute(); 21. 22. 23. package com.demo2do.lighturl.action.user;import com.demo2do.lighturl.annotation.Action;import com.opensymphony.xwork2.ActionSupport;/* * author Downpour * */public class Search

16、extends ActionSupport private static final long serialVersionUID = -1728616675239859226L; /* (non-Javadoc) * see com.opensymphony.xwork2.ActionSupport#execute() */ Override Action(/all/search-user) public String execute() throws Exception return super.execute(); 例如,上述的Action类有一个Annotation,那么这个Action

17、和method将被映射到对应的URL:http:/host:port/app/all/search-user。 注意,此时,虽然从url上来看,这是一个没有什么规则的url,但是其所对应的namespace和actionName还是根据com.demo2do.lighturl.action.user.Search来进行计算的。 2. URL Template URL Template是指,url可以匹配Annotaion中指定的某种URL Template,并将其中的可变部分作为参数映射到Action中。 Java代码 1. packagecom.demo2do.lighturl.action

18、.blog; 2. 3. importcom.demo2do.lighturl.annotation.Action; 4. importcom.opensymphony.xwork2.ActionSupport; 5. 6. /* 7. *authorDownpour 8. * 9. */10. publicclassCategoryextendsActionSupport 11. 12. privatestaticfinallongserialVersionUID=-1535992103374733252L; 13. 14. privateLongid; 15. 16. privateint

19、year; 17. 18. privateintmonth; 19. 20. privateintday; 21. 22. /*(non-Javadoc) 23. *seecom.opensymphony.xwork2.ActionSupport#execute() 24. */25. Override26. Action(/blogs/$year/$month/$day) 27. publicStringexecute()throwsException 28. returnsuper.execute(); 29. 30. 31. Action(/blog/$id/edit) 32. publ

20、icStringedit()throwsException 33. returnsuper.execute(); 34. 35. /settersandgetters 36. 37. package com.demo2do.lighturl.action.blog;import com.demo2do.lighturl.annotation.Action;import com.opensymphony.xwork2.ActionSupport;/* * author Downpour * */public class Category extends ActionSupport private

21、 static final long serialVersionUID = -1535992103374733252L; private Long id; private int year; private int month; private int day; /* (non-Javadoc) * see com.opensymphony.xwork2.ActionSupport#execute() */ Override Action(/blogs/$year/$month/$day) public String execute() throws Exception return supe

22、r.execute(); Action(/blog/$id/edit) public String edit() throws Exception return super.execute(); / setters and getters 在上述的例子中,可以发现,在Annotation中所指定的内容是一个URL Template,如果你有一个url,可以匹配上面的URL Template,那么url将匹配到这个Action的method,并且将对应位置的值注入到Action中的同名参数中。 针对上面的例子: http:/host:port/app/blogs/2008/08/07将被映射到这

23、个Action的execute,并且2008,08和07分别映射到year,month和day中。 http:/host:port/app/blog/2345/edit将被映射到Action的edit方法,并且2345映射到id中作为参数 URL的匹配顺序与重复配置的校验 在上面的例子中,介绍了那么多的url映射到Action中的方式。他们之间可能会出现冲突,有些冲突,LightURL会在系统启动时为你检查出来,并强制要求你纠正它,而有些冲突,则通过优先级匹配的方式进行。 下列冲突将被认为是你必须在系统启动前就进行纠正的: 1. Annotation中定义的URL Template互相之间冲突

24、 例如:/blogs/$year/$month/$day和/blogs/$category/$id/edit就是冲突的。 2. Annotation中定义的URL Template与其他Annotation中定义的完全匹配URL冲突 例如:/blogs/$year/$month和/blogs/category/index就是冲突的。 3. Annotation中定义的URL Template与形如/entity/$id的url定义冲突 例如:/user/$id形式的Annotation定义可能会与系统默认支持的冲突。 在其他情况下,如果你定义的URL映射互相直接有冲突,那么LightURL将根

25、据某个顺序进行URL匹配,并找到第一个匹配的映射方式,然后放弃查找。这个顺序为: 1. 首先进行Namespace匹配,如果url恰好能匹配某个namespace,并且其对应的package下有Index作为Action,那么直接进行匹配。 2. 其次查看所有的Annotation定义中,是否存在完整的URL匹配,如果找到,那么进行直接匹配。 3. 接着进行package匹配,将url分解成相应的namespace和actionName,与已有的配置进行匹配,如果找到,那么直接匹配。 4. 然后进行entity匹配,看看url是否形如:/entity/$id,如果是,那么直接匹配。 5. 最后

26、进行Annotation定义的Url Template匹配。 如果所有的五种情况都无法进行匹配,那么这个URL将无法被LightURL识别,继续交由Struts2进行后续处理。 上面所描述的内容都是Url到Action的映射。下面的部分,描述的是如何在Action执行完毕之后,转到相应的结果view。 Codebehind LightURL支持codebehind。有关codebehind的相关知识,可以参考struts2的相关文档: http:/struts.apache.org/2.x/docs/codebehind-plugin.html 有了codebehind的支持,那么从Actio

27、n转到类似jsp,ftl或者vm的view层组件就不需要任何配置,只要符合一定的命名规范,就可以直接进行转向。 ResultCode的识别 但是在很多情况下,我们需要的是全方位的Result类型的支持。例如,有的时候我们需要返回JSON Result,有的时候,我们可能需要Redirect到一个新的Action。此时,我们不得不为此增加一些配置,或者借助Annotation来完成。 为此,LightURL提供了一种根据ResultCode进行识别的命名方式来匹配你所指定的Result。 以JSON Result为例,你可以这么写: Java代码 1. packagecom.demo2do.lighturl.action.user; 2. 3. importcom.demo2do.lighturl.entity.User; 4. importcom.opensymphony.xwork2.ActionSupport; 5. 6. /* 7. *authorDownpour 8. * 9. */10. p

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1