SpringMVC实现RESTful服务
SpringMVC实现RESTful服务

这里只说service,controller层的代码。Mapper层则直接继承Mapper<T>则可以,记住mybatis-config.xml一定要配置分页插件和mapper类的插件。
1.查询所有用户
service:
@Autowired
private IUserMapper userMapper; @Override
public EasyUIResult getAllUser(Integer page, Integer rows) {
// TODO Auto-generated method stub // 后台帮我们封装了一个page并且直接存到本地线程
PageHelper.startPage(page, rows);
Example example = new Example(User.class);
example.setOrderByClause("updated desc");
List<User> list = userMapper.selectByExample(example);
PageInfo<User> pageInfo = new PageInfo<>(list);
return new EasyUIResult(pageInfo.getTotal(), pageInfo.getList());
}
controller:
/**
* 查询所有用户 返回数据类型为:json格式
*
* @param page
* @param rows
* @return
*/
@RequestMapping(value = "list", method = { RequestMethod.POST })
public @ResponseBody EasyUIResult finAllUser(@RequestParam(value = "page", defaultValue = "") Integer page,
@RequestParam(value = "rows", defaultValue = "") Integer rows) {
return userService.getAllUser(page, rows);
}
2.根据用户id查询用户信息
service:
@Override
public User queryUserById(Long id) {
// TODO Auto-generated method stub
return userMapper.selectByPrimaryKey(id);
}
cotroller:
@Controller
@RequestMapping("user/rest")
public class RestUserController { @Autowired
private IUserService userService; /**
* 根据id查询用户信息
*
* @param id
* @return
*/
@RequestMapping(value = "{userId}", method = RequestMethod.GET)
public ResponseEntity<User> queryUserById(@PathVariable(value = "userId") Long id) {
try {
User user = userService.queryUserById(id);
if (user == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
// return ResponseEntity.ok(user);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// return ResponseEntity.status(500).body(null);
// 系统内部异常
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
3.添加一个用户
service:
@Override
public Boolean saveUser(User user) {
// TODO Auto-generated method stub
return userMapper.insertSelective(user) == 1;
}
controller:
/**
* 添加一个用户
*
* @param user
* @return
*/
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<Void> addUser(User user) {
try {
userService.saveUser(user);
return ResponseEntity.status(HttpStatus.CREATED).build();
// return ResponseEntity.ok(user);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
4.修改用户
service:
@Override
public boolean updateUsers(User user) {
// TODO Auto-generated method stub
// 修改用户所有信息
// userMapper.updateByPrimaryKey(User);
// 修改不为空的字段
// userMapper.updateByPrimaryKeySelective(record);
return userMapper.updateByPrimaryKey(user) == 1;
}
controller:
/**
* 跟新用户
*
* @param user
* @return
*/
@RequestMapping(method = RequestMethod.PUT)
public ResponseEntity<Void> updateUser(User user) {
try {
boolean b = userService.updateUsers(user);
if (b) {
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}
// return ResponseEntity.ok(user);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
5.删除
service:
@Override
public boolean deleteUser(Long id) {
// TODO Auto-generated method stub
return userMapper.deleteByPrimaryKey(id) == 1;
}
controller:
/**
* 删除一个用户
*
* @param id
* @return
*/
@RequestMapping(method = RequestMethod.DELETE)
public ResponseEntity<Void> deleteUser(@RequestParam(value = "id", defaultValue = "0") Long id) {
try {
if (id == 0) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
boolean b = userService.deleteUser(id);
if (b) {
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}
// return ResponseEntity.ok(user);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
delete删除时比较特殊:一定要注意

进行删除和修改时,要在web.xml中配置过滤器(补充):
<!--
将POST请求转化为DELETE或者是PUT
要用_method指定真正的请求参数
-->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 解决PUT请求无法提交表单数据的问题 -->
<filter>
<filter-name>HttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
大功告成!!
SpringMVC实现RESTful服务的更多相关文章
- 基于springMVC的RESTful服务实现
一,什么是RESTful RESTful(RESTful Web Services)一种架构风格,表述性状态转移,它不是一个软件,也不是一个标准,而是一种思想,不依赖于任何通信协议,但是开发时要成功映 ...
- 实战SpringCloud响应式微服务系列教程(第九章)使用Spring WebFlux构建响应式RESTful服务
本文为实战SpringCloud响应式微服务系列教程第九章,讲解使用Spring WebFlux构建响应式RESTful服务.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 从本节开始我们 ...
- 基于 springMVC 的 RESTful HTTP API 实践(服务端)
理解 REST REST(Representational State Transfer),中文翻译叫"表述性状态转移".是 Roy Thomas Fielding 在他2000年 ...
- spring 3.0 应用springmvc 构造RESTful URL 详细讲解
在线springmvc_rest demo 由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下问题. springmvc 3 ...
- atitit.RESTful服务的概览and框架选型
atitit.RESTful服务的概览and框架选型 1. REST基础概念: 1 2. URL说明: 1 3. 1 4. RESTful框架选型 2 1. spring mvc( recomm) ...
- 使用Spring Security Oauth2完成RESTful服务password认证的过程
摘要:Spring Security与Oauth2整合步骤中详细描述了使用过程,但它对于入门者有些重量级,比如将用户信息.ClientDetails.token存入数据库而非内存.配置 ...
- 应用Spring MVC发布restful服务是怎样的一种体验
摘要:“约定优于配置”这是一个相当棒的经验,SOAP服务性能差.基于配置.紧耦合,restful服务性能好.基于约定.松耦合,现在我就把使用Spring MVC发布restful服务的 ...
- 基于SpringBoot开发一个Restful服务,实现增删改查功能
前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...
- jersey2.26+spring5+jpa一步步搭建restful服务
前言 首先,为什么想选择Jersey做restful服务呢?我个人比较喜欢它的插件化设计,可以方便的注入自己的全局处理逻辑.再一个就是可以生成wadl描述文件,供查询服务方法.所以在学习spring的 ...
随机推荐
- MySQL笔记(五)MySQL 角色与SQL CHECK约束
MySQL ROLE MySQL 8.0 Reference Manual / Security / MySQL User Account Management / Using Roles ...
- Django国际化和本地化
把django的这篇文档看了一遍,基本弄懂了,讲的也挺详细的 https://docs.djangoproject.com/en/1.6/topics/i18n/ 首先是国际化和本地化概念: 1,国际 ...
- JavaScript 实现省市二级联动
JavaScript 实现省市二级联动 版权声明:未经授权,严禁转载! 案例代码 <style> .hide { display: none; } </style> <s ...
- 01: 安装zabbix server
目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...
- ELK之kibana6.5
ELK之安装kibana6.5,这里采用rpm安装: https://www.elastic.co/guide/en/kibana/current/rpm.html # wget https://ar ...
- 20145310《网络对抗》逆向及Bof基础
实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- 20145327 《网络对抗》Web安全基础实践
20145327 <网络对抗>Web安全基础实践 实践过程 webgoat开启 java -jar webgoat-container-7.0.1-war-exec.jar 在浏览器输入l ...
- 在浏览器输入url后并回车发生了哪些过程
1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...
- 不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN)【转】
本文转载自:https://www.leiphone.com/news/201703/Y5vnDSV9uIJIQzQm.html 生成对抗网络(Generative Adversarial Netwo ...
- tensorflow的写诗代码分析【转】
本文转载自:https://dongzhixiao.github.io/2018/07/21/so-hot/ 今天周六,早晨出门吃饭,全身汗湿透.天气真的是太热了!我决定一天不出门,在屋子里面休息! ...