02-Restful风格

starrylsi
2024-09-15 / 0 评论 / 10 阅读 / 正在检测是否收录...
  • 三个关键点
    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

评论 (0)

取消