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

Java網(wǎng)絡(luò)通信中URL與HTTP編程技術(shù)詳解

 更新時(shí)間:2023年11月24日 10:32:03   作者:一一哥Sun  
要想實(shí)現(xiàn)網(wǎng)絡(luò)編程,除了可以使用Socket之外,我們還可以利用URL編程或HTTP編程技術(shù),所以今天這篇文章,就給大家介紹一下URL編程和HTTP編程技術(shù),看看這兩種技術(shù)有什么特點(diǎn),文中有詳細(xì)的代碼講解,需要的朋友可以參考下

一. URL簡(jiǎn)介

要想搞清楚URL編程,我們得先來(lái)看看什么是URL,所以先來(lái)給大家介紹一下URL的概念。

1. 概念

URL(Uniform Resource Locator,統(tǒng)一資源定位符) ,主要用于標(biāo)識(shí)和定位互聯(lián)網(wǎng)上的資源,例如網(wǎng)頁(yè)、圖片、音頻、視頻等。通過(guò)URL,我們可以向服務(wù)器發(fā)送請(qǐng)求,獲取需要的資源。

2. 組成

一個(gè)URL可以由多個(gè)部分組成,包括協(xié)議、主機(jī)名、路徑和查詢(xún)參數(shù)等。常見(jiàn)的URL格式如下所示:

#基本組成
protocol://host:port/path?query

#例如
http://www.qfedu.com:80/login.html?username=syc

其中,各部分含義如下所示:

  • protocol:協(xié)議部分,可以是HTTP、FTP等;
  • host:主機(jī)名或IP地址,例如 www.mobiletrain.org;
  • port:端口號(hào),例如80、8080等;
  • path:路徑,用于標(biāo)識(shí)具體的資源位置,例如/index.html;
  • query:查詢(xún)參數(shù),用于傳遞具體的參數(shù)給服務(wù)器,例如?key1=value1&key2=value2。

了解了URL的含義之后,我們就可以開(kāi)始進(jìn)行URL編程了。

二. URL編程

1. 簡(jiǎn)介

URL編程也是Java中用于訪問(wèn)互聯(lián)網(wǎng)資源的一種標(biāo)準(zhǔn)化方式。通過(guò)URL編程,我們可以基于HTTP、FTP等協(xié)議,方便地獲取網(wǎng)頁(yè)、圖片、音頻、視頻等資源。

另外我們也可以通過(guò)URL編程中的URLConnection、HttpURLConnection等類(lèi),向Web服務(wù)器或HTTP服務(wù)器發(fā)送請(qǐng)求,來(lái)建立與Web或HTTP服務(wù)器的連接,發(fā)送GET或POST請(qǐng)求,并讀取服務(wù)器返回的響應(yīng)信息。

接下來(lái)給大家分別介紹一下URL、URLConnection等與URL編程相關(guān)的核心類(lèi)。

2. URL類(lèi)

要實(shí)現(xiàn)URL編程,首先我們得使用java.net.URL類(lèi)來(lái)創(chuàng)建一個(gè)URL對(duì)象,然后使用該對(duì)象來(lái)獲取指定資源的輸入流。

URL類(lèi)給我們提供了多個(gè)構(gòu)造方法,其中最常用的是使用URL字符串來(lái)創(chuàng)建URL對(duì)象。例如,以下代碼就是通過(guò)URL字符串來(lái)創(chuàng)建一個(gè)URL對(duì)象:

URL url = new URL("<www.mobiletrain.org>");

利用這個(gè)URL對(duì)象,我們可以進(jìn)一步使用openStream()方法來(lái)獲取指定資源的輸入流。例如,以下代碼就獲取了指定資源的輸入流:

InputStream input = url.openStream();

在實(shí)際應(yīng)用中,我們可以使用BufferedReader等類(lèi)來(lái)處理輸入流。

3. URLConnection類(lèi)

