- 三个关键点
1.把请求参数加入到请求的资源地址中
2.原来的增,删,改,查。使用HTTP请求方式,POST、DELETE、PUT、GET分别一一对应。
3.所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE 注意事项
1.配置文件中要添加注解驱动和静态资源放行
2.必须使用重定向概念
Restful是一种设计风格。对于我们Web开发人员来说。就是使用一个url地址表示一个唯一的资源。然后把原来的请求参数加入到请求资源地址中。然后原来请求的增,删,改,查操作。改为使用HTTP协议中请求方式GET、POST、PUT、DELETE表示。
传统的方式是:
比如:http://ip:port/工程名/资源名?请求参数
举例:http://127.0.0.1:8080/springmvc/book?action=delete&id=1
restful风格是:
比如:http://ip:port/工程名/资源名/请求参数/请求参数
举例:http://127.0.0.1:8080/springmvc/book/1
1.restful风格中请求方式GET、POST、PUT、DELETE分别表示查、增、改、删
GET请求 对应 查询
http://ip:port/工程名/book/1 HTTP请求GET 表示要查询id为1的图书
http://ip:port/工程名/book HTTP请求GET 表示查询全部的图书
POST请求 对应 添加
http://ip:port/工程名/book HTTP请求POST 表示要添加一个图书
PUT请求 对应 修改
http://ip:port/工程名/book/1 HTTP请求PUT 表示要修改id为1的图书信息
DELETE请求 对应 删除
http://ip:port/工程名/book/1 HTTP请求DELETE 表示要删除id为1的图书信息
2.SpringMVC中如何发送GET请求、POST请求、PUT请求、DELETE请求。
我们知道发起GET请求和POST请求,只需要在表单的form标签中,设置method=”get” 就是GET请求。
设置form标签的method=”post”。就会发起POST请求。而PUT请求和DELETE请求。要如何发起呢。
1.要有post请求的form标签
2.在form表单中,添加一个额外的隐藏域_method=”PUT”或_method=”DELETE”
3.在web.xml中配置一个Filter过滤器org.springframework.web.filter.HiddenHttpMethodFilter(注意,这个Filter一定要在处理乱码的Filter后面)
3.Restful风格的Controller如何实现
思路: 需要一个符合javabean规范的Book类,一个视图,一个控制层
3.1 index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/book/1">查询一个图书</a><br/>
<a href="${pageContext.request.contextPath}/book">查询全部图书</a><br/>
<form action="${pageContext.request.contextPath}/book" method="post">
<input type="hidden" name="id" value="1" />
<input type="hidden" name="name" value="这是需要添加的图书" />
<input type="submit" value="这是添加操作"/>
</form>
<!-- 我们要发送put请求或是delete请求,
1、有一个post请求的form标签
2、添加一个隐藏域,<input type="hidden" name="_method" value="delete|put"/>
3、添加一个restful支持的filter过滤器====HiddenHttpMethodFilter。
-->
<form action="${pageContext.request.contextPath}/book/1" method="post">
<input type="hidden" name="_method" value="delete"/>
<input type="submit" value="这是删除操作"/>
</form>
<form action="${pageContext.request.contextPath}/book/1" method="post">
<input type="hidden" name="_method" value="put"/>
<input type="hidden" name="id" value="1" />
<input type="hidden" name="name" value="这是需要修改的图书" />
<input type="submit" value="这是修改操作"/>
</form>
</body>
</html>
3.2 BookController
@Controller
public class BookController {
@RequestMapping(value = "/book", method = RequestMethod.GET)
public String list() {
System.out.println("查询全部图书");
return "redirect:/index.jsp";
}
@RequestMapping(value = "/book/1", method = RequestMethod.GET)
public String queryBookById() {
System.out.println("查询id为1的图书信息");
return "redirect:/index.jsp";
}
@RequestMapping(value = "/book", method = RequestMethod.POST)
public String addBook(Book book) {
System.out.println("把book对象【" + book + "】插入到数据库");
return "redirect:/index.jsp";
}
@RequestMapping(value = "/book/1", method = RequestMethod.DELETE)
public String deleteBookById() {
System.out.println("删除id为1的图书信息");
return "redirect:/index.jsp";
}
@RequestMapping(value = "/book/1", method = RequestMethod.PUT)
public String updateBook(Book book) {
System.out.println("修改图书-->>" + book);
return "redirect:/index.jsp";
}
}
评论 (0)