- struts2插件算得上是她腾飞的翅膀,这里先直接感受下rest插件简单事例。
- 看一下rest插件,规则
==========================================URL映射表,发送一个请求调用Action的哪个方法=====================================================
The following URL's will invoke its methods:
说明:movies代表action名,Thrillers代表参数名(可以是int,也可以是String根据业务选定)
//查看产品信息页面
GET: /movies => method="index" 常用于展示所有产品信息页面
GET: /movies/Thrillers => method="show", id="Thrillers" 常用于查看某一个产品详情
//进入一个操作页面(下面两种方式等价)
===>根据底层源码可以得到这样一个公式:/movies/参数xxx/指定调用的action的方法名(GET请求 )
GET: /movies/Thrillers;edit => method="edit", id="Thrillers" 常用于编辑某个产品信息(进入一个编辑的操作页面)
GET: /movies/Thrillers/edit => method="edit", id="Thrillers"
GET: /movies/new => method="editNew" 常用于创建一个新产品(进入一个创建的操作页面)
POST: /movies => method="create" 常用于创建一个新的产品
//在操作页面进行修改或删除操作
PUT: /movies/Thrillers => method="update", id="Thrillers" 常用于编辑一个产品(进行了编辑操作)
DELETE: /movies/Thrillers => method="destroy", id="Thrillers" 常用于删除一个产品(进行删除操作)
To simulate the HTTP methods PUT and DELETE, since they aren't supported by HTML, the HTTP parameter "_method" will be used.
===========================================根据resultCode(通常是Action方法返回的结果)返回那个页面=======================================
1.创建ResultTypeConfig有两种方式:
(1).从xml相关资源中createFromResources
(2).从注解中createFromAnnotations
//比如第(1)种通过配置:
<constant name="struts.convention.result.path" value="/WEB-INF/content/"/>
从当前项目的WEB-INF/content/目录下寻找资源来构建result:
(a).resultPath=/WEB-INF/content,
(b).resultPrefix = /WEB-INF/content/movies
(c).ResultConfigs(Map数据结构):
{deleteConfirm=com.opensymphony.xwork2.config.entities.ResultConfig@918059d,
index=com.opensymphony.xwork2.config.entities.ResultConfig@c7a801d5,
edit=com.opensymphony.xwork2.config.entities.ResultConfig@c00fd4c9,
success=com.opensymphony.xwork2.config.entities.ResultConfig@5fef2d46}
根据返回的resultCode来找到返回的视图ResultConfig,比如返回的是"index",
可找到com.opensymphony.xwork2.config.entities.ResultConfig@c7a801d5,
此对象中含有/WEB-INF/content/movies-index.jsp,可作为返回的页面。
====>通过源码可以得出这样一个公式:"/WEB-INF/content/movies-index.jsp通过substring()方法截取到index作为ResultConfigs的key(resultCode)
逆向反过来:通过resultCode可以构建出返回的页面名称,比如resultCode="abc",则movies-abc.jsp (movies为actionName)
3.项目结构图
- 主代码文件
有需要的可私信作者!
@author:拈花为何不一笑
- 项目演示
现在开始 >>>>>>
配置文件说明 >>>>>>
<!-- Restful相关常量Bean配置 -->
<!-- 通过扫描指定包(比如com.bs.action)后来确定包中那些类可以作为Action,这个配置指定以Controller结尾的类可作为Action。
这与struts2中指定的请求url的后缀名完全是两码事,比如:/hello.action。
rest风格的action构建与struts2风格差别比较大,rest风格构建acton有两种方式:
(1).一种是扫描指定包结合下面这个配置等信息来构建ActionConfig
(2).另一种是扫描指定包结合@Action注解等信息来构建ActionConfig,这个需要配置常量bean:
<constant name="struts.convention.action.mapAllMatches" value="true" />
这个配置相当于一个开关,由它来确定是否使用@Action注解来构建ActionConfig。
-->
<constant name="struts.convention.action.suffix" value="Controller" />
<!-- PackageBasedActionConfigBuilder类中指定defaultParentPackage:
根据name得到value,把value作为参数赋值给defaultParentPackage。
用于指定构建的action继承的父包为:rest-default -->
<constant name="struts.convention.default.parent.package" value="rest-default" />
rest插件实现restful风格第2集(Struts2) , 更新中.....