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

Java EE 突擊 10 - Spring MVC 程序開發(fā) (1)

這篇具有很好參考價值的文章主要介紹了Java EE 突擊 10 - Spring MVC 程序開發(fā) (1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這個專欄給大家介紹一下 Java 家族的核心產(chǎn)品 - SSM 框架
JavaEE 進階專欄

Java 語言能走到現(xiàn)在 , 仍然屹立不衰的原因 , 有一部分就是因為 SSM 框架的存在

接下來 , 博主會帶大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相關知識點

并且?guī)ьI大家進行環(huán)境的配置 , 讓大家真正用好框架、學懂框架

來上一篇文章復習一下吧
點擊即可跳轉(zhuǎn)到前置文章
Java EE 突擊 10 - Spring MVC 程序開發(fā) (1),JavaEE 進階,java-ee,spring,mvc

一 . Spring MVC

1.1 什么是 Spring MVC?

我們先來看官方對于 Spring MVC 的解釋
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#spring-web
image.png

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.
Spring Web MVC 是基于 Servlet API 構(gòu)建的原始 Web 框架,從一開始就包含在 Spring 框架中。Spring Web MVC 的正式名稱“Spring Web MVC” , 來自于其源代碼模塊 (Spring -webmvc) 的名稱,但它更常用的名稱是“Spring MVC”。

剖析一下 :
Spring MVC 全稱 Spring Web MVC , 那么 Spring Web MVC 又被簡稱為 Spring MVC 或 Spring Web .
它是一個原始的基于 Servlet API 的 web 框架
那么我們之前就提出了一個問題 : Spring / Spring Boot / Spring MVC 有什么區(qū)別 ?

Spring : 全稱是 Spring Framework , 是一個包含了眾多工具 / 方法的 IoC 容器 , 它里面包含了很多模塊 , 它的最核心功能就是 IoC 容器 , 使用 IoC 容器可以降低代碼的耦合性
Spring Boot : 在創(chuàng)建之初的目的就是為了服務 Spring , 為了快速開發(fā) Spring 框架的 , 其本質(zhì)就是 Spring
Spring MVC : 是一個 Web 框架 , 在整個 Spring Framework 里面算是一個模塊

目前為止 , 我們已經(jīng)總結(jié)出了兩個非常關鍵的信息 :

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

那么這個 MVC 怎樣理解呢 ?

MVC 定義

MVC 全稱是 Model View Controller , 翻譯過來就是 模型視圖控制器 , 它是軟件工程中的?種軟件架構(gòu)模式(設計思想),它把軟件系統(tǒng)分為模型、視圖和控制器三個基本部分
image.png
無標題.png
但是既然 Spring MVC 是前后端不分離的模式 , 我們還有必要學習嗎 ?
當然有必要啊 , 我們的 Spring MVC 也是會慢慢發(fā)展的 , 逐步的就把 View 模塊淡化了(現(xiàn)在都是采用的前后端分離模式)

Spring MVC 與 MVC 有什么關系呢 ?

MVC 是?種思想,而 Spring MVC 是對 MVC 思想的具體實現(xiàn)。

這就跟我們之前介紹的 IoC 與 DI 差不多

1.2 Spring MVC 學習內(nèi)容

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

二 . Spring MVC 的創(chuàng)建和連接

2.1 創(chuàng)建 Spring MVC

其實我們創(chuàng)建 Spring Boot 的時候 , 就已經(jīng)創(chuàng)建了 Spring MVC 了
接下來 , 帶大家再走一遍流程
Java EE 突擊 10 - Spring MVC 程序開發(fā) (1),JavaEE 進階,java-ee,spring,mvc

image.png
image.png
[外鏈圖片轉(zhuǎn)存中…(img-N1HXoG73-1691714953614)]
先在 Developer Tools 里面添加工具
image.png
然后在 Web 里面添加工具
[外鏈圖片轉(zhuǎn)存中…(img-4cZC0kUO-1691714953615)]

我們仔細看一下 IDEA 對于 Spring Web 的介紹
[外鏈圖片轉(zhuǎn)存中…(img-OQD36Siu-1691714953615)]

然后點擊 Next
image.png
接下來打開 Maven 窗口
方法一 :
[外鏈圖片轉(zhuǎn)存中…(img-8rYltOKb-1691714953616)]
[外鏈圖片轉(zhuǎn)存中…(img-nYmshUD2-1691714953616)]
方法二 :
在 pom.xml 里面右鍵 , 點擊 Add as Maven Project
[外鏈圖片轉(zhuǎn)存中…(img-FztgXH6Y-1691714953616)]
然后把無關文件刪掉即可
image.png

