SpringMVC 构建Restful风格 及问题处理
基本的请求URL:
/person/{id} GET 得到id的person
/person POST 新增person
/person/{id} PUT 更新id的person
/person/{id} DELETE 删除id的person
源码地址:https://github.com/loveincode/ssm
1. 查询 GET
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public @ResponseBody String show(@PathVariable Integer id, HttpServletRequest request,
HttpServletResponse response) {
log.info("ENTER " + ToolsUtil.getMethodName());
ResultVO resultVO = new ResultVO();
Person person = new Person();
person = personService.findById(id);
if (person != null) {
resultVO.setSuccess(true);
resultVO.setData(person);
resultVO.setMessage("查询成功");
} else {
resultVO.setMessage("查询失败,没找到id=" + id + "的Person");
}
return resultVO.toString();
}
测试:

2. 新增 POST
@RequestMapping(method = RequestMethod.POST)
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody String add(@ModelAttribute("person") Person person, HttpServletRequest request,
HttpServletResponse response) {
ResultVO resultVO = new ResultVO();
System.out.println(person.toString());
if (person.getName() != null) {
personService.add(person);
resultVO.setSuccess(true);
resultVO.setMessage("插入成功");
} else {
resultVO.setMessage("name为空,插入失败");
}
return resultVO.toString();
}
测试:

3. 更新 PUT
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody
public String update(@PathVariable Integer id, @ModelAttribute("person") Person person, HttpServletRequest request,
HttpServletResponse response) {
ResultVO resultVO = new ResultVO();
Person oldperson = personService.findById(id);
if (oldperson != null) {
if (person.getName() != null) {
person.setId(oldperson.getId());
personService.update(person);
resultVO.setMessage("更新成功");
} else {
resultVO.setMessage("更新失败,name为空");
}
} else {
resultVO.setMessage("更新失败,不存在 id = " + id + "的Person");
}
return resultVO.toString();
}
测试:

4. 删除 DELETE
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id, HttpServletRequest request, HttpServletResponse response) {
ResultVO resultVO = new ResultVO();
Person person = new Person();
person = personService.findById(id);
if (person != null) {
resultVO.setSuccess(true);
personService.delete(id);
resultVO.setMessage("删除成功");
} else {
resultVO.setMessage("删除失败,不存在id = " + id + "的Person");
}
return resultVO.toString();
}
测试:

5. 问题
5.1 SpringMVC接收不了PUT、DELETE bodydata 解决方法
需要在web.xml中加上:
<filter>
<filter-name>HttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
然后在请求PUT、DELETE的时候,使用POST请求,在body中加入_method 参数,参数为PUT或DELETE,即可完成对PUT、DELETE的处理。
例如:

strtus2 构建restful风格 https://www.ibm.com/developerworks/cn/java/j-lo-struts2rest/
SpringMVC 构建Restful风格 及问题处理的更多相关文章
- Spring Boot构建 RESTful 风格应用
Spring Boot构建 RESTful 风格应用 1.Spring Boot构建 RESTful 风格应用 1.1 实战 1.1.1 创建工程 1.1.2 构建实体类 1.1.4 查询定制 1.1 ...
- 构建RESTful风格的WCF服务
构建RESTful风格的WCF服务 RESTful Wcf是一种基于Http协议的服务架构风格. 相较 WCF.WebService 使用 SOAP.WSDL.WS-* 而言,几乎所有的语言和网络平台 ...
- lucene构建restful风格的简单搜索引擎服务
来自于本人博客: lucene构建restful风格的简单搜索引擎服务 本人的博客如今也要改成使用lucene进行全文检索的功能,因此在这里把代码贴出来与大家分享 一,文件夹结构: 二,配置文件: 总 ...
- springMVC+json构建restful风格的服务
首先.要知道什么是rest服务,什么是rest服务呢? REST(英文:Representational State Transfer,简称REST)描写叙述了一个架构样式的网络系统.比方 web 应 ...
- SpringBoot实战(一)之构建RestFul风格
RestFul风格是一种非常流行的架构风格,相关实战可以参考我的这篇博客:SSM框架之RestFul示例 论文可参考:https://www.ics.uci.edu/~fielding/pubs/di ...
- Spring Boot 中 10 行代码构建 RESTful 风格应用
RESTful ,到现在相信已经没人不知道这个东西了吧!关于 RESTful 的概念,我这里就不做过多介绍了,传统的 Struts 对 RESTful 支持不够友好 ,但是 SpringMVC 对于 ...
- Spring Boot2 系列教程(三十一)Spring Boot 构建 RESTful 风格应用
RESTful ,到现在相信已经没人不知道这个东西了吧!关于 RESTful 的概念,我这里就不做过多介绍了,传统的 Struts 对 RESTful 支持不够友好 ,但是 SpringMVC 对于 ...
- SpringMVC实现Restful风格的WebService
1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...
- [五]SpringMvc学习-Restful风格实现
1.Restful风格的资源URL 无后缀资源的访问(csdn用法) 2.SpringMvc对Rest风格的支持 2.1将 /*.do改为/ 2.2 3.@PathVariable获取Url变量 @R ...
随机推荐
- 玩转JS系列之代码加载篇
从前我们这样写js <script type="text/javascript"> function a(){ console.log('a init');}funct ...
- MySql的安装与卸载
首先到官网下载MySQL,点击安装 出现的页面如下,依次安装就好了,安装过程中需要修改的只有编码格式,需要填写的是数据库的密码,MySQL的默认用户名为root,默认端口为3306,端口号最好不要修改 ...
- Struts2学习笔记(八)——国际化
1.Struts2国际化介绍 国际化即internationalization简称i18n. 为了实现程序的国际化,必须先提供程序所需要的资源文件.资源文件的内容是key-value键值对. 资源文件 ...
- BotVS开发基础—2.7 指标MACD
代码 def main(): while true: records = _C(exchange.GetRecords); # 获取K线数据 ,默认为策略界面设置的K线周期, _C 是一个容错的内置函 ...
- canvas自适应圆形时钟绘制
前面的话 前面介绍过canvas粒子时钟的绘制,本文将详细介绍canvas自适应圆形时钟绘制 效果演示 最终自适应圆形时钟的效果如下所示 功能分析 下面来分析一下该圆形时钟的功能 [1]静态背景 对于 ...
- HashMap 数组应用面试题(Point)
今天看了一题面试题,以为很简单,不过自己写了遍,没有完全写出来: 题目是这样的: 给定一些 points 和一个 origin,从 points 中找到 k 个离 origin 最近的点.按照距离由小 ...
- JAVA_多线程_单例模式
这篇是入职之后的第二篇了,上一篇我简单介绍了一下LOCK里面的类的方法,感兴趣的话可以去了解一下,以后坚持每周至少会更新一篇关于多线程方面的文章,希望博友们可以一起加油成长. 这篇主要的内容是单例模式 ...
- XWPFDocument创建和读取Office Word文档基础篇(一)
注:有不正确的地方还望大神能够指出,抱拳了 老铁! 参考API:http://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFDo ...
- jsp页面附件上传暂存的处理
有没有遇到页面是新建一个新对象,对象里面需要上传附件,但是只有当对象保存时才将附件一同上传到数据库的情况? 这种情况的处理可以参考狐狸的思路: @jsp页面创建一个botton bn,该button的 ...
- django框架(View)
-------------------URLconf-------------------1.设置 1.在settings.py文件中通过ROOT_URLCONF指定根级url的配置 2.urlpat ...