大家在做Web开发的过程中,method常用的值是get和post. 可事实上,method值还可以是put和delete等等其他值。
既然method值如此丰富,那么就可以考虑使用同一个url,但是约定不同的method来实施不同的业务,这就是Restful的基本考虑。
CRUD是最常见的操作,在使用Restful 风格之前,通常的增加做法是这样的:

/addCategory?name=xxx

可是使用了Restful风格之后,增加就变成了:

/categories

CRUD如下表所示,URL就都使用一样的 "/categories",区别只是在于method不同,服务器根据method的不同来判断浏览器期望做的业务行为

  传统风格 Restful风格
  url method url method
增加 /addCategory?name=xxx POST /categories POST
删除 /deleteCategory?id=123 GET /categories/123 DELETE
修改 /updateCategory?id=123&name=yyy POST /categories/123 PUT
获取 /getCategory?id=123 GET /categories/123 GET
查询 /listCategory GET /categories GET

下面是jsp中的实例:

listCategory.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript">/*将post method 改变为delete*/$(function(){$(".delete").click(function(){var href=$(this).attr("href");$("#formdelete").attr("action",href).submit();return false;})})
</script><div align="center"></div><div style="width:500px;margin:20px auto;text-align: center"><table align='center' border='1' cellspacing='0'><tr><td>id</td><td>name</td><td>编辑</td><td>删除</td></tr><c:forEach items="${page.content}" var="c" varStatus="st"><tr><td>${c.id}</td><td>${c.name}</td><td><a href="categories/${c.id}">编辑</a></td><td><a class="delete" href="categories/${c.id}">删除</a></td></tr></c:forEach></table><br><div><a href="?start=0">[首  页]</a><a href="?start=${page.number-1}">[上一页]</a><a href="?start=${page.number+1}">[下一页]</a><a href="?start=${page.totalPages-1}">[末  页]</a></div><br><form action="categories" method="post">name: <input name="name"> <br><button type="submit">提交</button></form><form id="formdelete" action="" method="POST" ><input type="hidden" name="_method" value="DELETE"></form>
</div>

View Code

editCategory.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" isELIgnored="false"%><div style="margin:0px auto; width:500px"><form action="../categories/${c.id}" method="post"><input type="hidden" name="_method" value="PUT">
name: <input name="name" value="${c.name}"> <br>
<button type="submit">提交</button></form>
</div>

View Code

CategoryController中的写法:

package com.how2java.springboot.web;import com.how2java.springboot.dao.CategoryDAO;
import com.how2java.springboot.pojo.Category;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import java.util.List;@Controller
public class CategoryController {@Autowired CategoryDAO categoryDAO;@GetMapping("/categories")public String listCategory(Model m, @RequestParam(value = "start", defaultValue = "0") int start, @RequestParam(value = "size", defaultValue = "5") int size) throws Exception {start = start<0?0:start;Sort sort = new Sort(Sort.Direction.DESC, "id");Pageable pageable = new PageRequest(start, size, sort);Page<Category> page =categoryDAO.findAll(pageable);m.addAttribute("page", page);return "listCategory";}@PostMapping("/categories")public String addCategory(Category c) throws Exception {categoryDAO.save(c);return "redirect:/categories";}@DeleteMapping("/categories/{id}")public String deleteCategory(Category c) throws Exception {categoryDAO.delete(c);return "redirect:/categories";}@PutMapping("/categories/{id}")public String updateCategory(Category c) throws Exception {categoryDAO.save(c);return "redirect:/categories";}@GetMapping("/categories/{id}")public String getCategory(@PathVariable("id") int id,Model m) throws Exception {Category c= categoryDAO.getOne(id);m.addAttribute("c", c);return "editCategory";}
}

View Code

转载于:https://www.cnblogs.com/afeng2010/p/10161316.html

