亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringMVC中的@RequestMapping注解的使用詳細(xì)教程

 更新時(shí)間:2023年07月21日 10:32:20   作者:從未止步..  
@RequestMapping注解的作用就是將請(qǐng)求和處理請(qǐng)求的控制器方法關(guān)聯(lián)起來(lái),建立映射關(guān)系,本文主要來(lái)和大家詳細(xì)講講它的具體使用,感興趣的可以了解一下

@RequestMapping注解的功能

從注解名稱(chēng)上我們可以看出,@RequestMapping注解的作用就是將請(qǐng)求和處理請(qǐng)求的控制器方法關(guān)聯(lián)起來(lái),建立映射關(guān)系,SpringMVC接收到指定的請(qǐng)求,就會(huì)來(lái)找到在映射關(guān)系中對(duì)應(yīng)的控制方法來(lái)處理這個(gè)請(qǐng)求。

@RequestMapping注解的位置

@RequestMapping標(biāo)識(shí)一個(gè)類(lèi):設(shè)置映射請(qǐng)求的請(qǐng)求路徑的初始信息

@RequestMapping標(biāo)識(shí)一個(gè)方法:設(shè)置映射請(qǐng)求,請(qǐng)求路徑的具體信息

如下所示:

當(dāng)前我們Protal方法的訪問(wèn)路徑是hello

package AnnotationController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ProtalController {
    @RequestMapping("/hello")
    public String Protal(){
        return "index";
    }
}

當(dāng)前的控制層,我們只給控制層中的Protal方法加上了@RequestMapping注解,而并沒(méi)有給該控制層的類(lèi)上加,因此我們可以直接通過(guò)Protal方法上的請(qǐng)求路徑訪問(wèn)。

假設(shè)我們此時(shí)也給類(lèi)加上@RequestMapping注解,訪問(wèn)地址不變化,如下所示:

@RequestMapping("test")
public class ProtalController {

訪問(wèn)結(jié)果如下所示,我們會(huì)發(fā)現(xiàn)當(dāng)前資源無(wú)法被找到

要想資源 被正確的訪問(wèn),我們需要進(jìn)行如下操作:

在路徑的具體信息之前添加路徑的初始信息,因?yàn)楫?dāng)在類(lèi)上添加了請(qǐng)求路徑的初始信息之后,我們想訪問(wèn)該類(lèi)中的某個(gè)方法,就必須先正確的訪問(wèn)到該類(lèi)。

而這樣做的目的在于,在實(shí)際開(kāi)發(fā)中,我們往往會(huì)給請(qǐng)求方法設(shè)置較為簡(jiǎn)單的路徑請(qǐng)求具體信息,例如查詢(xún)學(xué)生的方法,我們會(huì)將其請(qǐng)求路徑具體的信息設(shè)置select,刪除學(xué)生的方法,我們會(huì)將其我們會(huì)將其請(qǐng)求路徑具體的信息設(shè)置delete,而需求往往不是適合于一類(lèi)人而已,對(duì)于除學(xué)生以外的其他用戶(hù),都會(huì)有增刪的操作,這樣就導(dǎo)致了,系統(tǒng)也不知道該訪問(wèn)哪一個(gè),因此,我們需要在類(lèi)上添加請(qǐng)求路徑的初始化信息。

@RequestMapping注解value屬性值

我們通過(guò)查看@RequestMapping注解:

它的匹配方式有很多種,通過(guò)請(qǐng)求路徑,通過(guò)請(qǐng)求方法…,而比較常用的就是通過(guò)path和method

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package org.springframework.web.bind.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";
    @AliasFor("path")
    String[] value() default {};
    @AliasFor("value")
    String[] path() default {};
    RequestMethod[] method() default {};
    String[] params() default {};
    String[] headers() default {};
    String[] consumes() default {};
    String[] produces() default {};
}

@RequestMapping注解value屬性

通過(guò)查看源碼可知,value的類(lèi)型為String[],如下所示:

我們將@RequestMapping的值設(shè)置為多個(gè)

package AnnotationController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ProtalController {
	//當(dāng)匹配方式中只有value時(shí),value可以省略不寫(xiě)
    @RequestMapping({"/hello","/abc"})
    public String Protal(){
        return "index";
    }
}

那么我們是否可以根據(jù)數(shù)組中任意的一個(gè)值來(lái)訪問(wèn)到正確的資源呢?

我們將項(xiàng)目重新部署:

