struts2 零配置(一)
来源:互联网 发布:rsa算法c语言实现 编辑:程序博客网 时间:2024/05/22 11:39
第一天到公司上班,看看代码吧。发现配置文件里找不到一个Action,页面如何跳转也看不到。好奇怪,第一反应就是肯定用了注解。找找注解,可发现注解也只有一些@Result,只有这些是远远不够的。跟着代码慢慢发现了规律:...coordinate!list.action,这样是访问coordinateAction下的list方法,也发现页面的命名分隔符前面coordinate-list.jsp和Action前面的一样等等类似的。然后去网上找了一些资料,才知道这是struts2的零配置。
struts2 零配置其实并不是我们学习struts2的一个重点,但是这个必须要知道。零配置不是真的没有配置文件,只是配置文件很少,充分发挥了一条原则:约定大于配置(Convention over Configration)。 要想使用它,我们先引入jar包:struts2-convention-plugin-2.3.16.2.jar。
先看一个我们不使用convention-plugin插件之前的action配置:struts.xml
<struts> <package name="login" namespace="/" extends="struts-default"> <action name="user_*" class="org.wu.struts.action.UserAction" method="{1}"> <!—- {1}表示取得在name中出现的第一个*,填写到method值中 --> <result name="suc">/suc.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts>
如果使用convention-plugin插件,原理是一样的,该有的配置一样都不能少,只不过是换成一些约定。
1.action的定位,如何知道哪些类是action.
对于Convention插件而言,它会自动搜索位于action,actions,struts,struts2包下的所有java类,Convention插件会把如下两种java类当成Action处理:
一、所有实现了com.opensymphony.xwork2.Action的java类 ;
二、所有类名以Action结尾的java类。
Convention插件还允许设置如下两个常量:
struts.Convention.exclude.packges :指定不扫描哪些包下的java类,位于这些包结构下的java类将不会自动映射成Action;
struts.convention.package.locators :Convention插件使用该常量指定的包作为搜寻Action的根包。比如:
<constant name="struts.convention.package.locators" value="web" />
那么把web作为搜寻Action的根包。如下图:
对于web.dispatch.report.coordinate.CoordinateAction类,按约定原本应映射的命名空间为/dispatch/report/coordinate;如果将该常量设为report,则该Action将会映射到/coordinate
2.映射Action的name
正如我们之前的配置,每个Action类都对应一个name,以前是我们自己命名,不重复即可,现在采用映射,我们必须有一个约定。
1)如果该Action类名包含Action后缀,将该Action类名的Action后缀去掉。否则不做任何处理。
2)将Action类名的驼峰写法(每个单词首字母大写、其他字母小写的写法)转成中画线写法(所有字母小写,单词与单词之间以中画线隔开)
如:LoginAction映射的Acion的name属性为login,GetBooks映射的Action的name的属性为get-books,AddEmployeeAction映射的Action的name属性为add-employee
3. jsp页面的定位
默认情况下,Convention总会到WEB应用的WEB-INF/content路径下定位物理资源,定位资源的约定是:actionRUL+resultCODE+suffix。当某个逻辑视图找不到对应的试图资源时,Convention会自动视图使用ActionURL+suffix作为物理视图资源。
如:web.dispatch.report.coordinate.CoordinateAction 返回list字符串时,Convention优先考虑使用WEB-INF/content/dispatch/report/coordinate目录下的coordinate-list.jsp作为视图资源。如果找不到该文件,coordinate.jsp也可作为对应的试图资源。如果返回input字符串,Convention会将WEB-INF/content/dispatch/report/coordinate里面查找coordinate-input.jsp.看下图:
Convention的Annotation,下篇详解。
具体的阐述请参考官网上的文档http://struts.apache.org/2.1.6/docs/convention-plugin.html
- struts2 零配置(一)
- Struts2零配置开发(注解Annotation的使用)一
- Struts2基于注解Annotation的零配置开发(一)
- Struts2零配置开发(注解Annotation的使用)一
- Struts2零配置开发(注解Annotation的使用)一
- Struts2零配置之Configuration by Convention(一)
- Struts2零配置之Configuration by Convention(一)
- Struts2零配置之Configuration by Convention(一)
- Struts2零配置开发(注解Annotation的使用)一
- Struts2零配置开发(注解Annotation的使用)一
- Struts2 零配置(1)
- struts2零配置(2)
- Struts2 零配置(二)
- SSH配置(一)-struts2(convention插件零配置)
- (转)struts2的零配置
- (转)struts2的零配置
- (转)struts2的零配置
- struts2.0 零配置
- myelipse设置护眼
- eclipse + libsvm-3.12 用SVM实现简单线性分类
- andriod+nfc
- linux下的蓝牙驱动程序详解
- 字符数组、字符串的声明及初始化问题
- struts2 零配置(一)
- sizeof 和 strlen
- libsvm支持向量机回归示例
- 理解CSS3 transform
- mongo笔记之备份
- 新入门web开发的吐槽
- java网络编程笔记 第二章 流
- 线索二叉树
- 用java Swing写一个最简单的图形框