Spring Boot 的常用注解与基本概念

87 阅读3分钟

@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@RequestMappingRespondBody 两个注解的结合体。

解析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";
    }
}