国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring MVC 中的常見注解的用法

這篇具有很好參考價值的文章主要介紹了Spring MVC 中的常見注解的用法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

認識 Spring MVC

什么是 Spring MVC

Spring MVC(正式名稱:Spring Web MVC) 是基于 Servlet API 構(gòu)建的原始 Web 框架,從?開始就包含在 Spring 框架中。

  1. Spring MVC 是?個 Web 框架
  2. Spring MVC 是基于 Servlet API 構(gòu)建的

MVC 的定義

MVC 是 Model View Controller 的縮寫,它是軟件?程中的?種軟件架構(gòu)模式,它把軟件系統(tǒng)分為模型、視圖和控制器三個基本部分。

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

MVC 執(zhí)行流程:

  1. 用戶的請求首先到 Controller
  2. Controller 將請求轉(zhuǎn)發(fā)給 Model
  3. Model 處理業(yè)務(wù)并將數(shù)據(jù)結(jié)果返回給 Controller
  4. Controller 將處理的數(shù)據(jù)發(fā)給 View
  5. View 將數(shù)據(jù)轉(zhuǎn)換成頁面發(fā)送給用戶

MVC 是?種思想,? Spring MVC 是對 MVC 思想的具體實現(xiàn)。
總結(jié)來說,Spring MVC 是?個實現(xiàn)了 MVC 模式,并繼承了 Servlet API 的 Web 框架。既然是 Web框架,那么當?戶在瀏覽器中輸?了 url 之后,我們的 Spring MVC 項?就可以感知到?戶的請求.

在創(chuàng)建 Spring Boot 項?時,我們勾選的 Spring Web 框架其實就是 Spring MVC 框架。

Spring MVC 注解的運用

  1. 連接的功能:將?戶(瀏覽器)和 Java 程序連接起來,也就是訪問?個地址能夠調(diào)?到我們的 Spring 程序。
  2. 獲取參數(shù)的功能:?戶訪問的時候會帶?些參數(shù),在程序中要想辦法獲取到參數(shù)。
  3. 輸出數(shù)據(jù)的功能:執(zhí)?了業(yè)務(wù)邏輯之后,要把程序執(zhí)?的結(jié)果返回給?戶

1. Spring MVC 的連接

首先創(chuàng)建一個 TestController 類,來實現(xiàn)用戶與 Spring 程序的交互:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller   //讓該類隨著 Spring 框架啟動而加載
@ResponseBody   //返回非頁面數(shù)據(jù)(這個注解在返回數(shù)據(jù)中講解)
//@RestController 相當于@Controller + @ResponseBody
@RequestMapping("/test")   //路由器規(guī)則注冊(一級路由)
public class TestController {

    @RequestMapping("/hi")    //路由器規(guī)則注冊(二級路由)
    public String sayHi() {
        System.out.println("hi Spring MVC");
        return "<h1> 你好 Spring MVC <h1>";
    }
}

通過瀏覽器地址訪問,來與程序交互:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
可以看到,通過我們訪問地址 http://localhost:8080/test/hi 就可以執(zhí)行sayHi 方法,并返回字符串到頁面上了。

這里注意:
spring mvc 項目默認掃描路徑是啟動類所在的包下所有的子包,也就是說:我們新建的的類要想放入 IoC 中,就得在該包下創(chuàng)建類。(默認啟動類是在 demo 包下)
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

@RequestMapping 注解

@RequestMapping 是 Spring Web 應(yīng)?程序中最常被?到的注解之?,它是?來注冊接?的路由映射的。

路由映射:所謂的路由映射指的是,當?戶訪問?個 url 時,將?戶的請求對應(yīng)到程序中某個類的某個?法的過程就叫路由映射。

@RequestMapping 即可修飾類,也可以修飾?法,當修飾類和?法時,訪問的地址是類 + ?法。
@RequestMapping 也可以直接修飾?法,代碼實現(xiàn)如下:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
默認情況下,@RequestMapping 是支持 post 和 get 請求的,我們用 Postman 來驗證一下:
get 請求:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
post 請求:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
在有些情況下,我們可能要該注解只支持其中一種請求,那要怎么實現(xiàn)呢?

  1. 只支持 get 請求的注解方式
@RestController
@RequestMapping("/test")
public class TestController {
	//方式一
	//下面 value 也可以改為 path
    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    public String sayHi() {
        System.out.println("hi Spring MVC");
        return "<h1> 你好 Spring MVC <h1>";
    }
    //方式二
    @GetMapping("/hhh")
    public String hhh() {
        return "hello world";
    }
}

這里就只演示一下方式一:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