由此可知,@RequestMapping注解value屬性的作用是通過(guò)請(qǐng)求的請(qǐng)求路徑匹配請(qǐng)求,value屬性是數(shù)組類(lèi)型,即當(dāng)前瀏覽器所發(fā)送請(qǐng)求的請(qǐng)求路徑匹配value屬性中的任何一個(gè)值,則當(dāng)前請(qǐng)求就會(huì)被注解所標(biāo)識(shí)的方法進(jìn)行處理

@RequestMapping注解method屬性

通過(guò)查看源碼如下所示,我們知道m(xù)ethod屬性是ReuestMethod類(lèi)型的:

RequestMethod[] method() default {<!-- -->};

繼續(xù)跟進(jìn)查看ReuestMethod的源碼,如下所示:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package org.springframework.web.bind.annotation;
public enum RequestMethod {
    GET,
    HEAD,
    POST,
    PUT,
    PATCH,
    DELETE,
    OPTIONS,
    TRACE;
    private RequestMethod() {
    }
}

我們發(fā)現(xiàn)它是一個(gè)枚舉類(lèi)型,列舉了所有的請(qǐng)求方式,其中g(shù)et和post是我們已經(jīng)學(xué)過(guò)的,那么接下來(lái)我們就以post和get請(qǐng)求為例演示起作用。

創(chuàng)建實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的模塊

首頁(yè)請(qǐng)求控制器:

package AnnotationController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ProtalController {
    @RequestMapping("/")
    public String Protal(){
        return "index";
    }
}

跳轉(zhuǎn)頁(yè)面請(qǐng)求控制器

package AnnotationController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class JumpPageController {
  @RequestMapping(value = {"/hello","/abc"},method= RequestMethod.GET)
    public String Page(){
        return "success";
    }
}

index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首頁(yè)</title>
</head>
<body>
<h1>成功進(jìn)入首頁(yè)!</h1>
<a th:href="@{/hello}">測(cè)試@RequestMapping注解所標(biāo)識(shí)的位置</a><br>
<a th:href="@{/abc}">測(cè)試@RequestMapping注解的value屬性</a><br>
<form th:action="@{/hello}">
    <input type="submit" value="測(cè)試@RequestMapping注解的method屬性">
</form>
</body>
</html>

success.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>成功</title>
</head>
<body>
<h1>成功進(jìn)入!</h1>
</body>
</html>

此時(shí)運(yùn)行服務(wù)器,如下所示:

點(diǎn)擊其中的任何一個(gè)連接,都會(huì)出現(xiàn)如下字樣:

通過(guò)輸出結(jié)果,我們不難發(fā)現(xiàn)將@RequestMapping注解中的method屬性值設(shè)置為RequestMethod.GET,也就是匹配get請(qǐng)求的方式是沒(méi)有任何問(wèn)題的,那么如果我們將其匹配的是post還會(huì)如此嗎?

修改@RequestMapping注解中的method屬性值為RequestMethod.POST,再次運(yùn)行:

出現(xiàn)下述異常:

tomcat告訴我們是因?yàn)榉椒ú槐恢С?/p>

那為什么當(dāng)我們將將@RequestMapping注解中的method屬性值設(shè)置為RequestMethod.GET就能正確的處理請(qǐng)求?原因是:無(wú)論是超鏈接還是表單,默認(rèn)的提交方式都是get請(qǐng)求,因此當(dāng)我們沒(méi)有設(shè)置其值的情況情況下,默認(rèn)的就是get請(qǐng)求方式

我們可以將表單的提交方式設(shè)置為POST,這樣就可以處理POST請(qǐng)求了:

<form th:action="@{/hello}" method="post">
    <input type="submit" value="測(cè)試@RequestMapping注解的method屬性">
</form>

如下所示,通過(guò)method屬性,將其表單提交的方式設(shè)置為post

此時(shí)點(diǎn)擊該按鈕就可以成功的進(jìn)入success.html頁(yè)面啦

但是需要注意的是,如果我們把當(dāng)前可以訪問(wèn)成功的地址復(fù)制,直接在瀏覽器中訪問(wèn),如下所示:

還是出現(xiàn)了405錯(cuò)誤,原因是我們將地址復(fù)制直接通過(guò)地址欄訪問(wèn),實(shí)際上是get請(qǐng)求,但是我們又在注解中將其請(qǐng)求方法設(shè)置為post請(qǐng)求,由于未能匹配,所以出現(xiàn)了405錯(cuò)誤

