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)查询集合用户详情

时间: 2024-10-17 22:59:43

002 Spring Restful案例的相关文章

Spring RESTful Web Services

转:http://www.ibm.com/developerworks/cn/web/wa-spring3webserv/ 在 Java™ 中,您可以使用以下几种方法来创建 RESTful Web Service:使用 JSR 311(311)及其参考实现 Jersey.使用 Restlet 框架和从头开始开发.Spring 是流行的 Java EE 应用开发框架,现在它的 MVC 层也支持 REST 了.本文将介绍使用 Spring 开发 RESTful Web Services 的方法.读者

使用CXF+spring+restful创建一个web的接口项目

此文为http://blog.csdn.net/zxnlmj/article/details/28880303的下文,在其基础上添加restful功能 1.添加restful的所需jar包 jsr311-api-1.0.jar CXF与JAX-RS版本对应问题,参考自:http://bioubiou.iteye.com/blog/1866871 CXF支持REST风格的Web服务:JAX-RS2.0(JSR-339)和JAX-RS1.1(JSR-311)的Java API. CXF2.7.0支持

Spring入门案例 idea创建Spring项目

spring入门案例 idea创建spring项目 Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原形衍生而来.它是为了解决企业级开发的复杂性而创建的.Spring使用基本的javaBaen来完成以前只可能由EJB完成的事情,然而Spring的用途不仅限于服务器端的开发,从简单性.

spring 入门案例

spring开发步骤: spring jar包介绍: 在3.0以下的版本,源码有spring中相关的所有包(包括spring核心包和依赖包) 在3.0以上版本,源码中只有spring的核心包 没有依赖包 依赖包需要自己下载 1)源码,jar包:spring-framwork-3.2.5.RELEASE commons-logging-1.1.3.jar           日志 spring-beans-3.2.5.RELEASE.jar       bean节点 spring-context-

Spring RESTful 配置问题

1.restful模板默认不显示id字段的,可以参考http://tommyziegler.com/how-to-expose-the-resourceid-with-spring-data-rest/ 添加id字段. 2.spring boot 下jsp 404不能正常显示的问题.参见: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-jsp-limitati

Spring restful

1. RESTful 不是一项技术,也不是一个标准,而是一种风格,跟servlet不在一个层面上,根本无法比较.一个基于servlet的application也是可以是符合RESTful风格的,换言之,RESTful可以通过servlet实现的. 2. 通过 REST 风格体系架构,请求和响应都是基于资源表示的传输来构建的.资源是通过全局 ID 来标识的,这些 ID 一般使用的是一个统一资源标识符(URI).客户端应用使用 HTTP 方法(如,GET.POST.PUT 或 DELETE)来操作一

JMS(java消息服务)整合Spring项目案例

转载自云栖社区 摘要: Sprng-jms消息服务小项目 所需的包: spring的基础包 spring-jms-xx包 spring-message–xx包 commons-collection-xx包 commons-pool2-xx包 aop切面的包: spring-aop,spring-aspect... Sprng-jms消息服务小项目 所需的包: spring的基础包 spring-jms-xx包 spring-message–xx包 commons-collection-xx包 c

springMVC+mybatis+spring整合案例

1.web.xml a:配置spring监听,使web容器在启动时加载spring的applicationContext.xml <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> b:配置contextConfigLocation指定applicationContext的位置,同时可以修改其

分分钟教会大家第一个Spring入门案例

1.下载Spring jar包,并添加到项目中. 官网地址http:springsource.org 2.在项目中新建一个类      package cn.test; public class HelloSpring { // 定义属性,该属性的值将通过Spring框架进行设置 private String result; /** * 定义一个打印的方法用于输出result的值 */ public void print() { System.out.println("Hello" +