學(xué)習(xí)完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師
本節(jié)視頻
概述
package com.funtl.my.shop.web.controller;
import com.funtl.my.shop.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class LoginController {
@Autowired
private UserService userService;
@RequestMapping(value = {"", "login"}, method = RequestMethod.GET)
public String login() {
return "login";
}
@RequestMapping(value = "login", method = RequestMethod.POST)
public String login(@RequestParam(required = true) String email, @RequestParam(required = true) String password) {
return "redirect:/main";
}
}
注解說明
@Controller
在 Spring MVC 中宗侦,控制器 Controller 負(fù)責(zé)處理由 DispatcherServlet
分發(fā)的請求匆篓,它把用戶請求的數(shù)據(jù)經(jīng)過業(yè)務(wù)處理層處理之后封裝成一個(gè) Model 故爵,然后再把該 Model 返回給對應(yīng)的 View 進(jìn)行展示。在 Spring MVC 中提供了一個(gè)非常簡便的定義 Controller 的方法确丢,你無需繼承特定的類或?qū)崿F(xiàn)特定的接口泥畅,只需使用 @Controller
標(biāo)記一個(gè)類是 Controller 丁鹉,然后使用 @RequestMapping
和 @RequestParam
等一些注解用以定義 URL 請求和 Controller 方法之間的映射瓜贾,這樣的 Controller 就能被外界訪問到。此外 Controller 不會直接依賴于 HttpServletRequest
和 HttpServletResponse
等 HttpServlet
對象着帽,它們可以通過 Controller 的方法參數(shù)靈活的獲取到杂伟。
@Controller
用于標(biāo)記在一個(gè)類上,使用它標(biāo)記的類就是一個(gè) Spring MVC Controller 對象仍翰。分發(fā)處理器將會掃描使用了該注解的類的方法赫粥,并檢測該方法是否使用了 @RequestMapping
注解。@Controller
只是定義了一個(gè)控制器類予借,而使用 @RequestMapping
注解的方法才是真正處理請求的處理器越平。
@RequestMapping
RequestMapping 是一個(gè)用來處理請求地址映射的注解,可用于類或方法上灵迫。用于類上秦叛,表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑。
RequestMapping 注解有六個(gè)屬性:
-
value瀑粥, method
- value:指定請求的實(shí)際地址挣跋,指定的地址可以是 URI Template 模式
- method:指定請求的method類型, GET狞换、POST避咆、PUT、DELETE 等
-
consumes哀澈,produces
- consumes:指定處理請求的提交內(nèi)容類型(Content-Type)牌借,例如 application/json, text/html
- produces: 指定返回的內(nèi)容類型度气,僅當(dāng) request 請求頭中的(Accept)類型中包含該指定類型才返回
-
params割按,headers
- params:指定 request 中必須包含某些參數(shù)值是,才讓該方法處理
- headers:指定 request 中必須包含某些指定的 header 值磷籍,才能讓該方法處理請求