`
wiselyman
  • 浏览: 2098894 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
Group-logo
点睛Spring4.1
浏览量:82672
74ae1471-94c5-3ae2-b227-779326b57435
点睛Spring MVC4...
浏览量:131011
社区版块
存档分类
最新评论

03点睛Spring MVC 4.1-REST

 
阅读更多

3.1 REST

  • REST:Representational State Transfer;
  • REST是一种数据导向web service,相对于SOAP是一种操作操作和处理导向的web service;
  • Spring为对REST的支持提供了@RestController;
    • 在没有@RestController可以通过@Controller,@ResponseBody组合实现REST控制器;
    • 但是我们经常会使用@ResponseBody这样很麻烦,且易忘记;
    • 使用@RestController替代@Controller,我们就不用使用@ResponseBody;
  • REST支持的http method(通过@RequestMapping的method属性控制)
    • POST:新增
    • GET:读取
    • PUT/PATCH:更新
    • DELETE:删除
  • produces的内容是指定返回的媒体类型让浏览器识别

    • 如返回text/plain的话,浏览器上的js回掉拿到的是字符串,需要自己转换对象;
    • 如返回application/json的话,浏览器上的js拿到的就是js对象而不是字符串,就不需要进行转换;
  • 本例演示向控制器提交json数据,返回结果分别为json和xml格式;

3.2 示例

3.2.1 @RestController源码

从@RestController看出,@RestController是一个元注解,组合了@Controller,@ResponseBody,相当于同时使用了@Controller @ResponseBody

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {

    /**
     * The value may indicate a suggestion for a logical component name,
     * to be turned into a Spring bean in case of an autodetected component.
     * @return the suggested component name, if any
     * @since 4.0.1
     */
    String value() default "";

}

3.2.2 代码

  • 添加jackson依赖

jackson-dataformat-xml依赖jackson-bind,这样我们能同时返回xml和json

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.5.3</version>
</dependency>

若只需返回json数据(大多数项目都是这样),将上面依赖更换为

 <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
</dependency>
  • 传值对象
package com.wisely.web;

public class DemoObj {
    private Long id;
    private String name;
    //此处一定要有空构造,不然会有400 bad request,主要是jackson将json参数转换为对象需要
    public DemoObj() {
        super();
    }
    public DemoObj(Long id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }


}
  • DemoMVCConfig注册静态资源
    // 静态资源映射
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
    }
  • 控制器
package com.wisely.web;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class RESTController {
    @RequestMapping(value = "/getjson",produces={"application/json;charset=UTF-8"})
    public DemoObj getjson(@RequestBody DemoObj obj){
        return new DemoObj(obj.getId()+1, obj.getName()+"yy");
    }
    @RequestMapping(value = "/getxml",produces={"application/xml;charset=UTF-8"})
    public DemoObj getxml(@RequestBody DemoObj obj){
        return new DemoObj(obj.getId()+1, obj.getName()+"yy");
    }

}
  • 页面代码
<script type="text/javascript" src="<c:url value="/js/jquery.js" />"></script>
<script type="text/javascript">
var json = {"id":456,"name":"phy"};

$.ajax({
      url: "api/getjson",
      data: JSON.stringify(json),
      type:"POST",
      contentType:"application/json",
      success: function(data){
          console.log(data);
      }
    });
$.ajax({
      url: "api/getxml",
      data: JSON.stringify(json),
      type:"POST",
      contentType:"application/json",
      success: function(data){
          console.log(data);
      }
    });
</script>
  • 结果

 

 

新书推荐《JavaEE开发的颠覆者: Spring Boot实战》,涵盖Spring 4.x、Spring MVC 4.x、Spring Boot企业开发实战。

 

京东地址:http://item.jd.com/11894632.html

当当地址:http://product.dangdang.com/23926195.html

亚马逊地址:http://www.amazon.cn/图书/dp/B01D5ZBFUK/ref=zg_bsnr_663834051_6 

淘宝地址:https://item.taobao.com/item.htm?id=528426235744&ns=1&abbucket=8#detail

 

 

 

或自己在京东、淘宝、亚马逊、当当、互动出版社搜索自选。

 


0
0
分享到:
评论
2 楼 wiselyman 2015-05-29  
tomgxf 写道
在没有@RestController可以通过@Controller,@RequestBody组合实现REST控制器;
这里的@RequestBody应该是@ResponsBody吧,楼主笔误。


谢谢,已修改
1 楼 tomgxf 2015-05-29  
在没有@RestController可以通过@Controller,@RequestBody组合实现REST控制器;
这里的@RequestBody应该是@ResponsBody吧,楼主笔误。

相关推荐

    4.1-细胞分化形成组织.pptx

    进入原肠胚阶段,细胞分化进一步加深,形成了三个胚层:外胚层、中胚层和内胚层。这三层细胞各自承担着特定的发育任务: 1. 外胚层主要发育为皮肤表皮及其附属物(如毛发、指甲等),神经系统(包括脑、脊髓等)和...

    国元点睛-20230825-国元期货-23页.pdf

    国元点睛-20230825-国元期货-23页

    stasm4.1版本-人脸识别77个特征点提取

    **STASM4.1版本-人脸识别77个特征点提取** STASM,全称为Shape Tracking and Analysis by Shape Models,是一种广泛应用于人脸识别领域的算法,尤其在面部特征点定位方面表现出色。该算法的核心在于通过形状模型来...

    BugScan圈子沙龙之议题点睛(2015) - 安全技术资料汇总(共5份).zip

    bugscan发展历程以及框架改进.pdf 基于正则类sql注入防御的绕过技巧.pdf 如何优雅的穿透linux内网.pdf 花式玩转bugscan插件.pdf 过滤型插件与反向代理的火花.pdf

    PS眼睛糖果滤镜eye-candy-7.1.0.1203汉化破解版(附安装视频)

    alien skin Eye Candy 7是一款非常强大的PS滤镜插件。包含了金属字、火焰、闪电、纹理等30多种实用特效,是设计师必备的插件之一。

    司机眼睛状态标记---应用OpenCV人脸检测与模板匹配方法

    使用OpenCV1.0实现了眼睛状态识别,首先用harr检测眼睛,然后用模板匹配的方法标记眼睛状态。 程序需要使用Eyes45x11.xml Mouth25x15.xml Nose25x15.xml,将其放到C:\Program Files\OpenCV\data\haarcascades目录下...

    eye-rest:帮助防止眼睛疲劳的快速网络应用程序

    【标题】"eye-rest"是一款致力于缓解用户在长时间使用电脑后眼睛疲劳的快速网络应用程序。它采用科学的方法,如定时提醒、屏幕色温调整等,来保护用户的眼睛健康。 【描述】眼睛是人体的重要器官,长时间盯着电脑...

    眼睛穴位图-睛明穴-取穴方法

    眼睛穴位图-睛明穴-取穴方法 方便经常上网的朋友使用

    chrome 眼睛护航插件 Care-your-Eyes_v7.1.12.crx

    把网页背景变成眼睛保护色或适合夜晚阅读的夜间模式,一些无法变色的小区块可以通过单击进行变色;

    点睛文本编码查询(文本的字符串转换工具)

    软件名:点睛文本编码查询 功能:本软件用于将文本的字符串转换为 Text、ASCII、Default、Unicode、BigEndianUnicode、UTF-8、UTF-7、GBK、BIG5 之间的互相转换,用于文本查询。转换结果使用十六进制表示。

    opencollective-rest:打开Collective REST API v1和v2!

    开放式集体REST API 前言 如果您发现下面的步骤有待改进(或已过时),请更新说明。 我们很少亲自进行此过程,因此,您的一双崭新的眼睛和最近的使用经验,使您成为为其他用户改善视力的最佳人选。 谢谢! 发展 先决...

    点睛网赚论坛源码整站程序+10W数据【送主动推送工具】

    点睛网赚论坛源码整站程序+10W数据【送主动推送工具】 安装教程https://www.ygwzjs.cn/post/260.html 百度推送工具https://www.ygwzjs.cn/post/181.html 效果演示:z-www.seoheimao.cn 【全新优化】点睛网论坛整站...

    03.2025年考研计算机-数据结构考前点睛.sz

    03.2025年考研计算机-数据结构考前点睛.sz

    api-document:java spring-mvc文件收集

    中文说明 | |说明维护过项目的人应该都有体会, 如果接口文档是单独编写的(org-mode、markdown、rap 甚至是 word 等), 随着项目周期的推进, 接口文档和真实代码之间的差距会越来越远.基于 swagger 的一些细节不那么让...

    360点睛多语言加密示例和密码加密调试工具.zip

    《360点睛营销平台多语言加密及调试技术详解》 360点睛营销开放平台是一款由360公司推出的广告投放和营销管理工具,它为开发者提供了丰富的API接口,以帮助开发者构建和优化自己的广告系统。在这个名为"360点睛多...

    360点睛使用手册(2019.08).pdf

    360点睛使用手册是360官方于2019年推出的移动客户端软件,主要功能是推广管理。该手册详细介绍了软件的使用方法和功能特点,适用于广告主进行随时随地的账户投放管理。 首先,手册中的产品介绍部分指出,360点睛是...

    点睛 内码转换器

    "点睛内码转换器"是一款专为处理文本编码问题设计的工具,它能够帮助用户在不同的字符编码之间进行转换,以解决由于编码不匹配导致的乱码问题。在计算机科学领域,字符编码是用于表示文本的一系列规则,常见的有...

    点睛字符替换器 v1.05特别修正版.rar

    点睛字符替换器v1.05特别修正版是一款针对文本处理的专业软件,主要用于批量替换文本中的特定字符或字符串。这个特别修正版可能是对原始版本的优化和改进,以解决某些问题或添加新功能。在IT领域,字符替换工具是...

    点睛字串替换器V1·06

    点睛字串替换器V1·06主要用于非资源 本软件是一个本地化工具,主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序中的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)...

    点睛字串替换器

    点睛字串替换器

Global site tag (gtag.js) - Google Analytics