2.2 連接 HTTP 請求

我們需要使用一個注解 : @RequestMapping(“/xxx”) , 這個注解代表的就是我們的路由 , 通過括號中的地址我們可以訪問到特定的頁面
接下來我們創(chuàng)建一個 controller 包 , 里面創(chuàng)建 WebController 類

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/web")
public class WebController {

    @RequestMapping("/hi")
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

接下來運行一下 , 看一下效果
image.png
訪問不到 ? 我加了路由了啊 , 這怎么回事 ?
這是因為我們雖然加了路由 , 但是對應的類還沒有加載 (就是你雖然加這個功能了 , 但是沒有人調(diào)用) , 所以如果我們想要在 Spring Web 項目上啟動的時候 , 就需要加類注解把映射的路徑加載起來(添加 @Controller 注解 )

package com.example.demo.controller;

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

@Controller
@RequestMapping("/web")
public class WebController {

    @RequestMapping("/hi")
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

image.png
不是吧 阿sir , 怎么還不好使 ?
其實這是因為我們最早的 Spring MVC 是將視圖返回給用戶 , 所以我們的 Spring MVC 會以為我們返回的是一個視圖 , 他就會找我們的視圖去了 , 但是我們只是返回一句話 , 并沒有返回視圖 , 所以沒找到 , 就會報了 404 , 他的解決辦法就是 : 加注解 @ResponseBody , 這個注解的作用意思就是告訴 Spring MVC 我們返回的不是一個視圖

package com.example.demo.controller;

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

@Controller // 是一個控制類,告訴程序要在 Spring 啟動的時候加載并注冊
@ResponseBody // 告訴 Spring MVC 當前類返回的是非靜態(tài)頁面(非視圖)
@RequestMapping("/web") // 使用"/web"可以訪問到當前類
public class WebController {

    @RequestMapping("/hi") //使用"/web/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

[外鏈圖片轉(zhuǎn)存中…(img-IF2kWYnB-1691714953617)]
我們的 @ResponseBody @RequestMapping 不光能修飾類 , 還可以修飾方法
我們可以把 @ResponseBody 移到方法上面

package com.example.demo.controller;

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

@Controller // 是一個控制類,要在 Spring 啟動的時候加載并注冊
@RequestMapping("/web") // 使用"/web"可以訪問到當前類
public class WebController {

    @ResponseBody // 告訴 Spring MVC 當前方法返回的是非靜態(tài)頁面
    @RequestMapping("/hi") //使用"/web/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

重新運行
image.png
也是可以成功運行的
我們的 @ResponseBody 也是可以不寫的 , 直接返回視圖 .
比如我們新建一個前端界面
[外鏈圖片轉(zhuǎn)存中…(img-bmS6Osqi-1691714953617)]
然后把這段代碼輸入進去

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>我是 index.html 頁面</h1>
</body>
</html>

接下來回到 WebController.java

package com.example.demo.controller;

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

@Controller // 是一個控制類,要在 Spring 啟動的時候加載并注冊
@RequestMapping("/web") // 使用"/web"可以訪問到當前類
public class WebController {

    //@ResponseBody // 不加 @ResponseBody 默認返回視圖
    @RequestMapping("/hi") //使用"/web/hi"可以訪問到當前方法
    public Object sayHi() {
        return "/index.html";
    }
}

image.png
那么有的同學覺得寫 @ResponseBody @Controller 很麻煩 , 那么其實可以寫成一個注解 : @RestController

package com.example.demo.controller;

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

@Controller // 是一個控制類,要在 Spring 啟動的時候加載并注冊
@RestController // @RestController = @ResponseBody + @Controller
public class WebController {
    @RequestMapping("/hi") //使用"/web/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

這樣的話我們地址欄就直接輸入方法的路由即可
image.png
目前為止 , 我們想要使用 Spring MVC , 我們需要加三個注解

