SpringMVC框架04——RESTful入门
1、RESTful的基本概念
REST(Representational State Transfer)表述性状态转移,REST并不是一种创新技术,它指的是一组架构约束条件和原则,符合REST的约束条件和原则的架构,就称它为RESTful架构。
RESTful具体来讲就是HTTP协议的四种形式表示四种基本操作:
GET(获取资源)、POST(新建资源)、PUT(修改资源)、DELETE(删除资源)
2、RESTful架构的特点
统一了客户端访问资源的接口
url更加简洁,易于理解,便于扩展
有利于不同系统之间的资源共享
3、RESTful开发风格示例
- 查询课程,method='get',http://localhost:8080/id
- 添加课程,method='post',http://localhost:8080/course
- 删除课程,method='delete',http://localhost:8080/id
- 修改课程,method='put',http://localhost:8080/course
4、RESTful的代码实现
4.1、配置过滤器
在web.xml配置文件中编辑代码:
<!--设置HTTP请求方式-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.2、创建实体类
示例代码:
public class Course {
private int id;
private String name;
private double price; //getter,setter方法 }
4.3、创建DAO
示例代码:
@Repository
public class CourseDao { //模拟数据库存储
private Map<Integer, Course> courseMap = new HashMap<>(); /**
* 添加课程
*/
public void add(Course course){
courseMap.put(course.getId(),course);
} /**
* 查询所有课程
*/
public Collection<Course> getAll(){
return courseMap.values();
} /**
* 通过ID查询课程
*/
public Course getById(int id){
return courseMap.get(id);
} /**
* 修改课程
*/
public void update(Course course){
courseMap.put(course.getId(),course);
} /**
* 删除课程
*/
public void delete(int id){
courseMap.remove(id);
} }
4.4、POST添加数据
Controller类中的业务方法:
@Controller
public class CourseController { @Autowired
private CourseDao courseDao; /**
* 添加课程
*/
@PostMapping("/add")
public String add(Course course){
courseDao.add(course);
System.out.println(course);
return "redirect:/getAll";
}
}
add.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>添加课程</title>
</head>
<body>
<h1>添加课程</h1>
<hr>
<form action="${pageContext.request.contextPath}/add" method="post">
<p>
课程编号:<input type="text" name="id">
</p>
<p>
课程名称:<input type="text" name="name">
</p>
<p>
课程价格:<input type="text" name="price">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
</body>
</html>
4.5、GET查询数据
Controller类中的业务方法:
/**
* 查询所有课程
*/
@GetMapping("/getAll")
public String getAll(Model model){
model.addAttribute("courses",courseDao.getAll());
System.out.println("getAll.......");
return "index";
} /**
* 根据ID查询课程
*/
@GetMapping("/getById/{id}")
public String getById(@PathVariable("id") int id,Model model){
model.addAttribute("course",courseDao.getById(id));
return "edit";
}
index.jsp页面,用于展示数据:
<table border="1" width="80%">
<tr>
<th>课程编号</th>
<th>课程名称</th>
<th>课程价格</th>
<th>编辑</th>
</tr>
<c:forEach items="${courses}" var="course">
<tr>
<td>${course.id}</td>
<td>${course.name}</td>
<td>${course.price}</td>
<td>
<form action="${pageContext.request.contextPath}/getById/${course.id}" method="get">
<input type="submit" value="编辑">
</form>
<form action="${pageContext.request.contextPath}/delete/${course.id}" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除">
</form>
</td>
</tr>
</c:forEach>
</table>
4.6、PUT修改数据
Controller类中的业务方法:
/**
* 修改课程
*/
@PutMapping("/update")
public String update(Course course){
courseDao.update(course);
return "redirect:/getAll";
}
edit.jsp页面
<form action="${pageContext.request.contextPath}/update" method="post">
<p>
课程编号:<input type="text" name="id" value="${course.id}">
</p>
<p>
课程名称:<input type="text" name="name" value="${course.name}">
</p>
<p>
课程价格:<input type="text" name="price" value="${course.price}">
</p>
<p>
<input type="hidden" name="_method" value="PUT">
<input type="submit" value="提交">
</p>
</form>
4.7、DELETE删除数据
Controller类中的业务方法:
/**
* 删除课程
*/
@DeleteMapping("/delete/{id}")
public String delete(@PathVariable("id") int id){
courseDao.delete(id);
return "redirect:/getAll";
}
index.jsp页面中的删除按钮:
<form action="${pageContext.request.contextPath}/delete/${course.id}" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除">
</form>
SpringMVC框架04——RESTful入门的更多相关文章
- [jbdj]SpringMVC框架(1)快速入门
1)springmvc快速入门(传统版) 步一:创建springmvc_demo一个web应用 步二:导入springioc,springweb , springmvc相关的jar包 步三:在/WEB ...
- springMvc框架之Restful风格
method: @Controller @RequestMapping("/test") public String MyController{ @RequestMapping(& ...
- SpringMVC框架——集成RESTful架构
REST:Representational State Transfer 资源表现层状态转换 Resources 资源 Representation 资源表现层 State Transfer 状态转换 ...
- SpringMVC 框架系列之初识与入门实例
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.SpringMVC 概述 (1). MVC:Model-View-Control Contr ...
- SpringMVC框架入门配置 IDEA下搭建Maven项目(zz)
SpringMVC框架入门配置 IDEA下搭建Maven项目 这个不错哦 http://www.cnblogs.com/qixiaoyizhan/p/5819392.html
- SSM框架之SpringMVC(1)入门程序
SpringMVC(1) 1.三层架构和MVC 1.1. 三层架构 咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序 使用Java语言基本上都是开发B/S架构的程序,B ...
- SpringMvc框架 解决在RESTFUL接口后加任意 “.xxx” 绕过权限的问题
问题描述: 框架使用的是SpringMVC.SpringSecurity,在做权限拦截的时候发现一个问题,假设对请求路径/user/detail进行了权限拦截,在访问/user/detail.abc的 ...
- SpringMVC框架之第一篇
2.SpringMVC介绍 2.1.SpringMVC是什么 SpringMVC是Spring组织下的一个表现层框架.和Struts2一样.它是Spring框架组织下的一部分.我们可以从Spring的 ...
- SpringMvc核心流程以及入门案例的搭建
1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...
随机推荐
- Eclipse中创建java类的时候自动设置作者信息和创建时间
window—>preferences—>Java—>Code Stype—>Code Templates Code—>New Java files 点击Edit ${f ...
- git other-误删恢复等
修改未push的最后一次commit 如在commit后发现漏添加的文件或者commit message需要修改,则可以依次执行: git add FILE_UN_STAGED # 将未提交的文件添加 ...
- centos7搭建ELK Cluster集群日志分析平台
应用场景:ELK实际上是三个工具的集合,ElasticSearch + Logstash + Kibana,这三个工具组合形成了一套实用.易用的监控架构, 很多公司利用它来搭建可视化的海量日志分析平台 ...
- 形参与实参的区别---java基础
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元.因此,形参只在函数内部有效.函数调用结束返回主调用函数后则不能再使用该形参变量.2.实参可以是常量.变量.表达式.函数 ...
- bzoj千题计划283:bzoj4516: [Sdoi2016]生成魔咒(后缀数组)
http://www.lydsy.com/JudgeOnline/problem.php?id=4516 考虑在后面新加一个字母产生的影响 假设是第i个 如果不考虑重复,那么会增加i个不同的字符串 考 ...
- js调试系列: 调试基础与技巧
js调试系列目录: - 昨天我们见识到了断点的强悍,在断点的配合下进行动态调试,让读代码变的轻松不少,特别是ajax之类的.在昨天的课后练习中,确实增加了不少难度,因为 提交评论 按钮是用 jQuer ...
- 【转】UICollectionView使用介绍
CHENYILONG Blog UICollectionView 使用介绍 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/lu ...
- excel中数字如何自动换行
1. excel中点击单元格右键,选择“设置单元格格式” -- “对齐”选项卡. 2. 先取消“自动换行”,勾选上“缩小字体填充”. 3.再选择“自动换行”即可实现数字的自动换行.
- 主流服务器apache,iis,tomcat,jboss,resion,weblogic,websphere的区别
在互联网高速发展的今天,不同种类的网站大量涌现,每个人都在享受着网络服务带来的便利.而创建自己的个性化网站的门槛不断降低.从事网站架构,这种当年的绝对“”高科技“”绝活.也从it人员的专利“”沦落“” ...
- Python 入门基础9 --函数基础2 实参与形参
今日内容: 一.函数参数 1.形参与实参定义 2.实参分类 3.形参分类 4.可变参数的整体使用 一.形参与实参定义 def fn(参数们): pass 1.1 形参 定义函数,在括号内声明的变量名, ...