3.1 簡(jiǎn)介

Java.net.URLConnection是負(fù)責(zé)與HTTP服務(wù)器建立連接的通用類(lèi),它給我們提供了一些方法可以向服務(wù)器發(fā)送請(qǐng)求并讀取服務(wù)器的響應(yīng)。比如,setRequestProperty()方法可以用于設(shè)置請(qǐng)求頭信息,setDoOutput()方法可以用于指示是否向服務(wù)器發(fā)送請(qǐng)求體等。另外URLConnection還是HttpURLConnection的父類(lèi),但與之不同的是,URLConnection還額外支持FTP、Gopher等協(xié)議。

從實(shí)現(xiàn)原理上來(lái)說(shuō),URLConnection類(lèi)主要是通過(guò)創(chuàng)建一個(gè)連接對(duì)象,然后使用這個(gè)連接對(duì)象向服務(wù)器發(fā)送請(qǐng)求并讀取服務(wù)器的響應(yīng)。而在創(chuàng)建連接對(duì)象時(shí), URLConnection會(huì)根據(jù)指定的URL自動(dòng)選擇合適的網(wǎng)絡(luò)協(xié)議。在連接對(duì)象創(chuàng)建成功后,我們可以使用connect()方法連接到服務(wù)器。當(dāng)連接成功后,我們就可以使用getInputStream()方法來(lái)獲取服務(wù)器返回的輸入流,然后使用這個(gè)輸入流讀取服務(wù)器的響應(yīng)結(jié)果。

3.2 基本使用

接下來(lái)再給大家介紹一下URLConnection類(lèi)的基本使用步驟。URLConnection的使用,整體可以分為發(fā)起請(qǐng)求和獲取響應(yīng)兩個(gè)步驟,所以接下來(lái)我也是按這種思路給大家進(jìn)行介紹。

我們首先得創(chuàng)建一個(gè)URLConnection對(duì)象,代碼如下:

//大家可以選擇一個(gè)合適的url網(wǎng)址
URL url = new URL("<www.mobiletrain.org>");
//獲取連接對(duì)象
URLConnection conn = url.openConnection();

獲取了URLConnection對(duì)象之后,我們就可以向服務(wù)器發(fā)起請(qǐng)求了,代碼如下:

//指示是否向服務(wù)器發(fā)送請(qǐng)求體
conn.setDoOutput(true);
//通過(guò)輸出流,向服務(wù)器發(fā)送請(qǐng)求參數(shù)或請(qǐng)求體
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write("param1=value1&param2=value2");
writer.flush();
writer.close();

在向服務(wù)器發(fā)送了請(qǐng)求之后,如果我們想得到服務(wù)器返回來(lái)的響應(yīng)信息,可以使用如下方法:

//獲得服務(wù)器返回的響應(yīng)流
InputStream input = conn.getInputStream();

然后我們就可以對(duì)這個(gè)響應(yīng)流進(jìn)行操作,得到具體的內(nèi)容,例如下面的代碼:

BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line = null;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}

當(dāng)然,服務(wù)器返回來(lái)的信息不一定就是文本信息,也有可能是音頻、視頻、文件等內(nèi)容,此時(shí)如果使用字符流就不合適了。我們也可以把InputStream轉(zhuǎn)換為字節(jié)流進(jìn)行操作,通過(guò)字節(jié)得到合適的文件格式。

二. HTTP編程

其實(shí)HTTP編程與URL編程非常類(lèi)似,兩者的使用基本一致,也是要通過(guò)java.net包中的API來(lái)實(shí)現(xiàn),比如URL類(lèi)和HttpURLConnection、HttpClient等類(lèi)。其中URL類(lèi)我們已經(jīng)在前面講解過(guò),接下來(lái)我們?cè)倭私庖幌翲ttpURLConnection類(lèi)和HttpClient類(lèi)的相關(guān)內(nèi)容吧。

