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

【Java】Spring MVC程序開發(fā)

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

Spring MVC程序開發(fā)

1. 什么是Spring MVC?

Spring Web MVC是基于Servlet API構(gòu)建的原始Web框架,從一開始就包含在Spring框架中。它的正式名稱是“Spring Web MVC”來自其原模塊的名稱,但是它通常被稱為“Spring MVC”

從上述定義我們可以看到兩個信息:

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

然而要真正的搞懂Spring MVC?我們要先理解什么是MVC?

1.1 MVC定義

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

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

  • Model(模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)
  • View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的
  • Controller(控制器)是應(yīng)用程序處理用戶交互的部分。通??刂破髫?fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)

1.2 MVC 和 Spring MVC 的關(guān)系

MVC是一種思想,而Spring MVC是對MVC思想的具體實(shí)現(xiàn)

總結(jié)來說,Spring MVC是實(shí)現(xiàn)了一個MVC模式,并繼承了Servlet API的Web框架。既然是Web框架,那么用戶在瀏覽器當(dāng)中輸入U(xiǎn)RL之后,我們的Spring MVC項(xiàng)目就可以感知到用戶的請求

2. 為什么學(xué)習(xí)Spring MVC?

現(xiàn)在絕大部分的Java項(xiàng)目都是基于Spring或者是(Spring Boot)的,而Spring的核心是Spring MVC也就是說Spring MVC是Spring框架的一個核心模塊,而Spring Boot是Spring的腳手架。因此我們可以推斷出,現(xiàn)在市面上的絕大部分Java項(xiàng)目約等于Spring MVC項(xiàng)目,這就是學(xué)習(xí)它的原因

在創(chuàng)建Spring Boot項(xiàng)目的時候,我們勾選的Spring Web框架其實(shí)就是Spring MVC框架,

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

簡單來說,咱是所以要學(xué)習(xí)Spring MVC是因?yàn)樗且磺许?xiàng)目的基礎(chǔ),我們以后創(chuàng)建的Spring、Spring Boot項(xiàng)目都是基于Spring MVC的

3. 怎么學(xué)習(xí)Spring MVC?

學(xué)習(xí)Spring MVC我們只需要掌握3個功能:

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

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

Spring MVC項(xiàng)目創(chuàng)建和Spring Boot項(xiàng)目創(chuàng)建相同(Spring MVC 和Spring Boot的方式相同)在創(chuàng)建的時候選擇Spring Web就相當(dāng)于創(chuàng)建了Spring MVC項(xiàng)目

在Spring MVC當(dāng)中使用@RequestMapping來實(shí)現(xiàn)URL路由映射,也就是瀏覽器連接程序的作用

3.1.1 創(chuàng)建Spring MVC項(xiàng)目

創(chuàng)建Spring Boot項(xiàng)目的時候勾選上Spring Web模塊即可

@Controller
@RequestMapping("/user")
public class UserController {
    
    @RequestMapping("sayhi")
    @ResponseBody
    public String sayHi() {
        return "你好 世界";
    }
}

實(shí)現(xiàn)之后訪問地址:http://localhost:8080/user/sayhi就可以訪問了

3.1.2 @RequestMapping 注解介紹

@RequestMapping是Spring Web應(yīng)用程序當(dāng)中最常被用的注解之一,它是用來注冊接口的路由映射的

路由映射:所謂的路由映射指的是,當(dāng)用戶訪問一個URL時,將用戶的請求對應(yīng)到程序中某個類的某個方法的過程就叫做路由映射

@RequestMapping的基礎(chǔ)使用

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
@RequestMapping("/user")
public class UserController {

    @RequestMapping("sayhi")
    @ResponseBody
    public String sayHi() {
        return "你好 世界";
    }

    @ResponseBody
    @RequestMapping(method = RequestMethod.POST, value = "/sayhi2")
    public String sayHi2() {
        return "你好,世界";
    }
}

@RequestMapping既可以就是類,也可以修飾方法,當(dāng)修飾類和方法的時候,訪問的地址是類 + 方法

3.1.3 @RequestMapping是post 還是 get請求?

