Restful风格+介绍
1、介绍
Restful是一种软件架构风格,而不是标准,只是提供了一些设计原则和约束条件,它主要用于客户端与服务器端交互类软件。
REST描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
在简单点说:Restful是一种设计风格,对于web开发人员来说,就是一个url地址表示唯一资源,然后把原来的请求参数加入到请求资源地址中,然后原来请求的CRUD操作,改为使用HTTP协议中请求方式GET,POST,PUT,DELETE。
2、在SpringMVC中如何发送GET请求,POST请求,PUT请求,DELETE请求呢?
我们发起get,或者post请求时,只需要在form标签中,这是method=“get”,这就是get请求,设置成post就是post请求我们的put,delete请求要怎么发起呢?
1、要有post请求的form标签
2、在form表单中,添加一个额外的隐藏域_method="PUT"或者_method=“DELETE”
3、在web.xml中配置一个filter过滤器org.springframework.web.filter.HiddenHttpMethodFilter
配置文件:
<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>
3、案例
前端:
<a href="${pageContext.request.contextPath}/addBook">添加图书</a>
Controller类:
这是一个方法,restful风格后面设置一个参数,RequestMethod.POST接受post请求
@RequestMapping(value = "/Books",method = RequestMethod.POST)
public String addBooks(Book book){
bookService.addBooks(book);
return "redirect:/queryAll";
}
4、Restful风格在高版本Tomcat中无法转发jsp页面
在Tomcat8之后的一些高版本,使用restful风格访问然后转发到jsp页面。就会有如下的错误提示:
1 使用请求重定向
2 在jsp页面的page指定中设置 isErrorPage=true.
5、@RathVariable路径参数
此注解可以接受由前端传递过来的参数
value = "/book/{id} 请求地址中 {id} 表示路径参数(路径变量). 大括号中的id,是参数名(变量名)
@PathVariable(“id”) Integer id ,@PathVariable表示取路径变量的值(取参数名或变量名为 id的值)赋给方法参数id
前端:
<a href="${pageContext.request.contextPath}/Books/${book.id}">修改</a></td>
Controller层:
@RequestMapping(value = "/Books/{id}",method = RequestMethod.GET)
public String update(@PathVariable("id") Integer id,Map<String,Object> map){
Book bookById = bookService.getBookById(id);
map.put("Book",bookById);
return "bookEdit";
}