Java網(wǎng)絡(luò)通信中URL與HTTP編程技術(shù)詳解
一. 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¶m2=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)簽的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07SpringBoot中的@ConditionalOnMissingBean注解使用詳解
這篇文章主要介紹了SpringBoot中的@ConditionalOnMissingBean注解使用詳解,@ConditionalOnMissingBean作用在@Bean定義上,也就是說(shuō)在容器加載它作用的Bean時(shí),檢查容器中是否存在目標(biāo)類(lèi)型,需要的朋友可以參考下2024-01-01Java?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-04maven如何在tomcat8中實(shí)現(xiàn)自動(dòng)部署
本篇文章主要介紹了maven如何在tomcat8中實(shí)現(xiàn)自動(dòng)部署,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10MyBatis一次執(zhí)行多條SQL語(yǔ)句的操作
這篇文章主要介紹了MyBatis一次執(zhí)行多條SQL語(yǔ)句的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12Java獲取用戶(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-04JAVA 實(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-07SpringMvc配置靜態(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