  1. @Controller
  2. @RequestMapping
  3. @ResponseBody

其中 , 1 和 3 可以合并成 @RestController
[外鏈圖片轉(zhuǎn)存中…(img-IqKwITBn-1691714953617)]
image.png

@Controller 注解可以換成其他五大類注解嗎

package com.example.demo.controller;

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

@Controller
@ResponseBody
public class WebController {
    @RequestMapping("/hi") //使用"/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

目前程序是沒問題的
image.png
那么我們把 @Controller 換成其他注解呢 ?

package com.example.demo.controller;

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

@Component
@ResponseBody
public class WebController {
    @RequestMapping("/hi") //使用"/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

運行一下 , 看一下效果
image.png
艾瑪 , 報錯了
那試一下 @Service 呢 ?

package com.example.demo.controller;

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

@Service
@ResponseBody
public class WebController {
    @RequestMapping("/hi") //使用"/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

image.png
還是不行 , 那么基本就是只能使用 @Controller 了
那這是因為什么呢 ? 不知道大家是否還記得這張圖 ?
[外鏈圖片轉(zhuǎn)存中…(img-4XsdqcyQ-1691714953618)]
前端的數(shù)據(jù)是先傳給 @Controller 的 , 只有 @Controller 才能實現(xiàn)將類里面的方法和類進行數(shù)據(jù)注入

@RequestMapping 注解 Get 請求和 Post 請求都可以訪問嗎?

package com.example.demo.controller;

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

@Controller
@ResponseBody
public class WebController {
    @RequestMapping("/hi") //使用"/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

Get 請求一定是可以的 , 因為我們在地址欄輸入地址 , 就產(chǎn)生了 Get 請求 , 我們也可以抓個包看看
image.png
image.png
那么我們測試一下 Post 請求可不可以 , 那么怎么構(gòu)造請求呢 , 這就需要用到 Postman 了
image.png
也打印出來了內(nèi)容 , 這就說明 Post 請求也是沒問題的

@RequestMapping(value = “/hi”,method = RequestMethod.POST) 方式

這個注解的意思是該 方法/類 只支持使用 POST 方法訪問
那假如你的書背產(chǎn)品經(jīng)理提出了要求 : 我們的產(chǎn)品只支持 Post 請求 , 不支持 Get 請求 , 你該怎樣做呢 ?
我們就可以在 @RequestMapping 后面加參數(shù)

@RequestMapping(value = "/hi",method = RequestMethod.POST)

我們來試一下

package com.example.demo.controller;

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.ResponseBody;

@Controller
@ResponseBody
public class WebController {
    @RequestMapping(value = "/hi",method = RequestMethod.POST) //使用"/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

image.png
改成 Get 訪問呢 ?
image.png
也可以在瀏覽器地址欄來測試
image.png
所以這種寫法只支持 POST 請求 , 不支持 GET 請求
但是我們還有更好的寫法 , 來康康吧

@GetMapping 和 @PostMapping

我們測試一下 @PostMapping , 使用這個注解就可以實現(xiàn)只允許 POST 請求

package com.example.demo.controller;

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

@Controller
@ResponseBody
public class WebController {
    @PostMapping("/hi") //使用"/hi"可以訪問到當前方法
    public Object sayHi() {
        return "Hi,Spring MVC.";
    }
}

在 Postman 里面發(fā)送 post 請求 , 能正常顯示結(jié)果
image.png
發(fā)送 Get 請求就會報錯
image.png
@GetMapping 同理


到目前為止 , 我們 Spring MVC 的連接可以用三個注解

  1. @RequestMapping : 支持所有類型的接口訪問(包含 Get/Post…)
  2. @PostMapping : 只支持 Post 請求
  3. @GetMapping : 只支持 Get 請求

注意 : 以上注解需要配合 @Controller 或者 @RestController 一起使用文章來源地址http://www.zghlxwxcb.cn/news/detail-642587.html

到了這里,關于Java EE 突擊 10 - Spring MVC 程序開發(fā) (1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • Spring MVC程序開發(fā)

    Spring MVC程序開發(fā)

    目錄 1.什么是Spring MVC? 1.1MVC定義 1.2MVC和Spring MVC的關系 2.為什么要學習Spring MVC? 3.怎么學Spring MVC? 3.1Spring MVC的創(chuàng)建和連接 3.1.1創(chuàng)建Spring MVC項目 3.1.2@RequestMapping 注解介紹 3.1.3 @RequestMapping 是 post 還是 get 請求? ?編輯?3.1.4 @GetMapping 和 PostMapping 3.2 獲取參數(shù) 3.2.1 傳遞單個參數(shù)

    2024年02月14日
    瀏覽(19)
  • Spring MVC 程序開發(fā)

    Spring MVC 程序開發(fā)

    目錄 什么是 Spring MVC? MVC 定義 MVC 和 Spring MVC 的關系 為什么要學 Spring MVC? Spring MVC 項目的創(chuàng)建 學習 Spring MVC 的 三個目標 Spring MVC項目的連接(用戶 和 程序 的 映射) 方法1:@RequestMapping(“/xx”) @RequestMapping 是 post 還是 get 請求? 總結(jié) 拓展 ?方法2 和 方法 3:@GetMapping??和

    2024年02月15日
    瀏覽(24)
  • Java EE 突擊 14 - Spring AOP

    Java EE 突擊 14 - Spring AOP

    這個專欄給大家介紹一下 Java 家族的核心產(chǎn)品 - SSM 框架 JavaEE 進階專欄 Java 語言能走到現(xiàn)在 , 仍然屹立不衰的原因 , 有一部分就是因為 SSM 框架的存在 接下來 , 博主會帶大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相關知識點 并且?guī)ьI大家進行環(huán)境的配置 , 讓大家真正用好