經(jīng)過測試之后,我們可以發(fā)現(xiàn)是都可以支持的

我們可以指定方法類型

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

3.1.4 @GetMapping 和 @PostMapping

三種實(shí)現(xiàn)方式:

@RequestMapping("sayhi")
@ResponseBody
public String sayHi() {
    return "你好 世界";
}

@ResponseBody
@RequestMapping(method = RequestMethod.POST, value = "/sayhi2")
public String sayHi2() {
    return "你好,世界";
}

@ResponseBody
@PostMapping("/sayhi3")
public String sayHi3() {
    return "你好,世界3 ";
}

3.2 獲取參數(shù)

3.2.1 傳遞單個參數(shù)

在Spring MVC中可以直接用方法中的參數(shù)來實(shí)現(xiàn)傳參,比如以下代碼

@ResponseBody
@RequestMapping("/getuserinfoid")
public UserInfo getUserInfoId(Integer id) {
    UserInfo userInfo = new UserInfo();
    userInfo.setId(id);
    userInfo.setName("張三");
    userInfo.setAge(18);
    userInfo.setPassword("1234");
    return userInfo;
}

訪問的結(jié)果是:

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

3.2.2 傳遞對象

Spring MVC可以自動實(shí)現(xiàn)參數(shù)對象的賦值

@ResponseBody
@RequestMapping("/reg")
public UserInfo reg(UserInfo userInfo) {
    return userInfo;
}
3.2.3 表單參數(shù)傳遞/傳遞多個參數(shù)
@ResponseBody
@RequestMapping("/login")
public String login(String name, String password) {
    return "name: " + name + "password: " + password;
}
3.2.4 后端參數(shù)重命名

某些情況下,前端傳遞的參數(shù)key和后端接收的key可以不一致

@ResponseBody
@RequestMapping("/login")
public String login(@RequestParam(name = "username")String name, String password) {
    return "name: " + name + "password: " + password;
}
3.2.5 設(shè)置參數(shù)必傳

默認(rèn)情況下,是必須要傳遞的,

我們可以設(shè)置成非必傳參數(shù)

如果我們的實(shí)際業(yè)務(wù)前端的參數(shù)是一個非必傳參數(shù),我們可以這樣操作

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

3.2.6 @RequestBody接收J(rèn)SON對象

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

如果沒有加上這一個注解,就會接收不到

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

3.2.7 獲取URL當(dāng)中的參數(shù)@PathVarible

代碼實(shí)現(xiàn):

@RequestMapping("/hero/{id}/{name}")
public String getHeroInfo(@PathVariable String id, @PathVariable String name) {
    return "id" + id + "name" + name;
}

地址填寫方法:

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

3.2.8 上傳文件@RequestPart
@RequestMapping("/upimg")
public boolean upImg(Integer uid, @RequestPart("img") MultipartFile file) {
    boolean result = false;
    String fileName = file.getOriginalFilename();// 得到圖片名字
    fileName = fileName.substring(fileName.lastIndexOf(".")); // 得到后綴
    fileName = UUID.randomUUID().toString() + fileName;
    try {
        file.transferTo(new File ("D://"));
        result = true;
    } catch (IOException e) {
        e.printStackTrace();
        log.error("上傳錯誤" + e.getMessage());
    }
    return result;
}
3.2.9 獲取Cookie/Session/header

獲取cookie:

@ResponseBody
@RequestMapping("/cookie")
public String getCookie(@CookieValue("bit") String bite) {
    return bite;
}

獲取header:

使用注解:@RequestHeader

Session的存儲和獲?。?/p>

Session的存儲我們只能使用傳統(tǒng)的方式,但是Session的獲取我們可以使用注解完成@SessionAttribute

3.3 返回?cái)?shù)據(jù)

3.3.1 返回靜態(tài)頁面

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

這時候如果要返回一個“hello.html”,這時候返回的是一個同名的頁面。所以我們在使用的時候都要加上一個注解ResponseBody

這里我們設(shè)置一個實(shí)用的技巧:熱部署

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot
創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

創(chuàng)建一個java的spring mvc應(yīng)用,# Spring,java,mvc,spring boot

