博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4. Spring MVC 4.1-REST
阅读量:4118 次
发布时间:2019-05-25

本文共 3044 字,大约阅读时间需要 10 分钟。

4.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格式;

4.2 示例

4.2.1 @RestController源码

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

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Controller@ResponseBodypublic @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 "";}
 
4.2.2 代码   
添加jackson依赖
jackson-dataformat-xml依赖jackson-bind,这样我们能同时返回xml和json
com.fasterxml.jackson.dataformat
jackson-dataformat-xml
2.5.3
若只需返回json数据(大多数项目都是这样),将上面依赖更换为
com.fasterxml.jackson.core
jackson-databind
2.5.3
传值对象
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"); }}
页面代码
">
结果

转载地址:http://sjcpi.baihongyu.com/

你可能感兴趣的文章
深入理解PHP内存管理之谁动了我的内存
查看>>
ubuntu 14.04 lamp 安装
查看>>
php和javascript中Json操作总结
查看>>
Linux 下安装 Memcached 和 PHP 开启 Memcached 扩展
查看>>
php模块memcache和memcached区别分析
查看>>
PHP模块 Memcached功能多于Memcache
查看>>
Memcached命令使用
查看>>
Firebug教程
查看>>
透视WebMVC
查看>>
ubuntu14.04 安装redis
查看>>
互联网协议入门(一)
查看>>
互联网协议入门(二)
查看>>
http协议学习系列
查看>>
redis 命令
查看>>
Redis配置文件redis.conf参数说明
查看>>
用 Xdebug 修正 PHP 应用程序中的错误
查看>>
PHP调试技术手册V1.0.0 (PDF)
查看>>
var_export 与 var_dump的不同
查看>>
深入理解PHP原理之错误抑制与内嵌HTML
查看>>
PHP错误抑制符(@)导致引用传参失败的Bug
查看>>