Spring Boot:請求的處理

一:SpringMVC工作流程

先來看一下流程圖
在這裏插入圖片描述

SpringMVC的組件:

  1. Dispatch Servlet:前端控制器
  2. Handler Mapping:映射處理器
  3. Handler Adapter:適配處理器
  4. Controller:控制器
  5. View Resolver:視圖解析器

SpringMVC的工作流程

  1. 請求先到達DispathcherServlet,DispathcherServlet會根據映射去Handler Mapping查詢相應的Controller地址並將請求發送。
  2. Controller接受到請求後,經過一系列的邏輯處理,返回視圖和模型給DispathcherServlet
  3. DispathcherServlet將視圖交給視圖解析器去渲染輸出

二:簡單的Demo

現在項目都是前後端分離,返回給前端的數據都是json格式。需要在類上添加@ResponseBody。

@ResponseBody:將方法的返回值以json或者文本格式寫入Response的實體內容。
最簡單的SpringMVC demo。訪問路徑爲8080端口,url爲"/"

@Controller        // 這裏註解可以用@RestController註解替代
@ResponseBody	   // @RestController = @ResponseBody + @Controller
public class UserController {
    
    @RequestMapping
    public String  queryUserList(){
        return "哈哈";
    }
}

@Controller :將這個類標記,讓Spring啓動的時候註冊爲bean。這個註解和@component,@service,@Repository在本質上沒有區別,但是在代表的功能不一樣。

註解 含義
@component 最普通的組件,可以被注入到spring容器進行管理
@service 作用於業務邏輯層
@Controller 作用於表現層(spring-mvc的註解)
@Repository 作用於持久層

@RequestMapping:標註類或者方法的請求路徑。

三:請求的處理

請求的方式分爲三種:假設接口爲/user

  1. /user/參數,路徑變量
  2. /user?name=18&age=10,查詢參數
  3. /user,在請求的內容實體中,一般爲json格式

pojo:

@Data
@AllArgsConstructor
public class User {
    private String name;
    private int age;
}

Controller:

@RestController
@RequestMapping("user")
public class UserController {

    @GetMapping
    public User  queryUserList1(@RequestParam String name,@RequestParam int age){
        User user = new User(name,age);
        return user;
    }
	
    @GetMapping("{name}")
    public User  queryUserList2(@PathVariable("name") String name){
        return new User(name,18);
    }

    @PostMapping
    public User  queryUserList3( @RequestBody User user){
        return user;
    }
}

  1. @RequestParam:將請求所攜帶的參數綁定到形式參數上
  2. @PathVariable:將路徑中的參數綁定到形式參數上,通過佔位符來鎖定參數的位置
  3. @RequestBody:處理HttpEntity傳遞過來的數據,一般用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數據,將請求綁定到實體上。

每個綁定註解還可以設置默認值,是否必須需要參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章