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的内容


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

springmvc学习笔记(19)-RESTful支持的更多相关文章

  1. SpringMVC学习笔记之---RESTful风格

    RESTful风格 (一)什么是RESTful (1)RESTful不是一套标准,只是一套开发方式,构架思想 (2)url更加简洁 (3)有利于不同系统之间的资源共享 (二)概述 RESTful具体来 ...

  2. springmvc学习笔记---面向移动端支持REST API

    前言: springmvc对注解的支持非常灵活和飘逸, 也得web编程少了以往很大一坨配置项. 另一方面移动互联网的到来, 使得REST API变得流行, 甚至成为主流. 因此我们来关注下spring ...

  3. springmvc学习笔记(简介及使用)

    springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...

  4. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  5. 史上最全的SpringMVC学习笔记

    SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...

  6. springmvc学习笔记--REST API的异常处理

    前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...

  7. SpringMVC:学习笔记(8)——文件上传

    SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...

  8. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

  9. SQL反模式学习笔记19 使用*号,隐式的列

    目标:减少输入 反模式:捷径会让你迷失方向 使用通配符和未命名的列能够达到减少输入的目的,但是这个习惯会带来一些危害. 1.破坏代码重构:增加一列后,使用隐式的Insert插入语句报错: 2.查询中使 ...

随机推荐

  1. js实现页面跳转的两种方式

      CreateTime--2017年8月24日08:13:52Author:Marydon js实现页面跳转的两种方式 方式一: window.location.href = url 说明:我们常用 ...

  2. eclipse下的tomcat内存设置大小(转)

    步骤: 1.点击Run 2.选择Run Configurations, 3.系统弹出设置tomcat配置页面,在Argument中末尾添加参数中的VM arguments中追加: -Xms256M - ...

  3. hibernate 关系映射之 双向外键关联一对一

    在上一篇博客内容的基础上做了以下修改,即可实现.   注解方式:   package com.bjsxt.hibernate; import javax.persistence.Entity; imp ...

  4. Hibernate 使用log4j输出日志

      jar包不能少:F:\jars\slf4j-api-1.7.5.jar   F:\strutsWsold\slf4j-1.7.5\slf4j-1.7.5\slf4j-log4j12-1.7.5.j ...

  5. fscanf和feof的组合使用

    http://stackoverflow.com/questions/15719360/using-fscanf-using-feof 靶子代码: #include<stdio.h> vo ...

  6. MongoDB Database Profiler

    数据库profiler细粒度收集mongodb的写操作.游标.数据库命令等.可以在数据库级别或者实例级别开启profiling. profiler将收集到的数据写入system.profile集合中. ...

  7. [docker]bind9.11-with-mysql5.6 docker容器化实战

    参考: https://www.centos.bz/2012/09/bind-with-mysql-support/ http://blog.51niux.com/?id=125 http://470 ...

  8. C#实现的自定义IIS认证模块 转载

    IIS7以后application pool都支持两种模式:经典模式和集成模式. 所谓经典模式就是与IIS6的application pool运行模式相同,对于asp.net的页面请求处理由单独的as ...

  9. jQuery中的text(),html(),val()有什么区别

    text():获取或者改变指定元素的文本html():获取或改变指定元素的html元素以及文本val():获取或者改变指定元素的value值(一般是表单元素) 以上3个都是jquery类库中的语法 第 ...

  10. 配置taglib的uri的2种方法

    推荐方法1 1.把uri写在tld文件中,tld放在WEB-INF文件夹下,例如: <short-name>就对应了你在jsp中引用的时候<%@ taglib prefix=&quo ...