1. HttpURLConnection類(lèi)

1.1 簡(jiǎn)介

HttpURLConnection繼承自URLConnection類(lèi),該類(lèi)也是用于與HTTP服務(wù)器建立連接的類(lèi)。它提供了一些方法,可以讓我們來(lái)發(fā)送HTTP請(qǐng)求并讀取服務(wù)器的響應(yīng)。

我們知道,URLConnection類(lèi)是所有URL協(xié)議的通用父類(lèi),它提供了一些通用的方法來(lái)建立與服務(wù)器的連接,發(fā)送請(qǐng)求并讀取服務(wù)器的響應(yīng)。但如果我們想要更多的HTTP功能,就可以使用HttpURLConnection類(lèi),否則可以使用URLConnection類(lèi)。

1.2 基本使用

接下來(lái)也把HttpURLConnection的使用步驟給大家展示一下。

如果我們要使用HttpURLConnection,首先得創(chuàng)建一個(gè)URL對(duì)象,然后調(diào)用該對(duì)象的openConnection()方法來(lái)強(qiáng)制轉(zhuǎn)換得到一個(gè)HttpURLConnection對(duì)象。代碼示例如下:

URL url = new URL("<www.mobiletrain.org>");
//強(qiáng)制類(lèi)型轉(zhuǎn)換
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

在得到連接對(duì)象之后,我們就可以發(fā)送HTTP請(qǐng)求了。而在發(fā)送HTTP請(qǐng)求之前,我們需要設(shè)置使用的HTTP請(qǐng)求方法。HttpURLConnection類(lèi)支持HTTP協(xié)議中的各種請(qǐng)求方法,例如GET、POST、PUT等,我們可以使用setRequestMethod()方法進(jìn)行設(shè)置,代碼如下:

conn.setRequestMethod("GET");

接下來(lái)在發(fā)送HTTP請(qǐng)求時(shí),可以設(shè)置一些更具體的HTTP請(qǐng)求頭,例如Content-Type、User-Agent等。而要設(shè)置HTTP請(qǐng)求頭,我們可以使用setRequestProperty()方法。比如我們想請(qǐng)求json格式的內(nèi)容,就可以設(shè)置如下代碼:

conn.setRequestProperty("Content-Type", "application/json");

然后我們就可以獲取服務(wù)器的響應(yīng)結(jié)果了,比如使用BufferedReader等IO流來(lái)處理輸入流。代碼如下所示:

BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line = null;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}

以上就是使用HttpURLConnection類(lèi)發(fā)送HTTP請(qǐng)求并讀取服務(wù)器響應(yīng)的基本步驟。大家可以看到,HttpURLConnection的使用與URLConnection的用法幾乎一樣,只是在設(shè)置請(qǐng)求方法處有所差別。

1.3 其他設(shè)置

但是我們?cè)趯?shí)際應(yīng)用中,還要注意異常的處理、設(shè)置連接的超時(shí)時(shí)間、發(fā)送POST請(qǐng)求等問(wèn)題。

我們?cè)谑褂肏ttpURLConnection類(lèi)發(fā)送HTTP請(qǐng)求時(shí),可能會(huì)發(fā)生各種異常,例如網(wǎng)絡(luò)連接異常、服務(wù)器返回錯(cuò)誤等。所以為了保證程序的健壯性,我們必須對(duì)異常進(jìn)行適當(dāng)?shù)奶幚?。代碼如下所示:

try {
    URL url = new URL("<www.mobiletrain.org>");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    InputStream input = conn.getInputStream();
} catch (IOException e) {
    e.printStackTrace();
}

另外我們?cè)谑褂肏ttpURLConnection類(lèi)發(fā)送HTTP請(qǐng)求時(shí),可能會(huì)因?yàn)榫W(wǎng)絡(luò)原因等導(dǎo)致連接超時(shí)。為了避免連接超時(shí)的情況,可以通過(guò)setConnectTimeout()方法來(lái)設(shè)置連接超時(shí)時(shí)間。以下代碼設(shè)置連接超時(shí)時(shí)間為5秒:

