將需求拆解為基本技術(shù)的簡(jiǎn)單組合,再分別實(shí)現(xiàn)。

基本技能必須是足夠簡(jiǎn)單且容易理解的。對(duì)基本技能的組合,必須是嚴(yán)格相等于需求域的,不能有缺漏。一、基本技能基礎(chǔ)知識(shí)B/S(Browser/Ser" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > Java Web開(kāi)發(fā)教程——基本思路

Java Web開(kāi)發(fā)教程——基本思路

時(shí)間:2023-05-24 07:57:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-05-24 07:57:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)

Java Web開(kāi)發(fā)教程——基本思路:思路:

將需求拆解為基本技術(shù)的簡(jiǎn)單組合,再分別實(shí)現(xiàn)。

一、基本技能

基礎(chǔ)知識(shí)

B/S(Browser/Server),就是以瀏覽器作為用戶界面與用戶進(jìn)行交互,邏輯在服務(wù)器中進(jìn)行處理的項(xiàng)目架構(gòu)

所以B/S項(xiàng)目的基本形式就是:

Http基本流程

與C/S開(kāi)發(fā)不同,B/S項(xiàng)目開(kāi)發(fā)嚴(yán)格遵守“請(qǐng)求-》響應(yīng)”的循環(huán),任何一個(gè)需求的實(shí)現(xiàn),都要拆分成若干個(gè)“請(qǐng)求-》響應(yīng)”的流程組合。

每次“請(qǐng)求-》響應(yīng)”的基本流程如下:

前端請(qǐng)求怎樣發(fā)送

Http的請(qǐng)求,在簡(jiǎn)單項(xiàng)目應(yīng)用中,可視作包含以下幾部分:

先將需求的請(qǐng)求提交部分抽象為以上幾部分,即url是什么、用什么方法提交、包括什么參數(shù)。再用瀏覽器標(biāo)準(zhǔn)支持的形式實(shí)現(xiàn)。

瀏覽器提交請(qǐng)求的方式可包括以下幾種:

GET請(qǐng)求的參數(shù)將包含在url中,格式為

xxx.xx?param1=value1&param1=value2&param3=value3

表示將請(qǐng)求提交到xxx.xx,包含名稱為param1的兩個(gè)參數(shù)值和名稱為param3的一個(gè)參數(shù)值。

Http傳輸

Http傳輸是通常俗稱的前端和后端的分界線。

瀏覽器負(fù)責(zé)提交Http請(qǐng)求,通過(guò)網(wǎng)絡(luò)設(shè)備,將該請(qǐng)求提交給服務(wù)器。此部分一把不需要自行寫程序?qū)崿F(xiàn)。

可通過(guò)瀏覽器調(diào)試工具,查看Http傳輸?shù)膬?nèi)容。如Chrome點(diǎn)擊F12打開(kāi)的開(kāi)發(fā)工具,或Firefox下的firebugs。

對(duì)Http程序的調(diào)試,應(yīng)優(yōu)先關(guān)注傳輸部分。如果程序運(yùn)行有誤,先通過(guò)瀏覽器調(diào)試工具確定提交的請(qǐng)求是否與你預(yù)期的相符。如果相符,則基本確定問(wèn)題出現(xiàn)在后端,如果不相符,則基本確定問(wèn)題出現(xiàn)在前端。

后端路由

在項(xiàng)目采用的技術(shù)范疇下,可將服務(wù)器接收到Http請(qǐng)求開(kāi)始,直到將此請(qǐng)求傳遞給為了完成該請(qǐng)求而寫的邏輯處理單元(如Servlet、Struts的Action、SpringMvc的Controller等)為止,這其中的部分視作“路由”部分。

這部分主要解決的問(wèn)題是,怎樣根據(jù)Http請(qǐng)求的內(nèi)容,將該請(qǐng)求傳遞給正確的邏輯處理單元。

以Java Web項(xiàng)目為例:

請(qǐng)求發(fā)送到服務(wù)器后,根據(jù)請(qǐng)求url的端口決定交由哪個(gè)程序處理,一般會(huì)由tomcat或者netty等Java Web服務(wù)器監(jiān)聽(tīng)該端口。根據(jù)請(qǐng)求內(nèi)容,Java Web服務(wù)器會(huì)根據(jù)web.xml的配置,決定由哪些Servlet、Filter等參與處理,一般會(huì)將請(qǐng)求配置分發(fā)給Struts、Springmvc等框架。

