002 Spring Restful案例
1:工程结构
需要注意的是需要额外导入以下三个包:
jackson-annotations-2.6.1.jar
jackson-core-2.6.1.jar
jackson-databind-2.6.1.jar
2:配置文件
(1)web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!--Spring Restfull-->
<servlet>
<servlet-name>rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping> </web-app>
(2)rest-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-4.2.xsd"> <mvc:annotation-driven/>
<context:component-scan base-package="com.wzh.api"/> <!--Dao-->
<bean id="userDao" class="com.wzh.api.user.UserDaoImpl"/> <!--Service-->
<bean id="userService" class="com.wzh.api.user.UserService">
<property name="userDao" ref="userDao"/>
</bean> <!--Controller-->
<bean id="userCtrl" class="com.wzh.api.user.UserCtrl">
<property name="userService" ref="userService"/>
</bean> </beans>
3:com.wzh.comm.ResultVo
package com.wzh.comm; import com.fasterxml.jackson.databind.annotation.JsonSerialize; /**
* @author y
* @date 2015-9-6 18:34:44
* @version V1.0
* @desc 操作结果公共返回值对象
*/
public class ResultVo {
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
private Integer no; @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
private String msg; @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
private Object result; public Integer getNo() {
return no;
} public void setNo(Integer no) {
this.no = no;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public Object getResult() {
return result;
} public void setResult(Object result) {
this.result = result;
} }
使用jackson提供的注解功能:
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
如果字段的值为NULL则不进行JOSN转换.
4:com.wzh.api.user.*
(1)UserModel.java
package com.wzh.api.user; /**
* @author y
* @date 2015-9-5 9:15:55
* @version V1.0
* @desc 用户对象
*/
public class UserModel { private String dm;
private String name;
private Integer age; public String getDm() {
return dm;
} public void setDm(String dm) {
this.dm = dm;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} }
(2)UserDao.java
package com.wzh.api.user; import java.util.List; /**
* @author y
* @date 2015-9-5 9:17:28
* @version 1.0
* @desc
*/
public interface UserDao { int add(UserModel user); int delete(String dm); int update(UserModel user); UserModel get(String dm); List<UserModel> list(UserModel user,int offset,int count);
}
(3)UserDaoImpl.java
package com.wzh.api.user; import java.util.ArrayList;
import java.util.List; /**
* @author y
* @date 2015-9-6 18:20:23
* @version V1.0
* @desc
*/
public class UserDaoImpl implements UserDao{ public int add(UserModel user) {
return 1;
} public int delete(String dm) {
return 1;
} public int update(UserModel user) {
return 1;
} public UserModel get(String dm) {
UserModel um = new UserModel();
um.setDm(dm);
um.setName("张三");
um.setAge(26);
return um;
} public List<UserModel> list(UserModel user, int offset, int count) {
List<UserModel> list = new ArrayList<UserModel>();
UserModel um = new UserModel();
um.setDm("001");
um.setName("张三");
um.setAge(26);
list.add(um);
um = new UserModel();
um.setDm("002");
um.setName("李四");
um.setAge(26);
list.add(um);
um = new UserModel();
um.setDm("003");
um.setName("王五");
um.setAge(26);
list.add(um); return list;
} }
(4)UserService.java
package com.wzh.api.user; import com.wzh.comm.ResultVo; /**
* @author y
* @date 2015-9-6 18:24:13
* @version V1.0
* @desc
*/
public class UserService {
private UserDao userDao;
private ResultVo resultVo; public void setUserDao(UserDao userDao){
this.userDao = userDao;
} public ResultVo add(UserModel user){
resultVo = new ResultVo();
resultVo.setNo(userDao.add(user));
resultVo.setMsg("数据增加成功"); return resultVo;
} public ResultVo delete(String dm){
resultVo = new ResultVo();
resultVo.setNo(userDao.delete(dm));
resultVo.setMsg("删除成功"); return resultVo;
} public ResultVo update(UserModel user){
resultVo = new ResultVo();
resultVo.setNo(userDao.update(user));
resultVo.setMsg("更新成功"); return resultVo;
} public ResultVo get(String dm){
resultVo = new ResultVo();
resultVo.setNo(1);
resultVo.setMsg("OK");
resultVo.setResult(userDao.get(dm)); return resultVo;
} public ResultVo list(UserModel user,int offset,int count){
resultVo = new ResultVo();
resultVo.setNo(1);
resultVo.setMsg("OK");
resultVo.setResult(userDao.list(user, offset, count)); return resultVo;
}
}
(5)UserCtrl.java
package com.wzh.api.user; import com.wzh.comm.ResultVo;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; /**
* @author y
* @date 2015-9-6 18:49:03
* @version V1.0
* @desc
*/
@RestController
@RequestMapping("/api/users")
public class UserCtrl { private UserService userService; public void setUserService(UserService userService){
this.userService = userService;
} @RequestMapping(
value="/add/{dm}/{name}/{age}",
method=RequestMethod.POST,
headers="Accept=application/json")
public ResultVo add(@PathVariable String dm,@PathVariable String name,@PathVariable Integer age){
UserModel user = new UserModel();
user.setDm(dm);
user.setName(name);
user.setAge(age); return userService.add(user);
} @RequestMapping(
value="/{dm}",
method=RequestMethod.DELETE,
headers="Accept=application/json")
public ResultVo delete(@PathVariable String dm){
return userService.delete(dm);
} @RequestMapping(
value="/update/{dm}/{name}/{age}",
method=RequestMethod.PUT,
headers="Accept=application/json")
public ResultVo update(@PathVariable String dm,@PathVariable String name,@PathVariable Integer age){
UserModel user = new UserModel();
user.setDm(dm);
user.setName(name);
user.setAge(age); return userService.update(user);
} @RequestMapping(
value="/{dm}",
method=RequestMethod.GET,
headers="Accept=application/json")
public ResultVo get(@PathVariable String dm){
return userService.get(dm);
} @RequestMapping(
method=RequestMethod.GET,
headers="Accept=application/json")
public ResultVo list(){
UserModel user = new UserModel();
int offset=10;
int count = 10; return userService.list(user, offset, count);
}
}
6:测试
使用google一个插件应用Postman进行Restful测试.
(1)增加用户
(2)删除用户
(3)更新用户信息
(4)查询一个用户的详情
(5)查询集合用户详情
002 Spring Restful案例的更多相关文章
- HTTP Status 405 - Request method 'GET' not supported?(尚硅谷Restful案例练习关于Delete方法出现的错误)
哈罗大家好,最近在如火如荼的学习java开发----Spring系列框架,当学习到SpringMVC,动手实践RESTFUL案例时,发现了以上报错405,get请求方法没有被支持. 首先第一步,我查看 ...
- cxf spring restful 问题解决(jar包冲突)
SEVERE: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error ...
- spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...
- spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途
Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...
- spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...
- spring入门--spring入门案例
spring是一个框架,这个框架可以干很多很多的事情.感觉特别吊.但是,对于初学者来说,很难理解spring到底是干什么的.我刚开始的时候也不懂,后来就跟着敲,在后来虽然懂了,但是依然说不明白它到底是 ...
- Spring入门案例 idea创建Spring项目
spring入门案例 idea创建spring项目 Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其 ...
- Spring(二)--Spring入门案例
Spring入门案例 1.需要的实体类 2.需要的接口和实现类 3.需要的service和实现类 /** * service层的作用 * 在不改变dao层代码的前提下,增加业务逻辑操作 */ publ ...
- Spring升级案例之IOC介绍和依赖注入
Spring升级案例之IOC介绍和依赖注入 一.IOC的概念和作用 1.什么是IOC 控制反转(Inversion of Control, IoC)是一种设计思想,在Java中就是将设计好的对象交给容 ...
随机推荐
- XPath与Xquery
XPath 和 XQuery 在某些方面很相似.XPath 还是 XQuery 完整不可分割的一部分.这两种语言都能够从 XML 文档或者 XML 文档存储库中选择数据.本文简要介绍了 XPath 和 ...
- UVa 496 Simply Subsets (STL&set_intersection)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=sh ...
- js~fancybox为我们提供的iframe功能
对于fancybox我们已经耳熟能详了,一般用来到表单的弹框,提示弹框等,而今天,我们将分页列表也使用fancybox来实现一下,这东西听起来简单,但做起来还真不是那么回事,有事细节需要我们注意的,首 ...
- 概率dp-九度-1546-迷宫问题
题目链接: http://ac.jobdu.com/problem.php?pid=1546 题目意思: 有一个起点S,多个出口E,#代表不能走,每次等概率的随机选择下一个可以行走的位置,求从S到出口 ...
- 再回首,Java温故知新——开篇说明
不知不觉在IT界从业2年了,两年时间足够一个人成长很多,当然也会改变很多事.在这两年时间里,随着对技术的深入了解,知识面的拓展以及工作难度的增大,渐渐的感觉自己技术方面根基不稳,多数问题也只是做到知其 ...
- [转] linux下的c/c++调试器gdb
PS:1. 断点C++类函数,用b 命名空间::类名::方法名 2. 编译参数一定要加-g,才可断点调试 http://www.cnblogs.com/xd502djj/archive/2012/08 ...
- iOS网络HTTP、TCP、UDP、Socket 知识总结
OSI 七层模型 我们一般使用的网络数据传输由下而上共有七层,分别为物理层.数据链路层.网络层.传输层.会话层.表示层.应用层,也被依次称为 OSI 第一层.第二层.⋯⋯. 第七层. 如下图: 各层功 ...
- java.util.Date和java.sql.Date
java.util.Date是在除了SQL语句的情况下面使用的. java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分 它们都有getTime方法返回毫秒数,自然就可以直接构建 ...
- (转)Vim用法小结
这是我转的一些vim基本用法,可能对初用者会有帮助,独乐乐不如众乐乐,是吧! Vim一般的Unix和Linux下均有安装. 三种状态 Command: 任何输入都会作为编辑命令,而不会出现在屏幕上 ...
- Template Method 模板方法
简介 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤的细节 抽象模板AbstractClass的方法分为两类: 基本 ...