3.3.2 請求轉(zhuǎn)發(fā)和請求重定向

forward VS redirect

return 不但可以返回一個視圖,還可以實(shí)現(xiàn)跳轉(zhuǎn),跳轉(zhuǎn)的方式有兩種:

  • forward 是請求轉(zhuǎn)發(fā)
  • redirect 請求重定向

“轉(zhuǎn)發(fā)”和“重定向”的理解:在中國官方發(fā)布的內(nèi)容越少事情越大,“轉(zhuǎn)發(fā)”和“重定向“也是一樣:字越少,責(zé)任越大。轉(zhuǎn)發(fā)是服務(wù)器幫忙轉(zhuǎn)發(fā)的,而重定向是讓瀏覽器重新請求另一個地址

具體區(qū)別如下:

  1. 請求重定向(redirect)將請求重新定位到資源;請求轉(zhuǎn)發(fā)(forward)服務(wù)器端轉(zhuǎn)發(fā)
  2. 請求重定向地址發(fā)生變化,請求轉(zhuǎn)發(fā)地址不發(fā)生變化
  3. 請求重定向與直接訪問新地址效果一致,不存在原來的外部資源不能訪問;請求轉(zhuǎn)發(fā)服務(wù)器端轉(zhuǎn)發(fā)有可能造成外部資源不能訪問
3.3.3 @ResponseBody說明

@ResponseBody返回的值如果是字符會變成text/html,如果是對象會轉(zhuǎn)成appllcation/json返回給前端

@ResponseBody可以用來修飾方法或者修飾類,修飾類表示類中的所有方法都會返回html或者JSON而不是視圖文章來源地址http://www.zghlxwxcb.cn/news/detail-793363.html