通過(guò)查看它的源碼,我們得知其method是一個(gè)數(shù)組類(lèi)型的,那么我們就可以利用這一特性,讓它既能匹配get請(qǐng)求,又能匹配post請(qǐng)求,設(shè)置如下所示:

@RequestMapping(value = {"/hello","/abc"},method= {RequestMethod.POST,RequestMethod.GET})

此時(shí)我們刷新剛剛復(fù)制地址,而導(dǎo)致報(bào)錯(cuò)的頁(yè)面,就能成功訪問(wèn)啦,只要是get、post中的任意一個(gè)都能被成功訪問(wèn)

@RequestMapping注解的method屬性的作用是通過(guò)請(qǐng)求的請(qǐng)求方式匹配請(qǐng)求,它RequestMethod類(lèi)型的數(shù)組,即當(dāng)前瀏覽器所發(fā)送請(qǐng)求的請(qǐng)求方式匹配method屬性中的任何一個(gè)請(qǐng)求,如果匹配成功,那么當(dāng)前請(qǐng)求就會(huì)被注解所標(biāo)識(shí)的方法進(jìn)行處理,若瀏覽器所發(fā)送的請(qǐng)求的請(qǐng)求路徑和@RequestMapping注解value屬性匹配,但是請(qǐng)求方式不匹配,頁(yè)面會(huì)報(bào)錯(cuò),如下所示:

在@ResquestMapping的基礎(chǔ)上,結(jié)合請(qǐng)求方式的一些派生注解:

@GetMapping,@PostMapping,@DeleteMapping,@PutMapping,關(guān)于這些注解在后續(xù)的學(xué)習(xí)中會(huì)使用。

@RequestMapping注解params屬性

 String[] params() default {<!-- -->};

@RequestMapping注解params屬性的作用是通過(guò)請(qǐng)求的請(qǐng)求參數(shù)匹配請(qǐng)求,即瀏覽器發(fā)送的請(qǐng)求的請(qǐng)求參數(shù)必須滿足params屬性的設(shè)置,params可以使用四種表達(dá)式:

“param”:表示當(dāng)前所匹配請(qǐng)求的請(qǐng)求參數(shù)中必須攜帶param參數(shù)

測(cè)試如下所示:

在注解中,我們添加param屬性,并給定一個(gè)值為username

package AnnotationController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class JumpPageController {
    @RequestMapping(value = {"/hello","/abc"},
            method= {RequestMethod.POST,RequestMethod.GET}
    ,params = {"username"})
    public String Page(){
        return "success";
    }
}

再重新進(jìn)行項(xiàng)目的部署,點(diǎn)擊超鏈接或者表單中的按鈕,出現(xiàn)以下錯(cuò)誤:

原因是,我們?cè)谧⒔庵性O(shè)置了其參數(shù)的值,而在地址欄中并沒(méi)有該參數(shù)的值,所以會(huì)報(bào)錯(cuò)。

解決方法如下所示:

<!--以下兩種方式毫無(wú)區(qū)別,唯一的區(qū)別是第一種寫(xiě)法在源文件中會(huì)報(bào)錯(cuò),但是該報(bào)錯(cuò)不影響代碼的編譯和執(zhí)行 -->
<a th:href="@{/hello?username=admin}" >測(cè)試@RequestMapping注解的param屬性</a><br>
<a th:href="@{/hello(username='admin')}" >測(cè)試@RequestMapping注解的param屬性</a>

通過(guò)這種方式,瀏覽器會(huì)在地址欄自動(dòng)為我們添加其值,如下所示:

此時(shí)頁(yè)面也能被成功的訪問(wèn)到!

但需要注意的是,param屬性和method屬性以及value屬性可不一樣哦,當(dāng)我們將method屬性和value屬性中設(shè)置有多個(gè)值時(shí),只要能匹配到其中的任意一個(gè)即可,但是對(duì)于param屬性來(lái)說(shuō),如果設(shè)置的值有多個(gè)必須同時(shí)匹配,測(cè)試如下:

給param屬性值增加password,其他地方不做任何的變動(dòng)

@RequestMapping(value = {"/hello","/abc"},
            method= {RequestMethod.POST,RequestMethod.GET}
    ,params = {"username","password"})

測(cè)試結(jié)果如下所示:

此時(shí)報(bào)錯(cuò)原因依然為在注解中設(shè)置了Parma屬性值password,但是未能匹配到該值,所以出現(xiàn)錯(cuò)誤,解決方法有兩種,一種是我們?cè)趆tml文件中設(shè)置該參數(shù),由瀏覽器自動(dòng)為我們匹配,如下所示:

