springmvc学习笔记(19)-RESTful支持

标签: springmvc


  • springmvc学习笔记19-RESTful支持

    • 概念
    • REST的样例
      • controller
      • REST方法的前端控制器配置
    • 对静态资源的解析

本文介绍RESTful的概念,并通过一个小样例展示怎样编写RESTful风格的controller和配置前端控制器,最后展示静态资源的解析

概念

首先附上两篇博客链接

  • 理解RESTful架构 - 阮一峰的网络日志
  • RESTful API 设计指南- 阮一峰的网络日志

RESTful架构。就是眼下最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便。所以正得到越来越多站点的採用。

RESTful(即Representational State Transfer的缩写)事实上是一个开发理念,是对http的非常好的诠释。

1.对url进行规范,写RESTful格式的url

  • 非REST的url:http://...../queryItems.action?id=001&type=T01
  • REST的url风格:http://..../items/001

特点:url简洁,将參数通过url传到服务端

2.http的方法规范

无论是删除、加入、更新,等等。使用url是一致的,假设进行删除,须要设置http的方法为delete,其它同理。

后台controller方法:推断http方法,假设是delete运行删除。假设是post运行加入。

3.对http的contentType规范

请求时指定contentType。要json数据。设置成json格式的type。

REST的样例

查询商品信息。返回json数据。

controller

定义方法,进行url映射使用REST风格的url,将查询商品信息的id传入controller .

输出json使用@ResponseBody将java对象输出json。

//查询商品信息,输出json
//itemsView/{id}里边的{id}表示占位符。通过@PathVariable获取占位符中的參数。
//@PathVariable中名称要和占位符一致,形參名无需和其一致
//假设占位符中的名称和形參名一致,在@PathVariable能够不指定名称
@RequestMapping("/itemsView/{id}")
public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer items_id)throws Exception{//调用service查询商品信息ItemsCustom itemsCustom = itemsService.findItemsById(items_id);return itemsCustom;}

@RequestMapping(value="/ itemsView/{id}"){×××}占位符。请求的URL能够是/viewItems/1/viewItems/2,通过在方法中使用@PathVariable获取{×××}中的×××变量。

@PathVariable用于将请求URL中的模板变量映射到功能处理方法的參数上。

假设@RequestMapping中表示为/itemsView/{id},id和形參名称一致,@PathVariable不用指定名称。

REST方法的前端控制器配置

<!-- springmvc前端控制器。rest配置 -->
<servlet><servlet-name>springmvc_rest</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- contextConfigLocation配置springmvc载入的配置文件(配置处理器映射器、适配器等等) 假设不配置contextConfigLocation。默认载入的是/WEB-INF/servlet名称-serlvet.xml(springmvc-servlet.xml) --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/springmvc.xml</param-value></init-param>
</servlet><servlet-mapping><servlet-name>springmvc_rest</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

訪问结果如图:

对静态资源的解析

配置前端控制器的url-parttern中指定/。对静态资源的解析会出现故障,报404错误。

在springmvc.xml中加入静态资源解析方法。

<!-- 静态资源解析包含 :js、css、img、..-->
<mvc:resources location="/js/" mapping="/js/**"/>

这时訪问http://localhost:8080/ssm1/js/jquery-1.4.4.min.js,能够在浏览器中看到js的内容


作者@brianway很多其它文章:个人站点 | CSDN | oschina

转载于:https://www.cnblogs.com/lxjshuju/p/7259937.html

springmvc学习笔记(19)-RESTful支持相关推荐

  1. SpringMVC学习笔记(二)常用注解

    SpringMVC学习笔记(二)常用注解 1.RequestParam 作用: 把请求中指定名称的参数给控制器中的形参赋值. 属性: value:请求参数中的名称. required:请求参数中是否必 ...

  2. springmvc学习笔记--ueditor和springmvc的集成

    springmvc学习笔记--ueditor和springmvc的集成 前言: 在web开发中, 富文本的编辑器真心很重要. 有电商店铺的打理, 新闻稿/博客文章/论坛帖子的编辑等等, 这种所见即所的 ...

  3. SpringMVC学习笔记

    文章目录 SpringMVC学习笔记 Spring MVC 什么是 MVC 设计模式? Spring MVC 的核心组件 Spring MVC 的工作流程 如何使用? Spring MVC 注解 Sp ...

  4. JavaEE 企业级分布式高级架构师(四)SpringMVC学习笔记(4)

    SpringMVC学习笔记 高级应用篇 ControllerAdvice @ControllerAdvice @ModelAttribute 作用于方法 作用于方法参数 @InitBinder @Ex ...

  5. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC--数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  6. SpringMVC学习笔记整理

    SpringMVC学习笔记 以下是我整理的SpringMVC学习笔记: 导入jar包 一:springmvc工作流程. ①.     servlet容器初始化一个request请求 ②.     Di ...

  7. Python学习笔记19:列表 III

    Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...

  8. SpringMVC学习笔记_01

    SpringMVC学习笔记_01 1.JAVAEE体系结构 JAVAEE体系结构图如下所示: 2.什么是springmvc? 什么是mvc? Model1 Model2 SpringMVC是什么? S ...

  9. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)--依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

最新文章

  1. Ubuntu16.04 配置SSH无密码登录
  2. Okhttp、Volley和Gson的简单介绍和配合使用
  3. 【算法】设计算法求所有强连通分量的完整代码(kosaraju算法)
  4. java 语法 泛型_java-解密泛型语法
  5. 【精彩实况】第三届大数据科学与工程国际会议
  6. 大数据定制化服务需在成本和差异化间平衡
  7. WCF服务编程设计规范(9):中文、中英文对照、英文版资料共享下载
  8. Yii2 源码分析 - 入口文件执行流程
  9. 使用 imitator 实现前后端分离开发中的数据模拟与静态资源映射
  10. 《Java程序员职场全攻略:从小工到专家》连载十四:先挣的是资本,后挣的是钱
  11. 从Spring中的@Transactional注解说起
  12. 解决新用户注册Kaggle无法显示验证码的问题
  13. Firefox Private Network使用方法(极详细)
  14. 苹果手机屏幕镜像怎么连接电视_创维电视怎么连接手机?图解创维电视连接手机步骤...
  15. Elasticsearch 特定场景下使用
  16. web开发实例教程,CSS盒子模型居中方法
  17. Caused by: org.apache.thrift.TApplicationException: Required field ‘filesAdded‘ is unset
  18. git merge 冲突解决
  19. intel opcode
  20. 局域网内设置共享打印机并连接使用

热门文章

  1. 【CyberSecurityLearning 36】靶场环境搭建(ubuntu系统安装优化及vulhub安装)
  2. BugkuCTF-Misc:隐写2
  3. 关于Layout Weight一些使用技巧
  4. MyBatis学习总结一
  5. JVM逃逸分析(同步省略、标量替换、栈上分配)
  6. PHP类有哪几种,PHP中有哪几种常用类型?
  7. JZOJ 5638. 【NOI2018模拟4.8】IIIDX
  8. JZOJ 3660. 【SHTSC2014】信号增幅仪
  9. 微信为什么不进入鸿蒙生态,马化腾为何迟迟不将微信, 加入任正非的华为鸿蒙生态系统中呢?...
  10. java 线程一直运行状态_详解JAVA 线程-线程的状态有哪些?它是如何工作的?