- SpringMVC使用@RequestMapping 注解未控制器指定可以处理哪些URL请求
- 在控制器的类定义及方法处都可标注
- RequestMapping
- 类定义处:提供出部的请求映射信息。相当于WEB应用的根目录
- 方法处:提供进一步的细分映射信息。相对于类定义处的URL。若类方法定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录
- DispatcherServlet截获请求之后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。
- 示例:
@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
/**
* 1. @RequestMapping除了修饰方法,还可以修饰类
* 2. 类定义处:提供初步的请求映射信息,相对于 WEB应用的根目录
* 3. 方法处:提供进一步的细分映射信息。相对于类定义出的URL。若类定义处未标注@RequestMapping,则方法出标记的URL相对于WEB应用的根目录
* @return
*/
@RequestMapping("/testRequestMapping")
public String testRequestMapping() {
System.out.println("SpringMVCTest.testRequestMapping");
return SUCCESS;
}
}
映射请求参数&请求头
标准的HTTP请求报头
映射请求参数、请求方法或请求头
- @RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数以及请求头映射请求。
- @RequestMapping的value、method、params及heads分别表示请求URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可以让请求映射更加精确化。
- params和headers支持简单的表达式:
- param1:表示请求必须包含名为param1的请求参数
- !param1:表示请求不能包含名为param1的请求参数
- param1!=value1:表示请求包含名为param1的请求参数,但其值不能为value1
- {“param1=value1”, “param2”}:请求必须包含为param1和param2的两个请求参数,且param1参数的值必须为value1
使用@RequestMapping映射请求
- Ant风格资源地址支持3种匹配符:
- @RequestMapping还支持Ant风格的URL:
- /user/*/createUser:匹配
- /user/aaa/createUser、/user/bbb/createUser等URL
- /user/**/createUser:匹配
- /user/createUser、/user/aaa/bbb/createUser等URL
- /user/createUser??:匹配
- /user/createUseraa、/user/createUserbb等URL
@PathVariable映射URL绑定的占位符
- 带占位符的URL是Spring3.0新增的功能,该功能在SpringMVC向REST目标挺进发展过程种具有里程碑的意义
- 通过@PathVariable可以将URL种占位符参数绑定到控制器处理方法的入参中:URL种的{XXX}占位符可以通过@PathVariable(“xxx”)绑定到操作方法的入参种。
/**
* @PathVariable 可以来映射URL中的占位符到目标方法的参数中。
* @param id
* @return
*/
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id){
System.out.println("SpringMVCTest.testPathVariable:" + id);
return SUCCESS;
}
REST
- REST:即Represenetation State Transfer 。(资源)表现层状态转化。是目前最流行的一种互联网软件构架。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多的网站采用。
- 资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个URL(统一资源定位符)指向它,每种资源对应一个特定的URL。要获取这个资源,访问它的URL就可以,因此URL即为每一个资源的独一无二的识别符。
- 表现层(Representation):把资源具体呈现出来,叫做他的表现层(Representation)。比如:文本可以用txt格式表现,也可以用html格式、xml格式、JSON格式表现,甚至可以采用二进制格式。
- 状态转换(State Transfer):每发出一个请求,就代表了客户端和服务器端的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须是哦通过某种手段,让服务器端发生“状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是“表现层状态转化”。具体说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。他们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。
- 示例:
- -/order/1 HTTP GET :得到id=1的order
- -/order/1 HTTP POST:删除id=1的order
- -/order/1 HTTP PUT:更新id=1的order
- -/order HTTP POST:新增order
- HiddenHttpMethodFilter:浏览器form表单只支持GET与POST请求,而DELETE、PUT 等method并不支持,Spring3.0添加了一个过滤器,可以将这些请求转化为标准的HTTP方法,使得支持GET、POST、PUT与DELETE请求
- 带占位符的URL是Spring3.0新增的功能,该功能在SpringMVC向REST目标挺进发张过程中具有里程碑的意义
- 通过@PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL中的 {XXX}占位符可以通过@PathVariable(“xxx”)绑定到方法的入参中。
@RequestMapping("/delete/{id}")
public String delete(@PathVariable("id") Integer id) {
UserDao.delete(id);
return "redirect:/user/list.action";
}