Restful 风格相关推荐

  1. RESTful风格及其SpringMVC实现

    目录 1.RESTful概念 2.RESTful功能 3.对比:传统方式操作资源 4.SpringMVC实现传统方式操作资源 5.使用RestFul操作资源 6.SpringMVC实现RESTful操 ...

  2. springboot 集成jpa_基于Spring Boot+JPA Restful 风格的数据

    第一章 Restful简介 Restful是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服 务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次, ...

  3. java restful接口开发实例_Spring Boot 中 10 行代码构建 RESTful 风格应用!

    点击上方"Java后端技术",选择"置顶或者星标" 你关注的就是我关心的! 作者:江南一点雨 微信公众号:牧码小子(ID:a_javaboy) 推荐阅读:10个 ...

  4. 分享一个基于 Shiro 的权限管理系统,亮点是支持 restful 风格 URL.

    Shiro-Action 本项目使用 Spring Boot 搭建, 用于加深对 Spring Boot 与 Shiro 的学习, 项目特色是支持 restful 风格权限控制, 支持对同一 URL, ...

  5. layuiajax提交表单控制层代码_究竟怎么用Restful风格编代码必看这篇。(二)

    点击上方"IT咸鱼",星标公众号每天分享技术栈,开发工具等 简单急记几个小点:RequestMapping注解的使用和里面涉及到的参数用途和写法 @RequestMapping(& ...

  6. ssm框架restful风格实现增删改查

    1.什么是restful风格 大家在做Web开发的过程中,method常用的值是get和post. 可事实上,method值还可以是put和delete等等其他值. 既然method值如此丰富,那么就 ...

  7. 用cxf开发restful风格的WebService

    我们都知道cxf还可以开发restful风格的webService,下面是利用maven+spring4+cxf搭建webService服务端和客户端Demo 1.pom.xml <projec ...

  8. mysql例子 restful_Gin实战:Gin+Mysql简单的Restful风格的API

    我们已经了解了Golang的Gin框架.对于Webservice服务,restful风格几乎一统天下.Gin也天然的支持restful.下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全.我们先以一 ...

  9. 基于 Spring Boot 的 Restful 风格实现增删改查

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

  10. Spring boot的Restful风格CRUD

    Restful风格 RestfulCRUD 表示,CRUD满足Rest风格 URI:/资源名称/资源标识 HTTP请求方式,区分对资源CRUD操作 Emp,资源名称 增删改查 请求方式

最新文章

  1. 独家 | 浅析机器学习中的自由度
  2. 《ANTLR 4权威指南》——2.1节从ANTLR元语言开始
  3. 最快的ASP无组件上传类(4M只需10秒)0.96版
  4. Mysql 去除 特定字符后面的所有字符串
  5. 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
  6. 【2018.5.12】模拟赛之四-ssl2416 条形图【高精度,dp】
  7. 工业交换机的背板带宽是怎么计算的?
  8. ubuntu下android源码编译环境,ubuntu12.04 64位上搭建android源码编译环境
  9. html怎样在雪景里插入文字,下雪朋友圈怎么配文字 雪景发朋友圈配一句话
  10. [JSON]2017年最新县及县以上行政区划代码
  11. [超详细保姆教程]Python3.8 实现 Paillier算法
  12. python,练习乌龟吃鱼
  13. Seaborn实战案例 | 绘制分类条形统计图
  14. 一个迷茫的应届生程序员
  15. 甘超波:NLP抽离与结合
  16. 怎么查看自己网站的访问量
  17. 红警2尤里的复仇中文完整PC版
  18. Iphone被刷机后用电信卡提示未激活,移动联通卡可以正常使用
  19. 云天视界传媒浅谈无人机航拍技巧
  20. 入门qt一定要买qt圣经

热门文章

  1. java包装经验_java中基本类型和包装类型实践经验
  2. java怎么复制别人的数据库_数据库实现主从复制
  3. 基于angularjs的单页面实例_【进展综述】单阶段实例分割(Single Stage Instance Segmentation)...
  4. docker 升级linux内核,docker-machine之升级linux内核
  5. 分布式系统原理_分布式系统架构设计 第19式 分布式系统八卦思维模型
  6. 【渝粤教育】国家开放大学2018年春季 3717-22T天然气管道长输技术 参考试题
  7. 【渝粤教育】广东开放大学 建筑专业 形成性考核 (57)
  8. 计算机网络基础系列(八)TCP三次握手、四次挥手、可靠数据传输、拥塞控制和UDP
  9. Python进阶(一)Python中的内置函数、内置方法、私有属性和方法详解
  10. 深度学习系列(三)【人类语言处理--语音转换】