框架會(huì)根據(jù)請(qǐng)求url中的內(nèi)容,以及符合該框架要求的配置信息,將請(qǐng)求分發(fā)給某個(gè)具體實(shí)現(xiàn)的Java類。此類為項(xiàng)目開(kāi)發(fā)人員編寫的,一般從這個(gè)步驟開(kāi)始,程序的控制權(quán)開(kāi)始由項(xiàng)目開(kāi)發(fā)人員的代碼控制。配置方式要解決的問(wèn)題,就是http請(qǐng)求與Java類的映射邏輯,比如“以.action結(jié)尾的并且.前面的部分是login的請(qǐng)求,與LoginAction匹配”。

后端處理——數(shù)據(jù)綁定部分

在控制權(quán)轉(zhuǎn)移到項(xiàng)目開(kāi)發(fā)人員自行編寫的特定代碼后,仍需要解決如何將http請(qǐng)求中的數(shù)據(jù)包裝為這些代碼可以利用的形式的問(wèn)題。

例如通過(guò)Java Web進(jìn)行開(kāi)發(fā),必須解決前端傳入的param1=value1這些參數(shù),如何在Java程序中使用的問(wèn)題。

不同的框架有不同的綁定方式,如Struts2的方式是在Action類中找到與參數(shù)名稱對(duì)應(yīng)的get函數(shù),如請(qǐng)求中有param1=value1,則框架會(huì)在該Action程序執(zhí)行之前,執(zhí)行setParam1(value1),那么我們可以在這個(gè)函數(shù)中將value1賦值給某個(gè)我們之后可以利用的變量,就可以在我們自己的代碼中使用了。

后端處理——邏輯部分

將前端的參數(shù)接收到之后,就可以使用當(dāng)前語(yǔ)言提供的方式,去做特定的邏輯處理。只要參數(shù)接收正確,那么這部分的處理與一般的簡(jiǎn)單Java程序沒(méi)有區(qū)別。

存取數(shù)據(jù)庫(kù)

業(yè)務(wù)類系統(tǒng)的重要部分就是對(duì)數(shù)據(jù)的持久化操作,大部分情況下都利用數(shù)據(jù)庫(kù)實(shí)現(xiàn)這一需求。

一般存取數(shù)據(jù)庫(kù)的基本方法都會(huì)在框架層面解決,在開(kāi)發(fā)之前需要了解這些基本方法,需要時(shí)直接調(diào)用即可。

Java開(kāi)發(fā)一般采用比較嚴(yán)格的Object-Relation-Mapping模式,即每張數(shù)據(jù)庫(kù)表都會(huì)有一個(gè)Java類對(duì)應(yīng)。大部分情況下,此Java類就是標(biāo)準(zhǔn)的Java Bean。因此,這個(gè)步驟需要具備的技術(shù)基礎(chǔ),就是要解決“給定一個(gè)Java Bean,怎樣保存到數(shù)據(jù)庫(kù)中,怎樣更新到數(shù)據(jù)庫(kù)中……”這一類的問(wèn)題

后端處理——視圖部分

后端的邏輯處理完成后,大部分情況會(huì)生成一個(gè)用戶界面,反饋給用戶。具體到B/S項(xiàng)目開(kāi)發(fā),就是要生成Html頁(yè)面以及配套的js、css等內(nèi)容。

js用于控制前端的邏輯,css用于控制前端樣式,這兩者一般都是靜態(tài)的內(nèi)容,大部分情況下也不會(huì)包含在需要邏輯處理的請(qǐng)求中,而是通過(guò)html中的script、link等標(biāo)簽,讓瀏覽器另外發(fā)送一個(gè)資源請(qǐng)求去獲取這些文件。

頁(yè)面顯示的內(nèi)容,通過(guò)html表示。而在邏輯處理完成后,通常情況下都會(huì)根據(jù)邏輯處理的結(jié)果,去動(dòng)態(tài)生成html內(nèi)容。用Java代碼生成html內(nèi)容的方式,將類似于:


1

2

3

4

5

print("&lt;html&gt;");<br data-mce-bogus="1">

print("&lt;body&gt;");<br data-mce-bogus="1">

print("&lt;h1&gt;" + title + "&lt;/h1&gt;");<br data-mce-bogus="1">

非常繁瑣。

因此,采用jsp的形式完成以上內(nèi)容。

jsp是一種語(yǔ)法類似于html,但支持動(dòng)態(tài)內(nèi)容生成語(yǔ)法的語(yǔ)言。servlet容器將會(huì)把jsp處理成html響應(yīng)給前端。