conn.setConnectTimeout(5000);

1.4 發(fā)送POST請(qǐng)求

在前面的案例中,給大家講解了如何發(fā)送GET請(qǐng)求。實(shí)際上,GET請(qǐng)求和POST請(qǐng)求是不太一樣的。POST請(qǐng)求比GET請(qǐng)求能夠攜帶更多的數(shù)據(jù),也更安全。

如果我們要發(fā)送POST請(qǐng)求,可以使用setRequestMethod()方法,并將請(qǐng)求方法設(shè)置為POST。然后使用setDoOutput()方法打開(kāi)輸出流,并將數(shù)據(jù)寫(xiě)入輸出流。代碼如下所示:

try {
    URL url = new URL("<www.mobiletrain.org>");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    //設(shè)置post請(qǐng)求
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
    //傳遞請(qǐng)求參數(shù)
    writer.write("username=john&password=123456");
    writer.flush();
    writer.close();
    //獲取響應(yīng)結(jié)果
    InputStream input = conn.getInputStream();
    ......
    ......
} catch (IOException e) {
    e.printStackTrace();
}

以上就是HttpURLConnection類(lèi)的基本使用步驟了,大家會(huì)發(fā)現(xiàn),其實(shí)該類(lèi)與URLConnection的用法基本大同小異,并沒(méi)有額外的難度。

1.5 綜合案例--下載文件

接下來(lái)就編寫(xiě)一個(gè)案例,利用HttpURLConnection來(lái)下載一個(gè)網(wǎng)絡(luò)圖片到F盤(pán)中。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.http.client.ClientProtocolException;

/**
 * @author 一一哥Sun
 * @company 千鋒教育
 */
public class Demo03 {

	public static void main(String[] args) throws ClientProtocolException, IOException {
		//創(chuàng)建一個(gè)URL對(duì)象,關(guān)聯(lián)圖片地址
		URL url = new URL("http://www.mobiletrain.org/images/index/new_logo.png"); 
		//得到一個(gè)HttpURLConnection對(duì)象
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		//設(shè)置請(qǐng)求方法
		connection.setRequestMethod("GET");
		//得到響應(yīng)結(jié)果
		InputStream inputStream = connection.getInputStream();
		//創(chuàng)建文件
		File file=new File("F://logo.png");
		//利用IO流輸出內(nèi)容到文件中
		FileOutputStream outputStream = new FileOutputStream(file); 
		byte[] buffer = new byte[1024];
		int bytesRead;
		while ((bytesRead = inputStream.read(buffer)) != -1) {
		    outputStream.write(buffer, 0, bytesRead);
		}
		//關(guān)閉資源
		outputStream.close();
		inputStream.close();
		//關(guān)閉連接
		connection.disconnect();
	}
}

在這個(gè)案例中,大家記得要把文件的路徑盤(pán)符設(shè)置成自己的,不一定要和我的一樣。而且我們不僅可以下載一個(gè)圖片,也可以下載任意格式的文件,你可以根據(jù)小編的代碼試試哦。

2. HttpClient類(lèi)

2.1 簡(jiǎn)介

HttpClient是Apache軟件基金會(huì)中提供的用于發(fā)送HTTP請(qǐng)求的開(kāi)源框架,它提供了比HttpURLConnection更加簡(jiǎn)單、靈活、可靠的請(qǐng)求方式,使用起來(lái)更加的方便。我們經(jīng)常使用HttpClient構(gòu)建HTTP客戶(hù)端程序,比如在Android移動(dòng)端中請(qǐng)求Web服務(wù)器的接口。