index.html:

<a th:href="@{/hello(username=${admin},password=${1234})}" >測(cè)試@RequestMapping注解的param屬性</a>
<a th:href="@{/hello(username='admin',password='12345')}">測(cè)試@RequestMapping注解的param屬性</a>

重新部署項(xiàng)目,運(yùn)行如下所示:

第二種方式是我們?cè)诘刂窓谕ㄟ^(guò)手動(dòng)添加缺失的參數(shù),如下所示:

也可以成功進(jìn)入到我們想訪問(wèn)的頁(yè)面!

“!param”:表示當(dāng)前所匹配請(qǐng)求的請(qǐng)求參數(shù)中一定不能攜帶param參數(shù)

假設(shè)此時(shí)我們將注解修改如下所示:

請(qǐng)求參數(shù)中不可以包含password,即使是只有password這個(gè)參數(shù),沒(méi)有值也不可以。

@RequestMapping(value = {"/hello","/abc"},
            method= {RequestMethod.POST,RequestMethod.GET}
    ,params = {"username","!password"})

重新部署項(xiàng)目如下所示,我們手動(dòng)在地址欄添加了password,雖然只是添加了該參數(shù)沒(méi)有給定具體的值,結(jié)果也報(bào)錯(cuò)了。

“param=value”:表示當(dāng)前所匹配請(qǐng)求的請(qǐng)求參數(shù)中必須攜帶param參數(shù)且值必須為value

假設(shè)此時(shí)我們將注解修改如下所示:

添加請(qǐng)求參數(shù),并將其值設(shè)置為20

@RequestMapping(value = {"/hello","/abc"},
            method= {RequestMethod.POST,RequestMethod.GET}
    ,params = {"username","!password","age=20"})

重新部署項(xiàng)目,如下所示,只有當(dāng)注解中的設(shè)置的所有請(qǐng)求參數(shù)都被滿足時(shí),該請(qǐng)求才能被正確處理

“param!=value”:表示當(dāng)前所匹配請(qǐng)求的請(qǐng)求參數(shù)中可以不攜帶param,若攜帶值一定不能是value

假設(shè)此時(shí)我們將注解修改如下所示:

添加新的請(qǐng)求參數(shù)gender,并設(shè)置其值不能為男

 @RequestMapping(value = {"/hello","/abc"},
            method= {RequestMethod.POST,RequestMethod.GET}
    ,params = {"username","!password","age=20","gender!=男"})

重新部署項(xiàng)目,測(cè)試如下所示:

手動(dòng)添加其參數(shù)的值,gender的值可以是除了男以外的任何值,當(dāng)然也可以不傳值,或者不手動(dòng)在地址欄添加該請(qǐng)求參數(shù)均可

@RequestMapping注解headers屬性

String[] headers() default {<!-- -->};

@RequestMapping注解的headers屬性通過(guò)請(qǐng)求的請(qǐng)求頭信息匹配請(qǐng)求映射,它是一個(gè)字符串類(lèi)型的數(shù)組,可以通過(guò)四種表達(dá)式設(shè)置請(qǐng)求頭信息和請(qǐng)求映射的匹配關(guān)系,如下所示:

"header":要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶header請(qǐng)求頭信息

"!header":要求請(qǐng)求映射所匹配的請(qǐng)求必須不能攜帶header請(qǐng)求頭信息

"header=value":要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶header請(qǐng)求頭信息且header=value

"header!=value":要求請(qǐng)求映射所匹配的請(qǐng)求必須攜帶header請(qǐng)求頭信息且header!=value

若當(dāng)前請(qǐng)求滿足@RequestMapping注解的value和method屬性,但是不滿足headers屬性,此時(shí)頁(yè)面顯示404錯(cuò)誤,即資源未找到

例如:我們可以通過(guò)設(shè)置headers的referer屬性來(lái)指明當(dāng)前資源的來(lái)源地址,如下所示:

@RequestMapping(value = {"/hello","/abc"},
            method= {RequestMethod.POST,RequestMethod.GET},headers = {"referer"})

重新部署項(xiàng)目,在瀏覽器中右擊打開(kāi)檢查,如下所示為我們?yōu)辄c(diǎn)擊該超鏈接的請(qǐng)求頭信息:

