struts2請(qǐng)求參數(shù) struts2的執(zhí)行過(guò)程
- 夕逆IT
- 數(shù)據(jù)庫(kù)
- 2023-08-13
- 143
很多朋友對(duì)于struts2請(qǐng)求參數(shù)和struts2的執(zhí)行過(guò)程不太懂,今天就由小編來(lái)為大家分享,希望可以幫助到大家,下面一起來(lái)看看吧!Java新手如何學(xué)習(xí)Spring、S...
很多朋友對(duì)于struts2請(qǐng)求參數(shù)和struts2的執(zhí)行過(guò)程不太懂,今天就由小編來(lái)為大家分享,希望可以幫助到大家,下面一起來(lái)看看吧!
Java新手如何學(xué)習(xí)Spring、Struts、Hibernate三大框架
學(xué)習(xí)Spring、Struts和Hibernate是很多初學(xué)者都會(huì)經(jīng)歷的階段,要掌握這三個(gè)框架首先要清楚這三個(gè)框架都分別解決了哪些問(wèn)題,同時(shí)要知道這三大常見(jiàn)框架的使用場(chǎng)景和框架的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。
下面我將分別跟頭條的朋友探討一下這三個(gè)框架的細(xì)節(jié),從它們分別能解決什么問(wèn)題入手,然后進(jìn)一步分析它們的組成結(jié)構(gòu)。
Java基礎(chǔ)知識(shí)準(zhǔn)備要開(kāi)始學(xué)習(xí)Spring、Struts和Hibernate這三個(gè)框架,需要做充足的Java基礎(chǔ)知識(shí)學(xué)習(xí),知道這些知識(shí)才能知道為什么需要使用這三個(gè)框架。下面列出學(xué)習(xí)三大框架之前的基礎(chǔ)知識(shí):
Java面向?qū)ο箝_(kāi)發(fā)基礎(chǔ)。這部分內(nèi)容包括類、對(duì)象、方法、屬性四大概念,以及封裝、繼承、多態(tài)三大特征的使用。要清晰面向?qū)ο蟮拈_(kāi)發(fā)過(guò)程:類的定義、對(duì)象的創(chuàng)建、方法的調(diào)用。
Java操作數(shù)據(jù)庫(kù)。這部分內(nèi)容包括Java如何與數(shù)據(jù)庫(kù)進(jìn)行溝通,如何通過(guò)java完成數(shù)據(jù)庫(kù)的增刪改查等基本操作。這部分內(nèi)容還包括如何使用預(yù)處理模式提高效率,如何使用CallableStatement完成存儲(chǔ)過(guò)程調(diào)用,以及如何使用數(shù)據(jù)庫(kù)連接池來(lái)優(yōu)化數(shù)據(jù)庫(kù)操作。當(dāng)然還要清楚使用DAO模式來(lái)規(guī)范化代碼結(jié)構(gòu),而這也為使用Hibernate打下了一定的基礎(chǔ)。
Javaweb開(kāi)發(fā)基礎(chǔ)。這部分內(nèi)容包括Servlet、JavaBean、JSP的開(kāi)發(fā)、調(diào)試、部署,清楚web開(kāi)發(fā)的范圍定義以及web容器的配置管理。要清楚webMVC結(jié)構(gòu),能使用Model2結(jié)構(gòu)進(jìn)行web程序開(kāi)發(fā),而這為使用Struts和Spring打下了基礎(chǔ)。
(如果這部分知識(shí)你還不太了解可以關(guān)注我,我在頭條上不斷更新關(guān)于java開(kāi)發(fā)的系列文章)為什么要使用Hibernate要清楚為什么使用Hibernate,首先要明白Java操作數(shù)據(jù)庫(kù)存在哪些問(wèn)題,這些問(wèn)題應(yīng)該怎么解決?為了描述這些問(wèn)題,首先我們看一下如何使用JDBC完成數(shù)據(jù)庫(kù)操作,我們看一個(gè)圖示:
這個(gè)圖示描述了Java通過(guò)JDBC(一個(gè)專門(mén)操作數(shù)據(jù)庫(kù)的JavaAPI)來(lái)操作各種數(shù)據(jù)庫(kù)的結(jié)構(gòu)圖,圖中Java代碼直接完成對(duì)數(shù)據(jù)庫(kù)的操作。接下來(lái)我們?cè)倏匆幌虏僮鞯脑韴D,也就是java操作數(shù)據(jù)庫(kù)的細(xì)節(jié)描述圖:
通過(guò)這張?jiān)韴D,我們可以清楚的看到j(luò)ava如何使用JDBC完成與數(shù)據(jù)庫(kù)的具體交互過(guò)程,使用JDBC操作數(shù)據(jù)是Java的官方標(biāo)準(zhǔn),在經(jīng)過(guò)不斷的更新后,目前的JDBC性能已經(jīng)得到了顯著的提高。
在具體開(kāi)發(fā)數(shù)據(jù)庫(kù)操作的時(shí)候,我們通常會(huì)采用DAO模式,使用DAO的目的是模塊化數(shù)據(jù)庫(kù)操作,方便團(tuán)隊(duì)之間的協(xié)同化開(kāi)發(fā),為了描述DAO,我們看一張圖示:
通過(guò)圖示我們能發(fā)現(xiàn),DAO位于業(yè)務(wù)層和數(shù)據(jù)庫(kù)的中間,可以說(shuō)它完成了一個(gè)映射的任務(wù)。這個(gè)映射就是從面向?qū)ο蟮腏ava代碼向面向關(guān)系的數(shù)據(jù)提供了一個(gè)映射,再簡(jiǎn)單點(diǎn)說(shuō)就是:DAO可以讓Java程序員以面向?qū)ο蟮姆绞讲僮髅嫦蜿P(guān)系的數(shù)據(jù)庫(kù)。
Hibernate的作用與DAO的作用是一樣的,就是完成這個(gè)映射層的創(chuàng)建,可以說(shuō)Hibernate是DAO的一個(gè)通用的實(shí)現(xiàn)。通過(guò)Hibernate程序員可以很方便的為程序創(chuàng)建與不同數(shù)據(jù)庫(kù)產(chǎn)品之間的映射,從而讓程序員從開(kāi)發(fā)DAO實(shí)現(xiàn)的細(xì)節(jié)工作中解放出來(lái),這就是為什么要使用Hibernate的原因。
學(xué)習(xí)Hibernate并不復(fù)雜,如果你已經(jīng)有過(guò)編寫(xiě)DAO實(shí)驗(yàn)的經(jīng)驗(yàn),那么使用Hibernate能讓你十分愉快,因?yàn)槟阍僖膊挥镁帉?xiě)麻煩的“封包”和“拆包”代碼了。
為什么要使用Struts和Spring為什么把Struts和Spring放在一起呢,因?yàn)樗鼈z關(guān)系密切(其實(shí)Spring完全可以獨(dú)立一站式解決問(wèn)題),放在一起解釋更加清晰。
在學(xué)習(xí)javaweb開(kāi)發(fā)的時(shí)候,會(huì)學(xué)習(xí)到如何使用基于MVC結(jié)構(gòu)的web開(kāi)發(fā),具體點(diǎn)就是使用Servlet+Javabean+JSP來(lái)完成Model2結(jié)構(gòu)的開(kāi)發(fā),結(jié)構(gòu)圖如下所示:
圖中完成了使用java代碼的方式來(lái)編寫(xiě)MVC結(jié)構(gòu)的程序,MVC的開(kāi)發(fā)模式是大家公認(rèn)的有效且經(jīng)典的開(kāi)發(fā)結(jié)構(gòu),目前基本上web開(kāi)發(fā)的標(biāo)準(zhǔn)配置。
但是在大家自己編寫(xiě)MVC結(jié)構(gòu)的時(shí)候,會(huì)比較麻煩(如果這部分內(nèi)容不清楚,關(guān)注我,我會(huì)在后續(xù)文章中詳細(xì)闡述如何使用java代碼完成mvc開(kāi)發(fā)),因?yàn)樗械膶?dǎo)航代碼都需要自己編寫(xiě),將來(lái)調(diào)整的時(shí)候也非常麻煩。Struts就很好的解決了這個(gè)問(wèn)題,程序員可以通過(guò)配置來(lái)完成程序的調(diào)整,節(jié)省了大量的編碼時(shí)間,也讓團(tuán)隊(duì)合作開(kāi)發(fā)變得更容易了。簡(jiǎn)單的說(shuō)Struts就是完成了程序MVC結(jié)構(gòu)的實(shí)現(xiàn)。
那么在上圖中,我們還會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,在web容器中還運(yùn)行著Model組件,而通常Model組件就是JavaBean組件。也就是說(shuō)web容器既提供了web組件的池功能,又提供了業(yè)務(wù)組件的池功能,這勢(shì)必會(huì)影響業(yè)務(wù)組件的運(yùn)行性能。為了解決這個(gè)問(wèn)題,出現(xiàn)了兩個(gè)陣營(yíng):官方標(biāo)準(zhǔn)采用了大名鼎鼎的EJB,解決方案如圖所示:
圖中清晰的呈現(xiàn)了EJBserver,已經(jīng)把業(yè)務(wù)模塊從web容器中剝離出來(lái)了。而另一個(gè)解決方案就是Spring,它也是池化業(yè)務(wù)模塊,只不過(guò)Spring更加輕量級(jí),所以得到了廣大程序員的喜愛(ài)。也就是從此,java開(kāi)發(fā)背上了“較重”的標(biāo)簽。但是EJB目前仍然有它自己的特點(diǎn),雖然重,但是功能也十分強(qiáng)大。
所以簡(jiǎn)單的說(shuō)就是Struts完成了MVC框架的實(shí)現(xiàn),Spring提供了業(yè)務(wù)模塊的輕量級(jí)容器。
學(xué)習(xí)步驟其實(shí)寫(xiě)到這,大家已經(jīng)清楚了學(xué)習(xí)的步驟,因?yàn)槲恼碌拿枋鲞^(guò)程就是一個(gè)順序的學(xué)習(xí)步驟。
在簡(jiǎn)單總結(jié)一下:
學(xué)習(xí)基礎(chǔ)開(kāi)發(fā)
學(xué)習(xí)數(shù)據(jù)庫(kù)開(kāi)發(fā)
學(xué)習(xí)web開(kāi)發(fā)
學(xué)習(xí)Hibernate
學(xué)習(xí)Struts
學(xué)習(xí)Spring
整合
建議多做實(shí)驗(yàn),也要經(jīng)常到三大框架的官網(wǎng)多看一看,如果應(yīng)用基礎(chǔ)好的讀者,可以到這幾個(gè)框架的官方社區(qū)多看看,社區(qū)里有很多能力很強(qiáng)的開(kāi)發(fā)者,跟他們交流一定能讓你受益匪淺。
如果大家覺(jué)得這篇文章幫助你了解這三大框架,那么請(qǐng)關(guān)注我,跟我一起學(xué)習(xí)java知識(shí),學(xué)習(xí)互聯(lián)網(wǎng)知識(shí)。
謝謝!
strus1和strus2的區(qū)別
struts1相對(duì)struts2小巧,與servlet和jsp耦合性較高,struts2是以xwork(WebWork)為核心,不是struts1的升級(jí)版,可以看成是xwork的升級(jí)版
什么是struts2的國(guó)際化信息標(biāo)簽
struts2的國(guó)際化,首先在struts2的國(guó)際化,我們應(yīng)必備的前提,首先如果我們要使用struts2的國(guó)際化,我們首先要在struts2中配置一個(gè)標(biāo)簽如:<constantname="struts.custom.i18n.resources"value="csdn"></constant>,這樣我們就能使用struts2中的國(guó)際化了,但是這個(gè)配置必須的是你在你的struts2配置環(huán)境能用的基礎(chǔ)上。
struts2配置中,param中為空什么意思。傳遞的是整個(gè)action對(duì)象嗎
struts2使用chain的方式會(huì)保留請(qǐng)求參數(shù)當(dāng)使用redirectAction時(shí),會(huì)發(fā)生重定向,參數(shù)會(huì)丟失,可以使用以下兩種方式傳遞參數(shù),兩種方法下目標(biāo)Action都必須有對(duì)應(yīng)屬性的getter,setter方法param方式:直接傳遞:從上面看出,在struts.xml里調(diào)用OGNL表達(dá)式并不是使用%{}而是使用${},這和EL表達(dá)式在JSP頁(yè)面中的用法一樣。
struts2 Action屬性值
在struts2中Action的屬性用來(lái)封裝請(qǐng)求參數(shù),可以是普通屬性也可以是對(duì)象模型,不管何種方式,問(wèn)題是:屬性的值是怎么賦值的?考察方式可以在Action中添加一個(gè)簡(jiǎn)單屬性,生成gettersetter方法,在setter方法中添加斷點(diǎn)可以跟蹤。Action的代碼如下:
ublicclassUserAction{
privateStringname;
publicUserAction(){
System.out.println("==創(chuàng)建UserAction對(duì)象=");
}
publicStringexecute(){
System.out.println("執(zhí)行execute方法...");
System.out.println("name========="+name);
return"success";
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;//在該行添加斷點(diǎn)調(diào)試運(yùn)行Tomcat
}
}
spring與struts2的區(qū)別。我覺(jué)得他們兩都是mvc框架阿,可是面試官說(shuō)不對(duì)
你確實(shí)錯(cuò)了,spring不是mvc框架。
spring是一個(gè)ioc/aop框架,它有一個(gè)mvc框架叫springmvc。springmvc是基于spring的mvc框架。
struts才是mvc框架,但一般搭配spring,利用spring的ioc功能來(lái)加強(qiáng)。
文章分享結(jié)束,struts2請(qǐng)求參數(shù)和struts2的執(zhí)行過(guò)程的答案你都知道了嗎?歡迎再次光臨本站哦!
本文鏈接:http://xinin56.com/su/2116.html