HttpClient作為一個(gè)優(yōu)秀的開(kāi)源框架,具有如下特點(diǎn):

  • 支持HTTP/1.1和HTTP/2協(xié)議;
  • 支持同步和異步請(qǐng)求;
  • 支持連接池和連接復(fù)用;
  • 支持自定義的連接超時(shí)時(shí)間和請(qǐng)求超時(shí)時(shí)間;
  • 支持自定義的請(qǐng)求頭和響應(yīng)頭;
  • 支持自定義的Cookie管理和認(rèn)證方式;
  • 支持代理服務(wù)器和SSL/TLS安全協(xié)議。

2.2 基本使用

HttpClient框架給我們提供了HttpGet和HttpPost類(lèi),分別表示GET和POST請(qǐng)求。通過(guò)這些類(lèi),我們可以設(shè)置請(qǐng)求頭、請(qǐng)求參數(shù)、請(qǐng)求體等信息,并可以獲取服務(wù)器的響應(yīng)結(jié)果。另外HttpClient還給我們提供了一些其他的功能,比如連接池、請(qǐng)求重試、狀態(tài)管理等。接下來(lái)就給大家說(shuō)一下HttpClient的基本開(kāi)發(fā)步驟。

因?yàn)镠ttpClient是Apache中的開(kāi)源項(xiàng)目,所以Java源碼中并沒(méi)有自帶該類(lèi),如果我們想在Java項(xiàng)目中使用HttpClient,需要先導(dǎo)入HttpClient的依賴(lài)包。關(guān)于導(dǎo)入依賴(lài)包,以后我們可以使用Maven或Gradle進(jìn)行導(dǎo)入,以后也會(huì)開(kāi)辟專(zhuān)門(mén)的Maven專(zhuān)欄,歡迎大家持續(xù)關(guān)注哦。但現(xiàn)在我們還不具備這些知識(shí),所以可以提前把HttpClient的jar包下載下來(lái),然后手動(dòng)導(dǎo)入到Java項(xiàng)目中。有了jar包之后,接下來(lái)就是基本的開(kāi)發(fā)步驟了。

首先我們要?jiǎng)?chuàng)建一個(gè)HttpClient對(duì)象,代碼如下:

CloseableHttpClient client = HttpClients.createDefault();

然后再創(chuàng)建一個(gè)Http請(qǐng)求對(duì)象,如果想發(fā)起Get請(qǐng)求就創(chuàng)建HttpGet對(duì)象,想發(fā)起Post請(qǐng)求就創(chuàng)建HttpPost對(duì)象,代碼如下所示:

HttpGet request = new HttpGet(url);

然后利用創(chuàng)建好的請(qǐng)求對(duì)象來(lái)設(shè)置請(qǐng)求頭,代碼如下:

request.setHeader("Content-Type", "application/json");

接下來(lái)我們就可以利用HttpClient對(duì)象,發(fā)送請(qǐng)求并獲取響應(yīng)對(duì)象了,代碼如下所示:

CloseableHttpResponse response = client.execute(request);

接著我們就可以處理響應(yīng)數(shù)據(jù)了,代碼如下所示:

HttpEntity entity = response.getEntity();
String content = EntityUtils.toString(entity);

最后要關(guān)閉響應(yīng)對(duì)象和HttpClient對(duì)象。

response.close();
client.close();

2.3 綜合案例--請(qǐng)求json

小編設(shè)計(jì)了一個(gè)通過(guò)Get請(qǐng)求獲取json接口的案例,但在編寫(xiě)代碼之前,我們需要提前導(dǎo)入HttpClient的依賴(lài)包,如下圖所示:

導(dǎo)入了依賴(lài)包之后,我們就可以進(jìn)行代碼實(shí)現(xiàn)了。

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * @author 一一哥Sun
 * @company 千鋒教育
 */
public class Demo02 {