在這部分我們需要解決的問(wèn)題包括:

  1. 上一步的邏輯處理單元處理完成后,將控制流程轉(zhuǎn)移給哪個(gè)jsp。例如struts2中,將會(huì)通過(guò)配置view的方式,將Action函數(shù)的返回值與某個(gè)jsp文件對(duì)應(yīng)。在springmvc中,可以直接返回jsp路徑,也可以通過(guò)其它方式配置更復(fù)雜的對(duì)應(yīng)關(guān)系。
  2. 怎樣控制jsp生成html。jsp中類似于html的部分,將會(huì)直接生成同樣的html。包含動(dòng)態(tài)語(yǔ)法的部分,將會(huì)根據(jù)規(guī)則,計(jì)算出應(yīng)該生成的html。這個(gè)計(jì)算過(guò)程,一般會(huì)用到上一步邏輯處理單元的邏輯處理結(jié)果。例如
    邏輯處理單元中,根據(jù)前臺(tái)傳入的參數(shù),去數(shù)據(jù)庫(kù)中讀取了一個(gè)表示人員信息的對(duì)象,在jsp中就有對(duì)應(yīng)的方法去獲取這個(gè)對(duì)象的各項(xiàng)值,并使用。使用的方式最常見(jiàn)的是el表達(dá)式,另外也包含jsp標(biāo)簽等內(nèi)容。

生成html后,容器將負(fù)責(zé)將此內(nèi)容響應(yīng)給客戶端瀏覽器。

另外,也會(huì)有一些不生成html內(nèi)容的流程,如最近比較流行的restful api方案,就會(huì)返回一些特定格式的json。但其原理和基本流程是不變的,都是后端通過(guò)各種方式,生成各種格式的“字符串”。這些字符串都符合前端使用者(如瀏覽器)的某些規(guī)范,因此可以控制前端使用者的行為。

響應(yīng)

容器負(fù)責(zé)將處理結(jié)果以http相應(yīng)的方式發(fā)送給前端。此相應(yīng)一定是和之前的請(qǐng)求對(duì)應(yīng)的。此部分一般也不需要自己寫代碼負(fù)責(zé)。

前端顯示

如果是瀏覽器負(fù)責(zé)前端的顯示和交互,則一般會(huì)運(yùn)行html、js、css等幾類的文件。而這些文件,是后端生成后響應(yīng)給前端的。因此,后端通過(guò)上面提到的各種方式,控制這幾類文件生成后的內(nèi)容,再將這些內(nèi)容交給前端,從而控制前端的行為。

前面提到過(guò),在實(shí)際開(kāi)發(fā)中,js、css一般都是靜態(tài)文件,動(dòng)態(tài)生成的部分是html。動(dòng)態(tài)生成的技術(shù)主要是jsp。在編寫jsp的過(guò)程中,要能分析出各種情況下生成的html是什么樣子的,從而指導(dǎo)jsp文件的編寫。

在了解以上流程后,此部分需要解決的問(wèn)題就是,什么樣的html、js、css,會(huì)在瀏覽器上顯示出什么樣的內(nèi)容。

Html為“標(biāo)記性語(yǔ)言”,基本語(yǔ)法為“標(biāo)簽+屬性”。因此,編寫html的基本思路為:什么樣的需求對(duì)應(yīng)什么樣的標(biāo)簽,然后用什么樣的屬性去控制細(xì)節(jié)。一定不要背誦所有標(biāo)簽的含義,而是要理解這個(gè)思路,并且在用的時(shí)候查詢即可。

js是一門程序設(shè)計(jì)語(yǔ)言,與java類似,初期可以互相參考理解。但js的程序設(shè)計(jì)范式與java不同,因此在后期深入時(shí),要注意與類java語(yǔ)言的區(qū)別。另外,js初期的主要應(yīng)用目的是改變html的內(nèi)容,這部分主要對(duì)應(yīng)的知識(shí)是“js的dom操作”,即“通過(guò)什么樣的js可以改變某個(gè)標(biāo)簽的某項(xiàng)內(nèi)容”。

前端開(kāi)發(fā)的復(fù)雜之處在于,任何一項(xiàng)需求都有很多方式與之對(duì)應(yīng)。而選擇的方案如果不當(dāng),會(huì)在很久以后才會(huì)顯出弊端,增加了調(diào)整的成本。我認(rèn)為比較重點(diǎn)的原則之一是“語(yǔ)義化前端開(kāi)發(fā)”,即語(yǔ)言要與含義對(duì)應(yīng),例如想顯示一個(gè)表格,用table標(biāo)簽也可,用若干個(gè)div控制樣式也可,但從語(yǔ)義角度講,我們要一個(gè)表格,就一定要用table標(biāo)簽。

關(guān)鍵詞:基本,思路,教程

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