springmvc学习笔记(19)-RESTful支持
标签: springmvc
本文介绍RESTful的概念,并通过一个小样例展示怎样编写RESTful风格的controller和配置前端控制器,最后展示静态资源的解析
概念
首先附上两篇博客链接
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的内容
springmvc学习笔记(19)-RESTful支持的更多相关文章
-
SpringMVC学习笔记之---RESTful风格
RESTful风格 (一)什么是RESTful (1)RESTful不是一套标准,只是一套开发方式,构架思想 (2)url更加简洁 (3)有利于不同系统之间的资源共享 (二)概述 RESTful具体来 ...
-
springmvc学习笔记---面向移动端支持REST API
前言: springmvc对注解的支持非常灵活和飘逸, 也得web编程少了以往很大一坨配置项. 另一方面移动互联网的到来, 使得REST API变得流行, 甚至成为主流. 因此我们来关注下spring ...
-
springmvc学习笔记(简介及使用)
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
-
SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
-
史上最全的SpringMVC学习笔记
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
-
springmvc学习笔记--REST API的异常处理
前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...
-
SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
-
springmvc学习笔记(常用注解)
springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...
-
SQL反模式学习笔记19 使用*号,隐式的列
目标:减少输入 反模式:捷径会让你迷失方向 使用通配符和未命名的列能够达到减少输入的目的,但是这个习惯会带来一些危害. 1.破坏代码重构:增加一列后,使用隐式的Insert插入语句报错: 2.查询中使 ...
随机推荐
-
Javascript操作DOM常用API总结
基本概念 在讲解操作DOM的api之前,首先我们来复习一下一些基本概念,这些概念是掌握api的关键,必须理解它们. Node类型 DOM1级定义了一个Node接口,该接口由DOM中所有节点类型实现.这 ...
-
MIT 6.828 JOS学习笔记4. Lab 1 Part 2.1: The Boot Loader
Part 2: The Boot Loader 对于PC来说,软盘,硬盘都可以被划分为一个个大小为512字节的区域,叫做扇区.一个扇区是一次磁盘操作的最小粒度.每一次读取或者写入操作都必须是一个或多个 ...
-
树莓派利用PuTTY进行远程登录
得到树莓派的IP:192.168.199.220 打开PuTTY: 端口为22 选择SSH 点击Open: 输入账号密码:pi/raspberry(注意,在linux下输入密码是看不见的) 如果要使用 ...
-
说说怎么写clean code
前两天参加了公司组织的一个培训,主题是“如何写出好的代码” ,刚看到这个主题,第一反应是又不知道是哪个培训机构来忽悠钱的!老大安排了,就去听听呗. 说实在的,课程内容没有什么新鲜的东西,就是讲讲如何发 ...
-
jQuery 选择器和JavaScript 选择器的技巧与异常原因
jquery的选择器借鉴了css选择器,核心依然依靠JavaScript的getElementById()和getElementsByTagName()方法,但是他封装了2个方法,让jquery选择器 ...
-
Android 面试精华题目总结
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24015867 下面的题目都是楼主在android交流群大家面试时遇到的,如果大家 ...
-
ACM Sudoku
Sudoku是一个非常简单的任务. 具有9行9列的方形表被划分为9个较小的正方形3x3,如图所示. 在一些单元格中写入从1到9的十进制数字.其他单元格为空. 目标是填充空单元格,其中十进制数字从1到9 ...
-
ElasticSsarch汇总
用途: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索: 实时分析的分布式搜索引擎: 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据. 点击查看安装.基本增删改查操作REST ...
-
微信小程序---setData
data:{ obj:{ name:'hello' } } 对data中obj的name字段进行重新赋值. onLoad: function (option) { var value = 'obj.n ...
-
Android studio 安装已经下载好的gradle.zip文件【ubuntu 14.04 LTS环境】
一 下载 gradle-3.3-all.zip 包 http://download.csdn.net/detail/t6546545/9732412 http://www.fxxz.com/soft/ ...