	public static void main(String[] args) throws ClientProtocolException, IOException {
		//這是一個(gè)json接口地址
        String url = "https://json.tewx.cn/json/API_kdd531mytfdzm06i?sdAS1dsnuUa3sd=190001&Jsdh4bajs99dii=sohpuisypf4nfaei";
		//創(chuàng)建一個(gè)HttpClient對(duì)象
		CloseableHttpClient client = HttpClients.createDefault();
        //創(chuàng)建一個(gè)Get請(qǐng)求對(duì)象
        HttpGet request = new HttpGet(url);
        //設(shè)置請(qǐng)求頭
        request.setHeader("Content-Type", "application/json");
        //執(zhí)行請(qǐng)求,獲取響應(yīng)結(jié)果
        CloseableHttpResponse response = client.execute(request);
        //得到響應(yīng)體
        HttpEntity entity = response.getEntity();
        //將響應(yīng)結(jié)果轉(zhuǎn)為字符串
        String content = EntityUtils.toString(entity);
        System.out.println(content);
	}
}

以上幾行代碼,我們就可以把網(wǎng)上的JSON接口內(nèi)容請(qǐng)求下來(lái),如下圖所示:

其實(shí)利用HttpURLConnection也可以實(shí)現(xiàn)這樣的效果,兩者的功能都是相似的,但兩者之間也有一些區(qū)別。

3. HttpURLConnection與HttpClient的區(qū)別

HttpURLConnection是Java標(biāo)準(zhǔn)庫(kù)中用于發(fā)送HTTP請(qǐng)求的類(lèi)。它提供了一些方法用來(lái)建立與HTTP服務(wù)器的連接、設(shè)置HTTP請(qǐng)求方法、設(shè)置HTTP請(qǐng)求頭、發(fā)送請(qǐng)求、獲取服務(wù)器的響應(yīng)等。該類(lèi)使用起來(lái)比較麻煩,但能夠滿(mǎn)足基本的HTTP請(qǐng)求需求。

HttpClient是一種用于發(fā)送HTTP請(qǐng)求的開(kāi)源框架,它提供了更加簡(jiǎn)單、靈活、可靠的HTTP請(qǐng)求方式,使用起來(lái)比Java標(biāo)準(zhǔn)庫(kù)中的HttpURLConnection更加方便。

所以如果我們只是想要進(jìn)行較為簡(jiǎn)單的HTTP請(qǐng)求,可以使用HttpURLConnection;如果需要實(shí)現(xiàn)更復(fù)雜的HTTP請(qǐng)求,則推薦使用HttpClient。

三. 結(jié)語(yǔ)

至此,就給大家講解了URL編程和HTTP編程,你學(xué)會(huì)了嗎?其實(shí)無(wú)論我們是進(jìn)行URL編程,還是進(jìn)行HTTP編程,這兩者的實(shí)現(xiàn)過(guò)程其實(shí)很相似,但在進(jìn)行實(shí)現(xiàn)的時(shí)候,我們需要注意以下事項(xiàng):

  • 在URL編程中,我們必須確保URL是一個(gè)正確的地址,否則可能會(huì)導(dǎo)致URL編程失??;
  • 在HttpURLConnection編程中,必須確保正確地設(shè)置HTTP請(qǐng)求頭,否則也可能會(huì)導(dǎo)致服務(wù)器無(wú)法正確地處理請(qǐng)求;
  • 在URLConnection編程中,必須要正確地處理HTTP響應(yīng)頭,否則可能會(huì)導(dǎo)致無(wú)法正確地讀取響應(yīng)結(jié)果;
  • 另外在實(shí)際應(yīng)用中,我們還要處理各種異常和錯(cuò)誤,以確保程序的正確性和穩(wěn)定性。

總之,URL編程和HTTP編程都是Java中用于訪問(wèn)互聯(lián)網(wǎng)資源的標(biāo)準(zhǔn)化方式,Java給我們提供了URL類(lèi)、HttpURLConnection類(lèi)和URLConnection類(lèi)來(lái)實(shí)現(xiàn)。我們只要在實(shí)際應(yīng)用中,注意URL字符串的處理、HTTP請(qǐng)求頭的設(shè)置、HTTP響應(yīng)頭的處理以及異常和錯(cuò)誤的處理,進(jìn)行這些開(kāi)發(fā)并不難。

