基本的请求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风格 及问题处理的更多相关文章

  1. Spring Boot构建 RESTful 风格应用

    Spring Boot构建 RESTful 风格应用 1.Spring Boot构建 RESTful 风格应用 1.1 实战 1.1.1 创建工程 1.1.2 构建实体类 1.1.4 查询定制 1.1 ...

  2. 构建RESTful风格的WCF服务

    构建RESTful风格的WCF服务 RESTful Wcf是一种基于Http协议的服务架构风格. 相较 WCF.WebService 使用 SOAP.WSDL.WS-* 而言,几乎所有的语言和网络平台 ...

  3. lucene构建restful风格的简单搜索引擎服务

    来自于本人博客: lucene构建restful风格的简单搜索引擎服务 本人的博客如今也要改成使用lucene进行全文检索的功能,因此在这里把代码贴出来与大家分享 一,文件夹结构: 二,配置文件: 总 ...

  4. springMVC+json构建restful风格的服务

    首先.要知道什么是rest服务,什么是rest服务呢? REST(英文:Representational State Transfer,简称REST)描写叙述了一个架构样式的网络系统.比方 web 应 ...

  5. SpringBoot实战(一)之构建RestFul风格

    RestFul风格是一种非常流行的架构风格,相关实战可以参考我的这篇博客:SSM框架之RestFul示例 论文可参考:https://www.ics.uci.edu/~fielding/pubs/di ...

  6. Spring Boot 中 10 行代码构建 RESTful 风格应用

    RESTful ,到现在相信已经没人不知道这个东西了吧!关于 RESTful 的概念,我这里就不做过多介绍了,传统的 Struts 对 RESTful 支持不够友好 ,但是 SpringMVC 对于 ...

  7. Spring Boot2 系列教程(三十一)Spring Boot 构建 RESTful 风格应用

    RESTful ,到现在相信已经没人不知道这个东西了吧!关于 RESTful 的概念,我这里就不做过多介绍了,传统的 Struts 对 RESTful 支持不够友好 ,但是 SpringMVC 对于 ...

  8. SpringMVC实现Restful风格的WebService

    1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程 使用MyEclipse创建maven工程的方式可以参考这篇博文( ...

  9. [五]SpringMvc学习-Restful风格实现

    1.Restful风格的资源URL 无后缀资源的访问(csdn用法) 2.SpringMvc对Rest风格的支持 2.1将 /*.do改为/ 2.2 3.@PathVariable获取Url变量 @R ...

随机推荐

  1. php面试题汇总一(基础篇附答案)

    一份不错的php面试题,附答案,有准备换工作的同学可以参考一下. 1:使用五种以上方式获取一个文件的扩展名要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,必须使用PHP ...

  2. JSP是什么?

    JSP      [1] 简介           > HTML                - HTML擅长显示一个静态的网页,但是不能调用Java程序.           > Se ...

  3. Scikit-Learn框架

    1. Dataset scikit-learn提供了一些标准数据集(datasets),比如用于分类学习的iris 和 digits 数据集,还有用于归约的boston house prices 数据 ...

  4. Tomcat去除端口号和项目名(转)

    方法一: 在一个项目结束的时候,往往根据需要直接映射到一个IP地址上.此时就需要去除端口和项目名了,在访问的时候.下面根据具体的例子提供一种实现方法. 一.去掉项目名称 把<Context do ...

  5. Powerdesigner 连接mysql 在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM014

    系统环境: WIN7 64位系统, 用Powerdesigner 连接MySQL 逆向工程时 报错 "在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM01 ...

  6. Python输入函数 raw_input( ) 与 input()

    一. raw_input() 在Python中,获取键盘输入的数据的方法是采用 raw_input 函数,那么这个 raw_input 怎么用呢? 注意: raw_input()的小括号中放入的是,提 ...

  7. Centos 6.5 安装 python3.6.2、pip9.0.1、ipython6.1

    说明:由于Cenots 6.5 默认是安装的 python 2.6.6  要想同一台主机使用多个python版本,不能影响原来的版本,因为系统很多还依赖于python,比如 yum    python ...

  8. Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1)

    相关博文: Ubuntu 简单安装和配置 GitLab Ubuntu 简单安装 Docker Ubuntu Docker 简单安装 GitLab Ubuntu Docker 安装和配置 GitLab ...

  9. Ubuntu安装卸载anaconda

    安装要点: 1.在Anaconda官网https://www.continuum.io/downloads内下载需要的版本: 2.打开终端--进入下载安装包所在的文件夹(cd 文件名)--输入命令:b ...

  10. CDH-5.7.1离线安装

    CDH-5.7.1离线安装 参考自:http://blog.csdn.net/jdplus/article/details/45920733   1.文件下载 CDH (Cloudera's Dist ...