一、关于RESTful的理解
RESTful架构,就是一种流行的互联网软件架构,即Representational StateTransfer的缩写,翻译为"
表现层状态转化
"。
表现层
:指通过一个URI就可以访问到的资源。如果一个架构符合REST原则,就称它为RESTful架构。状态转化
:客户端想要操作服务器,只能通过HTTP协议,具体就是指四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
- 每一个URI代表一种资源;
- 客户端和服务器之间,传递这种资源的某种表现层;
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
二、演示restful开发风格
- Url的非restful风格:
127.0.0.1:8080/SprinvMVC02/add.do?username=Tom&age=20
- Url的restful风格:
127.0.0.1:8080/SprinvMVC02/add/Tom/20
下面的代码只是为了测试restful开发风格,简单的pojo和SpringMVC的配置就不再赘述。
1.restful风格的前端控制器配置
新添加了一个restful的前端控制器,这与原来的前端控制器并不冲突。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>SpringMVC01</display-name>
<!-- 前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载SpringMVC配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc_upload.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 前端控制器_restful风格 -->
<servlet>
<servlet-name>springmvc_restful</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc_upload.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc_restful</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2.测试restful开发风格
测试restful开发风格,需要使用到
@PathVariable注解
。
该注解将url中的参数与方法中的参数进行了映射。
package com.gql.upload;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.gql.ex.MyException;
import com.gql.pojo.User;
/**
* 类说明:
* 测试restful风格
* @guoqianliang1998.
*/
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/addRestFul/{id}/{name}")
public String addRestFul(@PathVariable("id") Integer id,@PathVariable("name") String name){
return "success";
}
}
在浏览器输入url:http://localhost:8080/SpringMVC02/user/addRestFul/5/Hudie
,成功访问到了跳转页面,并且可以在调试页面看到,使用restful风格成功接收到到了来自url中的值
3.HTTP协议中的restful风格
四种基本操作:
- GET用来获取资源
- POST用来新建资源(也可以用于更新资源)
- PUT用来更新资源
- DELETE用来删除资源。
restful开发风格使用四个单词来进行不同种类的操作,但在实际开发只有get和post使用的比较频繁。完全可以不使用restful开发风格。
@RequestMapping(value="/add",method=RequestMethod.POST)
public String post(){
//POST进行添加操作
return null;
}
@RequestMapping(value="/find",method=RequestMethod.GET)
public String get(){
//GET进行查询操作
return null;
}
@RequestMapping(value="/update",method=RequestMethod.PUT)
public String update(){
//PUT进行更新操作
return null;
}
@RequestMapping(value="/delete",method=RequestMethod.DELETE)
public String delete(){
//DELETE进行删除操作
return null;
}