注意,瀏覽器通過 url 來訪問地址, 默認是 get 請求。
再通過 Postman 來構(gòu)造一下 post 請求:Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
2. 只支持 post 請求的注解方式

@RestController
@RequestMapping("/test2")
public class Test2Controller {
    //方式一
    @RequestMapping(path = "/hi",method = RequestMethod.POST)
    public String sayHi() {
        return "你好";
    }
    
    //方式二
    @PostMapping("/hhh")
    public String hhh() {
        return "你好,世界!";
    }
}

這里通過瀏覽器直接訪問就報錯了:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
通過 Postman 構(gòu)建 post 請求:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

2. 獲取參數(shù)

獲取單個參數(shù)

學習 servlet 時獲取參數(shù)的寫法:

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

    //傳統(tǒng)寫法獲取請求中的參數(shù)
    @RequestMapping("/getname") //這里不建議使用大小寫, 可以用下劃線來區(qū)分
    public String getName(HttpServletRequest request) {
        return "Name : " + request.getParameter("name");
    }
}

通過 url 傳遞參數(shù):
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

通過注解獲?。?/p>

@RestController
@RequestMapping("/user")
public class UserController {
	//直接獲取 url 中的參數(shù)
	//當該路由被觸發(fā)后,執(zhí)行到方法時
	//就會對 name 進行匹配,直接對 name 進行賦值
    @RequestMapping("/getname2")
    public String getName2(String name) {
        return "Name : " + name;
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

獲取多個參數(shù)

其實獲取多個參數(shù)和獲取單個參數(shù)差不多:

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

	//在傳參時,注意參數(shù)的命名與要獲取的參數(shù)名一致
    @RequestMapping("/getname3")
    public String getName3(String name, Integer age) {
        return "Name : " + name + "age : " + age;
    }
}

不傳參數(shù)就默認為 null
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

傳遞對象

顧名思義,就是將參數(shù)當做一個對象的部分屬性來接收,在接收時我們新建一個 model 層,來存放所需要的對象:Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

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

    @RequestMapping("/add")
    public User add(User user) {
        return user;  //將得到的對象返回回去
    }
}

@Data 注解是個組合注解,它等于:@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor
添加了它就不需要我們自己寫 Getter 和 Setter 方法了,減少重復(fù)工作。

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
當后端進行接收數(shù)據(jù)時,就會將參數(shù)和 user 里的屬性進行對比,發(fā)現(xiàn)屬性名稱與參數(shù)的 key 相同就會進行賦值。

當對象返回前端時,因為前端是用 json 來表示對象的,所以返回的對象就轉(zhuǎn)化為 json 格式 :Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

表單傳參

其實表單傳參和 url 傳參區(qū)別就是傳遞參數(shù)的位置不一樣,對于后端來說都一樣,我們可以用 Postman 來構(gòu)造請求:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

后端參數(shù)重命名

有時候前端傳遞的 key 你覺得不合理,想改個順眼的名字,就可以對傳遞過來的參數(shù)重命名,當然前端的參數(shù)是不變的。(注意: 對象不能重命名)

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

	//將前端參數(shù) y 改為 name,并由 name 接收
    @RequestMapping("/name")
    public String name(@RequestParam("y") String name) {
        return name;
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
這里就有一個問題,如果我不傳這個 y 就會報錯:Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

在 @RequestParam 中,參數(shù)默認是必傳的:

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
如果我們需求是參數(shù)非必傳則可以進行如下修改:

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

    @RequestMapping("/name")
    public String name(@RequestParam(value = "y",required = false) String name) {
        return name;
    }
}

這樣就不會報錯了:
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

@RequestBody 接收 JSON 對象

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

    @RequestMapping("/get_json")
    public User getJson(@RequestBody User user) {
        return user;
    }
}

使用 Postman 構(gòu)造對象并發(fā)送 :
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