此時(shí)我們點(diǎn)擊該超鏈接,如下圖所示,與上圖不同之處在于多了一個(gè)Referer屬性,而該屬性的值即為該頁(yè)面的來(lái)源地址

注意:響應(yīng)頭和請(qǐng)求頭中的鍵不區(qū)分大小寫(xiě),但是其鍵值區(qū)分大小寫(xiě)

@RequestMapping注解使用ant風(fēng)格的路徑

?:表示任意的單個(gè)字符

舉例如下:

**第一步:**編寫(xiě)新的測(cè)試方法,并將其RequestMapping的值設(shè)置為/a?a/test/ant

package AnnotationController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class JumpPageController {
    @RequestMapping("/a?a/test/ant")
    public String testAnt(){
        return "success";
    }
}

第二步:在index.html中為其添加超鏈接

<a th:href="@{/aaa/test/ant}">測(cè)試@RequestMapping注解支持ant風(fēng)格的路徑</a><br>

將項(xiàng)目重新部署,測(cè)試結(jié)果如下:

點(diǎn)擊該超鏈接:

通過(guò)我們?cè)趇ndex.html文件中設(shè)置的路徑,此時(shí)資源被正確的訪問(wèn)到,既然?是代表一個(gè)任意的字符,那么我們可以將a和a中鍵的位置任意選擇一個(gè)符號(hào)來(lái)代替,可以是數(shù)字,可以是其他字母,當(dāng)然也可以是特殊字符,但是需要注意不能是英文的問(wèn)號(hào),中文的問(wèn)號(hào)是可以的,否則如下所示:

原因是**?前面是請(qǐng)求路徑,問(wèn)號(hào)后面是請(qǐng)求參數(shù)**,/a?a/test/ant并不會(huì)被當(dāng)做一個(gè)完整的請(qǐng)求路徑,其替代?的字符也不能是/,因?yàn)樗淼刂返姆指舴?,表示新的一層目?/strong>

*:表示任意的0個(gè)或多個(gè)字符

舉例如下:

此時(shí)我們將上述注解中的?替換為*,如下所示:

 @RequestMapping("/a*a/test/ant")

將項(xiàng)目重新部署后,刷新瀏覽器頁(yè)面如下所示:

無(wú)論是一個(gè)字符還是多個(gè)字符,都能成功的訪問(wèn)地址

而需要注意的是和?占位符相同,此時(shí)替代*的字符不可以是/或者?(英文),否則會(huì)出現(xiàn)404,原因和?的是相通的

**:表示任意層數(shù)的任意目錄

舉例如下:

將路徑中的具體信息修改為如下所示:

 @RequestMapping("/**/test/ant")

需要注意的是**只能寫(xiě)在//中,前后都不能有任何的字符。

錯(cuò)誤實(shí)例:

 @RequestMapping("/a**a/test/ant")
  @RequestMapping("/**a/test/ant")

重新部署項(xiàng)目,測(cè)試結(jié)果如下所示:

/**/所代表的的目錄我們既可以設(shè)置為一層,也可以設(shè)置為多層

但需要注意的是,即使可以設(shè)置任意層,但是目錄中依然不可以包含有英文的問(wèn)號(hào),否則如下所示:

注意:在使用**時(shí),只能使用/**/xxx的方式

@RequestMapping注解使用路徑中的占位符

通過(guò)路徑傳值的傳統(tǒng)方式為:

/deleteUser?id=1

下面我們要介紹一種簡(jiǎn)單的方式:需要在@RequestMapping注解的value屬性中所設(shè)置的路徑中,使用{xxx}的方式表示路徑中的數(shù)據(jù),在通過(guò)@PathVariable注解,將占位符所標(biāo)識(shí)的值和控制器方法的形參進(jìn)行綁定,具體操作如下所示:

第一步:編寫(xiě)對(duì)應(yīng)的控制器方法

package AnnotationController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class JumpPageController {
		//注意:有幾個(gè)參數(shù)需要寫(xiě)幾個(gè){xxx}{xxx}
    @RequestMapping("/test/rest/{username}/{id}")
    //@PathVariable注解的值必須與@RequestMapping注解路徑具體信息中的參數(shù)名稱(chēng)相一致,否則會(huì)出現(xiàn)500錯(cuò)誤
    public String testRest(@PathVariable("id") Integer id,@PathVariable("username") String  username){
    		//獲取對(duì)應(yīng)參數(shù)的值
        System.out.println("id:"+id+","+"username:"+username);
        return "success";
    }
}