到了這里,關(guān)于【Java】Spring MVC程序開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Spring MVC程序開發(fā)

    Spring MVC程序開發(fā)

    目錄 1.什么是Spring MVC? 1.1MVC定義 1.2MVC和Spring MVC的關(guān)系 2.為什么要學(xué)習(xí)Spring MVC? 3.怎么學(xué)Spring MVC? 3.1Spring MVC的創(chuàng)建和連接 3.1.1創(chuàng)建Spring MVC項(xiàng)目 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 的關(guān)系 為什么要學(xué) Spring MVC? Spring MVC 項(xiàng)目的創(chuàng)建 學(xué)習(xí) Spring MVC 的 三個目標(biāo) Spring MVC項(xiàng)目的連接(用戶 和 程序 的 映射) 方法1:@RequestMapping(“/xx”) @RequestMapping 是 post 還是 get 請求? 總結(jié) 拓展 ?方法2 和 方法 3:@GetMapping??和

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

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

    2024年02月12日
    瀏覽(19)
  • Spring MVC程序開發(fā)(JavaEE進(jìn)階系列3)

    Spring MVC程序開發(fā)(JavaEE進(jìn)階系列3)

    目錄 前言: 1.什么是Spring?MVC 1.1MVC的定義 1.2MVC和Spring?MVC的關(guān)系 1.3為什么要學(xué)習(xí)Spring?MVC 2.Spring?MVC項(xiàng)目的創(chuàng)建 3.Spring?MVC框架的使用 3.1連接的功能 3.1.1@RequestMapping 3.1.2@GetMapping? 3.1.3@PostMapping 3.2獲取參數(shù)的功能 3.2.1獲取單個參數(shù) 3.2.2獲取對象 3.2.3上傳文件 3.2.4獲取Cookie 3.2

    2024年02月07日
    瀏覽(49)
  • Servlet | Servlet原理、開發(fā)第一個帶有Java小程序Servlet

    ?作者簡介:一位材料轉(zhuǎn)碼農(nóng)的選手,希望一起努力,一起進(jìn)步!? ??個人主頁:@每天都要敲代碼的個人主頁 ??系列專欄:Web后端 | Servlet 目錄 一:模擬實(shí)現(xiàn)Servlet 二:開發(fā)第一個帶有Java小程序Servlet【重點(diǎn)】 有了上一章節(jié)的分析,我們來模擬實(shí)現(xiàn)以下Servlet;下面先分析一

    2024年02月02日
    瀏覽(32)
  • Spring-2-深入理解Spring 注解依賴注入(DI):簡化Java應(yīng)用程序開發(fā)

    Spring-2-深入理解Spring 注解依賴注入(DI):簡化Java應(yīng)用程序開發(fā)

    ? 掌握純注解開發(fā)依賴注入(DI)模式 學(xué)習(xí)使用純注解進(jìn)行第三方Bean注入 問題導(dǎo)入 思考:如何使用注解方式將Bean對象注入到類中 1.1 使用@Autowired注解開啟自動裝配模式(按類型) 說明:不管是使用配置文件還是配置類,都必須進(jìn)行對應(yīng)的Spring注解包掃描才可以使用。@Autowired默

    2024年02月14日
    瀏覽(31)
  • Spring-1-深入理解Spring XML中的依賴注入(DI):簡化Java應(yīng)用程序開發(fā)

    Spring-1-深入理解Spring XML中的依賴注入(DI):簡化Java應(yīng)用程序開發(fā)

    前兩篇文章我們介紹了什么是Spring,以及Spring的一些核心概念,并且快速快發(fā)一個Spring項(xiàng)目,以及詳細(xì)講解IOC,今天詳細(xì)介紹一些DI(依賴注入) 能夠配置setter方式注入屬性值 能夠配置構(gòu)造方式注入屬性值 能夠理解什么是自動裝配 思考:向一個類中傳遞數(shù)據(jù)的方式有幾種?(給類

    2024年02月13日
    瀏覽(27)
  • java版+免費(fèi)商城搭建+小程序商城免費(fèi)搭建+Spring Cloud + Spring Boot + MybatisPlus + 前后端分離 + 二次開發(fā)

    java版+免費(fèi)商城搭建+小程序商城免費(fèi)搭建+Spring Cloud + Spring Boot + MybatisPlus + 前后端分離 + 二次開發(fā)

    ???J2EE企業(yè)分布式微服務(wù)云快速開發(fā)架構(gòu) Spring Cloud+Spring Boot2+Mybatis+Oauth2+ElementUI 前后端分離 1. 鴻鵠Cloud架構(gòu)清單 2. Commonservice(通用服務(wù)) 通用服務(wù):對spring Cloud組件的使用封裝,是一套完整的針對于分布式微服務(wù)云架構(gòu)的解決方案。如:注冊中心、配置中心、網(wǎng)關(guān)中心、

    2024年02月15日
    瀏覽(129)
  • [FPAG開發(fā)]使用Vivado創(chuàng)建第一個程序

    [FPAG開發(fā)]使用Vivado創(chuàng)建第一個程序

    選擇一個純英文路徑 選擇合適的型號 產(chǎn)品 型號 ZYNQ-7010 xc7z010clg400-1 ZYNQ-7020 xc7z010clg400-2 如果型號選錯,可以單擊這里重新選擇 可以看到文件創(chuàng)建成功 雙擊文件打開,插入代碼 設(shè)置字體和縮進(jìn) 軟件會生成一個原理圖 參數(shù) 類型 對應(yīng)的FPGA引腳 I/O std 備注 sys_clk IN U18 LVCMOS33 3

    2024年02月13日
    瀏覽(19)
  • 創(chuàng)建一個微信小程序——如何注冊賬號,安裝微信開發(fā)者工具,創(chuàng)建一個小程序(詳細(xì)步驟版)

    創(chuàng)建一個微信小程序——如何注冊賬號,安裝微信開發(fā)者工具,創(chuàng)建一個小程序(詳細(xì)步驟版)

    注冊地址 注冊地址:微信公眾平臺 注冊 右上角——【立即注冊】。 選擇【小程序】。 按照步驟完成注冊。 按照步驟激活郵箱后,在信息登記這里選擇個人。 填寫相關(guān)信息。 完成注冊。 這一步可以先保留,后續(xù)在創(chuàng)建小程序時會用到AppID——點(diǎn)擊【前往小程序】,復(fù)制A

    2024年02月06日
    瀏覽(166)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包