@PathVariable 獲取 URL 中的參數(shù)

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

	//{aid} 中的 aid 是用來接收參數(shù)的
    @RequestMapping("/get_url/{aid}")
    //下面的 "aid" 是將參數(shù)名為 aid 的參數(shù)賦值給后面的 aid
    //這里兩個 aid 名字相同,可以省略參數(shù)名("aid")不寫
    public Integer getUrl(@PathVariable("aid") Integer aid) {
        return aid;
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

當然了, 還可以傳遞多個參數(shù) :

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

    @RequestMapping("/get_url2/{aid}/{name}")
    public String getUrl2(@PathVariable() Integer aid, @PathVariable String name) {
        return "aid: " + aid + " name: " + name;
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

上傳文件 @RequestPart

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

    @RequestMapping("/upload")
    //myfile 是接收的參數(shù)名, 賦值給 file
    public String upload(@RequestPart("myfile") MultipartFile file) throws IOException {
        String path = "E:\\image\\img.png";
        //保存文件
        file.transferTo(new File(path));
        return path;
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
該路徑下確實保存了 img.png 圖片
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

上面的代碼寫法是有問題的, 如果有很多用戶都要保存文件, 那文件名就不能寫死了, 必須保證每次保存的文件名都不一樣, 可以使用 UUID :

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

    @RequestMapping("/upload")
    public String upload(@RequestPart("myfile") MultipartFile file) throws IOException {
    	//得到 UUID 并去掉 "-"
        String name = UUID.randomUUID().toString().replace("-","");
        //file.getOriginalFilename() 得到文件名
        //file.getOriginalFilename().lastIndexOf(".") 得到最后一個"."的下標
        //整個就是 name 拼接上 .后綴名
        name += file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        String path = "E:\\image\\" + name;
        //保存文件
        file.transferTo(new File(path));
        return path;
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

多次提交得到的文件 :

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

獲取 Cookie/Session/Header

  1. 獲取 Cookie
@RestController
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/get_cookie")
    public String getCookie(@CookieValue(value = "myCookie", required = false) String ck) {
        return ck;
    }
}

沒有輸出 :
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
通過前端構(gòu)建一個 key 為 myCookie 的 cookie :
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

  1. 獲取 Session

要想獲取 Session 首先要有 Session, 我們可以上傳一個 Session :

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

    @RequestMapping("/set_session")
    public String setSession(HttpServletRequest request) {
        HttpSession session = request.getSession();
        if(session != null) {
            session.setAttribute("SESSION_KEY","張三");
            return "session set success";
        }
        return "session set fail";
    }

    @RequestMapping("/get_session")
    public String getSession(@SessionAttribute(required = false, value = "SESSION_KEY") String name) {
        return name;
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
3. 獲取 Header

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

    @RequestMapping("/get_header")
    public String getHeader(@RequestHeader("User-Agent") String userAgent) {
        return "UserAgent : " + userAgent;
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
可以通過 fiddler 來抓包驗證一下 :
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

3. 返回數(shù)據(jù)

默認請求下?論是 Spring MVC 或者是 Spring Boot 返回的都是 html 格式,如果需要返回非 html 格式數(shù)據(jù), 就得使用 @ResponseBody 注解了, 我們之前一直使用的 @RestController 便是 @ResponseBody + @Controller 注解.

驗證返回數(shù)據(jù)的默認格式 :

@Controller
public class Test {

    @RequestMapping("/b")
    public String t() {
        return "hello.html";
    }
}

因為沒有這個前端頁面, 所以返回出錯 :

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
抓包(返回的是 html 格式) :
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

在靜態(tài)文件中加入 hello.html 文件 :

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
再次訪問 :
Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java

使用 @ResponseBody 返回字符串 :

@Controller
public class Test {

    @ResponseBody
    @RequestMapping("/a")
    public String t2() {
        return "hello.html";
    }
}

Spring MVC 中的常見注解的用法,JavaEE,spring,mvc,java
或者使用 @RestController 也可以.文章來源地址http://www.zghlxwxcb.cn/news/detail-653534.html

到了這里,關(guān)于Spring MVC 中的常見注解的用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Spring】— Spring MVC的注解

    【Spring】— Spring MVC的注解

    1.DispatcherServlet DispatcherServlet的全名: org.Springframework.web.servlet.DispatcherServlet 它在程序中充當著前端控制器的角色。 【示例】在使用DispatcherServlet時,只需將其配置在項目的web.xml文件中,其配置代碼如下。 在上述代碼中, load-on-startup 元素和 init-param 元素都是可選的。如果 lo

    2024年02月10日
    瀏覽(20)
  • 【Spring MVC】快速學習使用Spring MVC的注解及三層架構(gòu)

    【Spring MVC】快速學習使用Spring MVC的注解及三層架構(gòu)

    ?? 博客主頁:從零開始的-CodeNinja之路 ? 收錄文章:【Spring MVC】快速學習使用Spring MVC的注解及三層架構(gòu) ??歡迎大家點贊??評論??收藏?文章 SpringWebMVC是基于ServletAPI構(gòu)建的原始Web框架,從?開始就包含在Spring框架中。它的正式名稱“SpringWebMVC”來?其源模塊的名稱(Spri

    2024年04月17日
    瀏覽(93)
  • 【JavaEE】Spring Web-MVC

    【JavaEE】Spring Web-MVC

    目錄 Spring Web MVC 是什么 什么是Serlet 什么是MVC 什么是Spring MVC 使用Spring MVC 建立連接 @RequestMapping 請求 傳遞單個參數(shù) 傳遞多個參數(shù) 傳遞對象 后端參數(shù)重命名 ?傳遞數(shù)組 傳遞集合 傳遞JSON數(shù)據(jù) 獲取url參數(shù)-@pathvariable 上傳文件@RequestPart 獲取Cookie Session 獲取Header 響應(yīng) 返回靜態(tài)頁

    2024年04月12日
    瀏覽(21)
  • 【JavaEE進階】 初識Spring Web MVC

    【JavaEE進階】 初識Spring Web MVC

    Spring Web MVC 是 基于 Servlet API 構(gòu)建的原始 Web 框架 ,從?開始就包含在Spring框架中。它的正式名稱“Spring Web MVC”來?其源模塊的名稱(Spring-webmvc),但它通常被稱為)Spring MVC). Servlet是?種實現(xiàn)動態(tài)??的技術(shù).準確來講Servlet是?套Java Web 開發(fā)的規(guī)范,或者說是?套Java Web 開發(fā)的

    2024年02月03日
    瀏覽(26)
  • Spring MVC常用注解

    @PathVariable、@RequestBody和@RequestParam @PathVariable、@RequestBody和@RequestParam是Spring MVC框架中用于處理請求參數(shù)的注解。 @PathVariable:用于處URL路徑中的 占位符參數(shù) 。例如,對于URL /users/{id} ,其中的 {id} 是一個占位符,可以使用@PathVariable注解將其綁定到方法的參數(shù)上,如下所示:

    2024年02月09日
    瀏覽(41)
  • Spring MVC相關(guān)注解運用 —— 上篇

    Spring MVC相關(guān)注解運用 —— 上篇

    目錄 一、@Controller、@RequestMapping 1.1 示例程序 1.2 測試結(jié)果 二、@RequestParam 2.1 示例程序 2.2 測試結(jié)果 三、@RequestHeader、@CookieValue 3.1 示例程序 3.2 測試結(jié)果 四、@SessionAttributes 4.1 示例程序 4.2 測試結(jié)果 五、@ModelAttribute 5.1 示例程序 5.2 測試結(jié)果 往期專欄文章相關(guān)導(dǎo)讀? 1. Maven系列

    2024年02月11日
    瀏覽(18)
  • Spring MVC相關(guān)注解運用 —— 下篇

    Spring MVC相關(guān)注解運用 —— 下篇

    目錄 一、@ResponseBody、@RestController 1.1. JSP頁面 1.2 放行靜態(tài)資源 1.3 編寫實體類 1.4 控制器方法 1.5 添加依賴 1.6 測試結(jié)果 1.7?@RestController? 二、靜態(tài)資源映射 2.1 配置靜態(tài)資源篩查器 2.2 配置靜態(tài)資源資源映射器 2.3 配置默認Servlet處理靜態(tài)資源 三、@RequestBody 3.1?AJAX請求發(fā)送JSO

    2024年02月12日
    瀏覽(20)
  • Spring MVC 的RequestMapping注解

    Spring MVC 的RequestMapping注解

    作用:用于建立請求URL和處理請求方法之間的對應(yīng)關(guān)系。 出現(xiàn)位置: 類上: 請求 URL的第一級訪問目錄。此處不寫的話,就相當于應(yīng)用的根目錄。寫的話需要以/開頭。它出現(xiàn)的目的是為了使我們的 URL 可以按照模塊化管理,例如: 賬戶模塊: /account /add /account /update /account

    2024年02月02日
    瀏覽(17)
  • Spring MVC-@RequestMapping注解詳解

    目錄 1、@RequestMapping注解的作用 2、@RequestMapping注解的位置 3、value屬性 (1)基礎(chǔ)用法 (3)路徑中的占位符(重點) 4、method屬性 5、params屬性(了解) 6、headers屬性(了解) @RequestMapping注解的作用,就是 將請求和處理請求的控制器方法關(guān)聯(lián)起來 ,建立映射關(guān)系。 SpringMVC接

    2023年04月24日
    瀏覽(13)
  • Spring MVC相關(guān)注解運用 —— 中篇

    Spring MVC相關(guān)注解運用 —— 中篇

    目錄 一、RESTful風格支持 1.1 RESTful風格介紹 1.2 postman使用 二、@PathVariable 2.1?實例程序 2.2 測試結(jié)果? 三、@PostMapping、@GetMapping、@PutMapping、@DeleteMapping 四、@HiddenHttpMethodFilter 4.1?在web.xml配置過濾器 4.2?控制器方法 4.3?JSP頁面 4.4?測試結(jié)果 往期專欄文章相關(guān)導(dǎo)讀? 1. Maven系列專欄

    2024年02月12日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包