    2024年02月11日
    瀏覽(25)
  • Java EE 突擊 9 - Spring Boot 日志文件

    Java EE 突擊 9 - Spring Boot 日志文件

    這個專欄給大家介紹一下 Java 家族的核心產(chǎn)品 - SSM 框架 JavaEE 進階專欄 Java 語言能走到現(xiàn)在 , 仍然屹立不衰的原因 , 有一部分就是因為 SSM 框架的存在 接下來 , 博主會帶大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相關知識點 并且?guī)ьI大家進行環(huán)境的配置 , 讓大家真正用好

    2024年02月13日
    瀏覽(21)
  • 三、使用注解形式開發(fā) Spring MVC程序

    1、 創(chuàng)建 maven 項目,添加框架支持 2、 添加依賴,因為 maven 可以有一些資源過濾的問題,這里直接將資源過濾配置補全 3、 檢查項目結(jié)構(gòu)中是否有 lib 夾以及 jar 是否成功導入了,并配置 tomcat 這里配置完基本上就不用在動了,統(tǒng)一使用注解來解決 @Controller: @Controller 用于標

    2024年02月12日
    瀏覽(19)
  • SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄(第五天)MyBatis的注解開發(fā)

    SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄(第五天)MyBatis的注解開發(fā)

    ? 昨天我們深入學習了 MyBatis多表之間的關聯(lián)映射,了解掌握了一對一關聯(lián)映射,一對多關聯(lián)映射,嵌套查詢方式以及嵌套結(jié)果方式,掌握了緩存機制的一級緩存,二級緩存等概念,也使用了代碼進行復現(xiàn)理解 。但是都是基于XML配置文件的方式來實現(xiàn)的,現(xiàn)在我們要學習一下

    2024年02月11日
    瀏覽(58)
  • (第六天)初識Spring框架-SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄

    (第六天)初識Spring框架-SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄

    ? 昨天我們已經(jīng)把Mybatis框架的基本知識全部學完,內(nèi)容有Mybatis是一個半自動化的持久層ORM框架,深入學習編寫動態(tài)SQL,Mybatis的關聯(lián)映射,一對一、一對多、多對多、Mybatis的緩存機制,一二級緩存的開啟和設置,緩存命中率、如何使用idea鏈接數(shù)據(jù)庫自動生成pojo類等。我們學

    2024年02月10日
    瀏覽(29)
  • SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄(第三天)動態(tài)SQL

    SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄(第三天)動態(tài)SQL

    昨天我們深入學習了 Mybatis的核心對象SqlSessionFactoryBuilder , 掌握MyBatis核心配置文件以及元素的使用 ,也掌握MyBatis映射文件及其元素的使用。那么今天我們需要掌握的是更加復雜的查詢操作。 學會編寫MyBatis中動態(tài)SQL 學會MyBatis的條件查詢操作 學會MyBatis的更新操作 學會MyBati

    2024年02月11日
    瀏覽(30)
  • SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄(第一天)Mybatis的學習

    SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄(第一天)Mybatis的學習

    一、當前的主流框架介紹(這就是后期我會發(fā)出來的框架學習) Spring框架 ? Spring是一個開源框架,是為了解決企業(yè)應用程序開發(fā)復雜性而創(chuàng)建的 ,其主要優(yōu)勢之一就是分層架構(gòu)。 Spring提供了更完善的開發(fā)環(huán)境,可以為POJO(Plain Ordinary Java Object,普通Java對象 )對象提供企業(yè)級

    2024年02月12日
    瀏覽(57)
  • (第十一天)初識SpringMVC SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄

    (第十一天)初識SpringMVC SSM框架的學習與應用(Spring + Spring MVC + MyBatis)-Java EE企業(yè)級應用開發(fā)學習記錄

    今天我們要來學習一下SSM框架的最后一個框架SpringMVC 一、初認SpringMVC 基本概念: ? Spring MVC(Model-View-Controller)是一個用于構(gòu)建Java Web應用程序的開源框架,它提供了一種基于MVC架構(gòu)的方式來開發(fā)Web應用 。 ? SpringMVC是Spring Framework的一部分,它是一種基于模型-視圖-控制器(

    2024年02月07日
    瀏覽(54)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包