第二步:在index.html文件中,設(shè)置其參數(shù)的具體值

注意這里值的順序應(yīng)與@RequestMapping注解中的參數(shù)順序保持一致,否則會(huì)因?yàn)轭?lèi)型不匹配導(dǎo)致出現(xiàn)400錯(cuò)誤

<a th:href="@{/test/rest/admin/1}">測(cè)試@RequestMapping注解value屬性中的占位符</a><br>

重新部署項(xiàng)目,測(cè)試結(jié)果如下:

在瀏覽器欄顯示了其參數(shù)的值

在控制臺(tái),也將對(duì)應(yīng)的參數(shù)信息顯示出來(lái)了

以上就是SpringMVC中的@RequestMapping注解的使用詳細(xì)教程的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC @RequestMapping注解的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot中EasyExcel實(shí)現(xiàn)Excel文件的導(dǎo)入導(dǎo)出

    SpringBoot中EasyExcel實(shí)現(xiàn)Excel文件的導(dǎo)入導(dǎo)出

    這篇文章主要介紹了SpringBoot中EasyExcel實(shí)現(xiàn)Excel文件的導(dǎo)入導(dǎo)出,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 教你如何使用Java實(shí)現(xiàn)WebSocket

    教你如何使用Java實(shí)現(xiàn)WebSocket

    這篇文章主要介紹了教你如何使用Java實(shí)現(xiàn)WebSocket問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Spring boot多線程配置方法

    Spring boot多線程配置方法

    這篇文章主要為大家詳細(xì)介紹了Spring boot多線程配置方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java實(shí)現(xiàn)對(duì)象排序的兩種方式詳解

    Java實(shí)現(xiàn)對(duì)象排序的兩種方式詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)對(duì)象排序的兩種方式詳解,在Java中經(jīng)常會(huì)涉及到對(duì)象數(shù)組的排序問(wèn)題,則就提到對(duì)象之間的比較問(wèn)題,今天我們就來(lái)看一下兩種不同排序方式之間的區(qū)別,需要的朋友可以參考下
    2023-09-09
  • 圖解Java線程的生命周期

    圖解Java線程的生命周期

    本文主要介紹了Java中線程的5種狀態(tài)(新建(New)、就緒(Runable)、運(yùn)行(Running)、阻塞(Blocked)和死亡(Dead))之間的轉(zhuǎn)換圖解,有需要的朋友可以參考下
    2014-10-10
  • JAVA 統(tǒng)計(jì)字符串中中文,英文,數(shù)字,空格,特殊字符的個(gè)數(shù)

    JAVA 統(tǒng)計(jì)字符串中中文,英文,數(shù)字,空格,特殊字符的個(gè)數(shù)

    這篇文章主要介紹了JAVA 統(tǒng)計(jì)字符串中中文,英文,數(shù)字,空格,特殊字符的個(gè)數(shù) ,本文通過(guò)一段代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • FeignClient如何通過(guò)配置變量調(diào)用配置文件url

    FeignClient如何通過(guò)配置變量調(diào)用配置文件url

    這篇文章主要介紹了FeignClient如何通過(guò)配置變量調(diào)用配置文件url,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 深入淺析 Spring Security 緩存請(qǐng)求問(wèn)題

    深入淺析 Spring Security 緩存請(qǐng)求問(wèn)題

    這篇文章主要介紹了 Spring Security 緩存請(qǐng)求問(wèn)題,本文通過(guò)實(shí)例文字相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-04-04
  • Java擴(kuò)展庫(kù)RxJava的基本結(jié)構(gòu)與適用場(chǎng)景小結(jié)

    Java擴(kuò)展庫(kù)RxJava的基本結(jié)構(gòu)與適用場(chǎng)景小結(jié)

    RxJava(GitHub: https://github.com/ReactiveX/RxJava)能夠幫助Java進(jìn)行異步與事務(wù)驅(qū)動(dòng)的程序編寫(xiě),這里我們來(lái)作一個(gè)Java擴(kuò)展庫(kù)RxJava的基本結(jié)構(gòu)與適用場(chǎng)景小結(jié),剛接觸RxJava的同學(xué)不妨看一下^^
    2016-06-06
  • 帶你了解Java中Static關(guān)鍵字的用法

    帶你了解Java中Static關(guān)鍵字的用法

    這篇文章主要介紹了JAVA Static關(guān)鍵字的用法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下,希望能給你帶來(lái)幫助
    2021-08-08

最新評(píng)論