探讨问题的同胞们可以加QQ群:315309006
写这篇文章有点小矛盾,我个人比较喜欢用struts的方式提供action服务,springmvc虽然也很不错,但是其配置内容的巨大让笔者对它没什么好感,我最初想整合这俩东西的目的是为了用struts的action配置方式来提供spring的restful服务效果:
/**
* @describe 输出单个的对象 GET /{classes}/{id}
* @return
*/
@RequestMapping(method = RequestMethod.GET, value = "{classes}/{id}")
public abstract void selectOne();
/**
* @desc 输出对象列表 GET /{classes}
* @return
*/
@RequestMapping(method = RequestMethod.GET, value = "{classes}")
public abstract void selectList();
/**
* @describe 删除对象 DELETE /{classes}/{id}
* @return
*/
@RequestMapping(method = RequestMethod.DELETE, value = "{classes}/{id}")
public abstract void deleteOne();
/**
* @describe 删除对象列表 DELETE /{classes}
* @return
*/
@RequestMapping(method = RequestMethod.DELETE, value = "{classes}")
public abstract void deleteList();
/**
* @describe 创建对象 POST /{classes}
* @return
*/
@RequestMapping(method = RequestMethod.POST, value = "{classes}")
public abstract void create();
/**
* @describe 修改对象 PUT /{classes}/{id}
* @return
*/
@RequestMapping(method = RequestMethod.PUT, value = "{classes}/{id}")
public abstract void updateOne();
/**
* @describe 修改对象列表 PUT /{classes}
* @return
*/
@RequestMapping(method = RequestMethod.PUT, value = "{classes}")
public abstract void updateList();
下面一端代码是我想达到的最终目的:
@RequestMapping(method = RequestMethod.GET, value = "entity/{classes}/{id}")
public void selectOne() {
// parameterMap中包含url中的所有参数值(包括?param1=*)
String clazz = parameterMap.get("classes").toString();
String id = parameterMap.get("id").toString();
// resultMap是响应请求的返回值
resultMap.put("classes", clazz);
resultMap.put("id", id);
}
struts配置想要达到的效果:
<package name="v1" namespace="/v1" extends="json-default">
<global-results>
<result name="json" type="json">
<param name="contentType">text/html</param>
<param name="root">resultMap</param>
</result>
<result name="xml" type="xslt">
<param name="stylesheetLocation">/WEB-INF/template.xslt</param>
<param name="exposedValue">resultMap</param>
<param name="noCache">true</param>
</result>
</global-results>
<action name="entity**" class="action.EntityAction" />
</package>
返回结果可以通过"Content-Type"来控制返回内容的格式:
1.application/xml返回xml格式数据
2.application/json返回json格式数据
下面是curl测试结果:
探讨问题的同胞们可以加QQ群:315309006