以上就是Java網(wǎng)絡(luò)通信中URL與HTTP編程技術(shù)詳解的詳細(xì)內(nèi)容,更多關(guān)于Java URL與HTTP編程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mybatis配置之properties和settings標(biāo)簽的用法

    Mybatis配置之properties和settings標(biāo)簽的用法

    這篇文章主要介紹了Mybatis配置之properties和settings標(biāo)簽的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot中的@ConditionalOnMissingBean注解使用詳解

    SpringBoot中的@ConditionalOnMissingBean注解使用詳解

    這篇文章主要介紹了SpringBoot中的@ConditionalOnMissingBean注解使用詳解,@ConditionalOnMissingBean作用在@Bean定義上,也就是說(shuō)在容器加載它作用的Bean時(shí),檢查容器中是否存在目標(biāo)類(lèi)型,需要的朋友可以參考下
    2024-01-01
  • Java?Web中ServletContext對(duì)象詳解與應(yīng)用

    Java?Web中ServletContext對(duì)象詳解與應(yīng)用

    ServletContext是一個(gè)容器,可以用來(lái)存放變量,供一個(gè)web項(xiàng)目中多個(gè)Servlet共享,下面這篇文章主要給大家介紹了關(guān)于Java?Web中ServletContext對(duì)象詳解與應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • @Validated驗(yàn)證List集合的方法示例

    @Validated驗(yàn)證List集合的方法示例

    這篇文章主要介紹了@Validated驗(yàn)證List集合的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • maven如何在tomcat8中實(shí)現(xiàn)自動(dòng)部署

    maven如何在tomcat8中實(shí)現(xiàn)自動(dòng)部署

    本篇文章主要介紹了maven如何在tomcat8中實(shí)現(xiàn)自動(dòng)部署,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • MyBatis一次執(zhí)行多條SQL語(yǔ)句的操作

    MyBatis一次執(zhí)行多條SQL語(yǔ)句的操作

    這篇文章主要介紹了MyBatis一次執(zhí)行多條SQL語(yǔ)句的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Java獲取用戶(hù)訪問(wèn)IP及地理位置的方法詳解

    Java獲取用戶(hù)訪問(wèn)IP及地理位置的方法詳解

    這篇文章主要介紹了Java獲取用戶(hù)訪問(wèn)IP及地理位置的方法,結(jié)合實(shí)例形式詳細(xì)分析了Java基于百度地圖開(kāi)放平臺(tái)獲取用戶(hù)訪問(wèn)IP及地理位置相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04
  • JAVA 實(shí)現(xiàn)二叉樹(shù)(鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu))

    JAVA 實(shí)現(xiàn)二叉樹(shù)(鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu))

    本篇文章主要介紹用JAVA 實(shí)現(xiàn)二叉樹(shù),并提供實(shí)例.對(duì)二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)很好的學(xué)習(xí)實(shí)踐,有需要的朋友可以參考下
    2016-07-07
  • SpringMvc配置靜態(tài)資源訪問(wèn)路徑的實(shí)現(xiàn)

    SpringMvc配置靜態(tài)資源訪問(wèn)路徑的實(shí)現(xiàn)

    本文主要介紹了SpringMvc配置靜態(tài)資源訪問(wèn)路徑的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java并發(fā)編程之volatile變量介紹

    Java并發(fā)編程之volatile變量介紹

    這篇文章主要介紹了Java并發(fā)編程之volatile變量介紹,volatile提供了弱同步機(jī)制,用來(lái)確保將變量更新通知到其它線(xiàn)程,需要的朋友可以參考下
    2015-04-04

最新評(píng)論