目录
5、规定请求头中的Content-Type :consumes
6、给响应头中加上Content-Type:produces
高版本的Tomcat(8.0以及以上版本)的REST - JSP不接受DELETE、PUT形式请求的问题。
1、标注位置
在控制器的类定义和方法定义处都可以标注
- 类定义处:提供初步的请求映射信息,相对于WEB应用的根目录
- 方法处:提供进一步的细分映射信息。相对于类定义处的URL。若类定义处为标注@RequestMapping,则该方法处标记的URL相对于WEB应用的根目录。
DispatcherServlet截取请求后,就通过控制器上的@RequestMapping提供的映射信息确定请求说对应的处理方法。
2、规定请求方式:method
RequestMethod[] method() default {};
- 指定只接受哪种请求方式的请求
- 默认可接受所有请求
3、规定请求参数:params
String[] params() default {};
可支持一些简单的表达式:
- {"username"}
发送的请求必须带上username这个参数,没带就404
- {"!username"}
必须不携带名为username的参数,带了就404
- {"username=123"}
带的username值必须是123
- {"username!=123"}
没带username或者带的username值必须不是123
- {"xxx","xxx","xxx"}
请求参数必须满足所有规则
4、规定请求头:headers
String[] headers() default {};
和params一样,可以写简单的表达式
5、规定请求头中的Content-Type :consumes
String[] consumes() default {};
规定只接受内容类型是哪种的请求
6、给响应头中加上Content-Type:produces
String[] produces() default {};
告诉浏览器返回的内容是什么类型
7、模糊匹配 - Ant风格的URL
url地址可以写模糊的通配符:? * **
- ?:替代任意一个字符
- * :替代任意多个字符和一层路径
- ** :替代多层路径
/*精确URL*/
@RequestMapping("/antTest01")
public String antTest01(){
System.out.println("antTest01....");
return "success";
}
/*模糊匹配:antTest0几都可以*/
@RequestMapping("/antTest0?")
public String antTest02(){
System.out.println("antTest02....");
return "success";
}
/*模糊匹配:a啥啥Test0几都可以*/
@RequestMapping("/a*Test0?")
public String antTest03(){
System.out.println("/a*Test0?....");
return "success";
}
8、@PathVariable映射URL绑定的占位符
带占位符的URL是Spring3.0新增的功能,该功能在springmvc向REST目标挺进发展过程中具有里程碑的意义。
//路径上可以有占位符,可以在路径的任意一个地方写一个占位符{变量名}
@RequestMapping(value = "/user/{uid}")
public String PathVariableTest(@PathVariable("uid") String id){
System.out.println("路径上的占位符是:"+id);
return "success";
}
9、REST风格的URL地址约束
Representational State Transfer,资源表现层转化。是目前最流行的一种互联网软件架构。
主要是用来规定URL地址的。
- Resources:资源。网络上的一个实体,网络上的一个具体信息。URL即为每个资源的独一无二的识别符。
- Representation:表现层。把资源具体呈现出来的形式,叫做它的表现层。txt表现格式、HTML格式、XML格式、JSON格式,甚至可以采用二进制格式
- State Transfer:状态转化。HTTP协议里,四个表示操作的动词:GET、POST、PUT、DELETE。他们分别对应四个基本的操作:GET获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。
系统希望以非常简洁的URL地址来发请求,
同一个URL,以不同的请求方式来区分功能,可以大大减少URL数量。
高版本的Tomcat(8.0以及以上版本)的REST - JSP不接受DELETE、PUT形式请求的问题。
- 解决方式:
在返回页面的jsp加入:isErrorPage="true"
表示页面可能出现异常,如果出现就封装在Exception里
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" isErrorPage="true" %>
或者通过@ResponseBody注解将返回值转化为JSON也可以解决。