@RequestMapping
用来映射 URL 地址, 相同URL地址,不同属性对应不同的方法。
value 属性:
默认属性:值为URL地址
例如:value = {"/home/","url2",...}
params 属性:
指定参数名,被params 指定的参数 URL地址的请求参数必须包括。
例如:params = {"paramsname1","paramsname2",...}
method 属性:
指定请求类型
例如:
method = RequestMethod.GET
GET 可替换为 Spring Boot 中定义的同类型枚举类 :GET、HEAD、POST、PATCH、DELETE、OPTIONS、TRACE。
headers 属性
指定需要包含那些请求头
例如:headers = {"key_1=val_1","key_2=val_2","key_3=val_3",...}
consumes 属性
指定请求的数据类型
例如:consumes="application/json" consumes="text/html"
映射关系的层级控制
当使用@RequesMapping 注解类时,可以指定URL地址的公共前缀,类中被注解的方法只需要指定URL地址的后缀即可。
@RespondBody
情况一:当类和方法同时被@RequestMapping 和 @RespondBody 标注
则此标注会将方法的返回值返回给前端,若注解类时,则会将此类所有方法的返回值返回给前端。
情况二:当只有 @RequestMapping 注解时,会跳转到此方法返回值的 URL 地址
当不使用重定向时,跳转的地址只能是后端实现的地址,且前端URL不会改变,只会改变内容。
当在返回的字符串中添加了Redirect: 重定向时,前端的URL地址会改变,内容也可以改变,同时能跳转到服务器以外的URL地址。
HttpServletResponse
使用此类创建的对象重定向URL
@RequesMapping("/test/")
public void test(HttpServletResponse response)
// 函数的返回类型为void 因为使用了 response 后此函数的返回值将不再有效
{
try {
response.sendRedirect("https://www.baidu.com");
}catch(IOException e){
e.printStackTrace();
}
}
@RestController
@RestController 是 @RequestMapping 和 RespondBody 两个注解的结合体。
解析URL地址中的参数
对于处理网络请求的方法,即被@RequestMapping注解的方法,在方法的参数列表中添加同名参数,Spring Boot会自动将请求中的参数注入到参数列表中的同名参数中。
- Spring Boot 可以识别不同请求类型的URL地址中的参数
- 参数名称大小写敏感
- 参数仅由名称作为识别条件
- 参数数量可以不一致
- 参数类型不可为基本数据类型
- 若参数没有注入值,则填入默认值,默认值若被指定,则填指定值,否则为
null - URL地址中的参数不是请求体
@RequestParam
此注解的作用是显示的指定方法参数与URL地址中参数的映射关系。
value 属性:
被@RequestParam注解的参数,会被注入URL中参数名与value的值对应的参数值。
required 属性
指定此参数是否必须,required = true ? 必须 :可省略
defaultValue 属性
指定参数的默认值。
示例:将URL中参数名为name的参数注入到 name 中且此参数不是必须的,若参数为空,则默认为游客。
public String test( @RequestParam(value = "name", required=false, defaultValue = "游客") String name )
@RequestBody
@RequestBody 注解用于接收 JSON此类数据
实现过程
1、首先建立一个与JSON对应的类,类的属性和JSON字段一一对应
2、在方法参数中添加@RequestBody注解
示例:
// JSON 数据格式
{"id":26,"name":"tangjiaran"}
//类
class people
{
private Integer id;
private String name;
// 省略 get和set 方法。
}
// 处理URL请求的方法
public String test( @RequestBody people ple){
return "";
}
request、response 和 session
request
从客户端请求中获取数据
response
发送信息给客户端,可以发错误信息,写入到response输出流中的数据会直接显示在web页面,错误信息不可以显示。 还有其他API,暂时不研究了。
session
session对象用于保存用户通过URL地址发送的请求,并跟踪这个请求的操作状态。
如何使用
// 一
@Controller
public class TestController {
@Autowired
HttpServletRequest request;
@Autowired
HttpServletResponse response;
HttpSession session = request.getSession();
}
// 二
@Controller
public class TestController{
@RequestMapping("/test/")
public String test(
HttpServletRequest rt,
HttpServletResponse rp,
HttpSession sn)
{
return "this is a test";
}
}