編程經(jīng)驗(yàn)系列Java學(xué)習(xí)雜談(九):Struts
時(shí)間:2008-10-06 16:56:00 來(lái)源:無(wú)憂考網(wǎng) [字體:小 中 大]
J2ee的開源框架很多,筆者只能介紹自己熟悉的幾個(gè),其他的目前在中國(guó)IT行業(yè)應(yīng)用得不是很多。希望大家對(duì)新出的框架不要盲目的推崇,首先一定要熟悉它比舊的到底好在哪里,新的理念和特性是什么?然后再?zèng)Q定是否要使用它。
這期的主題是Struts,直譯過來(lái)是支架。Struts的第一個(gè)版本是在2001年5月發(fā)布的,它提供了一個(gè)Web應(yīng)用的解決方案,如何讓Jsp和 servlet共存去提供清晰的分離視圖和業(yè)務(wù)應(yīng)用邏輯的架構(gòu)。在Struts之前,通常的做法是在Jsp中加入業(yè)務(wù)邏輯,或者在Servlet中生成視圖轉(zhuǎn)發(fā)到前臺(tái)去。Struts帶著MVC的新理念當(dāng)時(shí)退出幾乎成為業(yè)界公認(rèn)的Web應(yīng)用標(biāo)準(zhǔn),于是當(dāng)代IT市場(chǎng)上也出現(xiàn)了眾多熟悉Struts的程序員。即使有新的框架再出來(lái)不用,而繼續(xù)用Struts的理由也加上了一條低風(fēng)險(xiǎn),因?yàn)橹型救绻_發(fā)人員變動(dòng),很容易的招進(jìn)新的會(huì)Struts的IT民工啊, ^_^!
筆者之前說的都是Struts-1,因?yàn)樾鲁隽薙truts-2,使得每次談到Struts都必須注明它是Struts-1還是2.筆者先談比較熟悉的 Struts-1,下次再介紹一下與Struts-2的區(qū)別:
1. Struts框架整體結(jié)構(gòu)
Struts-1的核心功能是前端控制器,程序員需要關(guān)注的是后端控制器。前端控制器是是一個(gè)Servlet,在Web.xml中間配置所有 Request都必須經(jīng)過前端控制器,它的名字是ActionServlet,由框架來(lái)實(shí)現(xiàn)和管理。所有的視圖和業(yè)務(wù)邏輯隔離都是應(yīng)為這個(gè) ActionServlet, 它就像一個(gè)交通警察,所有過往的車輛必須經(jīng)過它的法眼,然后被送往特定的通道。所有,對(duì)它的理解就是分發(fā)器,我們也可以叫做Dispatcher,其實(shí)了解Servlet編程的人自己也可以寫一個(gè)分發(fā)器,加上攔截request的Filter,其實(shí)自己實(shí)現(xiàn)一個(gè)struts框架并不是很難。主要目的就是讓編寫視圖的和后臺(tái)邏輯的可以脫離緊耦合,各自同步的完成自己的工作?BR> 那么有了ActionServlet在中間負(fù)責(zé)轉(zhuǎn)發(fā),前端的視圖比如說是Jsp,只需要把所有的數(shù)據(jù)Submit,這些數(shù)據(jù)就會(huì)到達(dá)適合處理它的后端控制器Action,然后在里面進(jìn)行處理,處理完畢之后轉(zhuǎn)發(fā)到前臺(tái)的同一個(gè)或者不同的視圖Jsp中間,返回前臺(tái)利用的也是Servlet里面的forward 和redirect兩種方式。所以到目前為止,一切都只是借用了Servlet的API搭建起了一個(gè)方便的框架而已。這也是Struts最顯著的特性?? 控制器。
那么另外一個(gè)特性,可以說也是Struts-1帶來(lái)的一個(gè)比較成功的理念,就是以xml配置代替硬編碼配置信息。以往決定Jsp往哪個(gè)servlet提交,是要寫進(jìn)Jsp代碼中的,也就是說一旦這個(gè)提交路徑要改,我們必須改寫代碼再重新編譯。而Struts提出來(lái)的思路是,編碼的只是一個(gè)邏輯名字,它對(duì)應(yīng)哪個(gè)class文件寫進(jìn)了xml配置文件中,這個(gè)配置文件記錄著所有的映射關(guān)系,一旦需要改變路徑,改變xml文件比改變代碼要容易得多。這個(gè)理念可以說相當(dāng)成功,以致于后來(lái)的框架都延續(xù)著這個(gè)思路,xml所起的作用也越來(lái)越大。
大致上來(lái)說Struts當(dāng)初給我們帶來(lái)的新鮮感就這么多了,其他的所有特性都是基于方便的控制轉(zhuǎn)發(fā)和可擴(kuò)展的xml配置的基礎(chǔ)之上來(lái)完成它們的功能的。
下面將分別介紹Action和FormBean, 這兩個(gè)是Struts中最核心的兩個(gè)組件。
這期的主題是Struts,直譯過來(lái)是支架。Struts的第一個(gè)版本是在2001年5月發(fā)布的,它提供了一個(gè)Web應(yīng)用的解決方案,如何讓Jsp和 servlet共存去提供清晰的分離視圖和業(yè)務(wù)應(yīng)用邏輯的架構(gòu)。在Struts之前,通常的做法是在Jsp中加入業(yè)務(wù)邏輯,或者在Servlet中生成視圖轉(zhuǎn)發(fā)到前臺(tái)去。Struts帶著MVC的新理念當(dāng)時(shí)退出幾乎成為業(yè)界公認(rèn)的Web應(yīng)用標(biāo)準(zhǔn),于是當(dāng)代IT市場(chǎng)上也出現(xiàn)了眾多熟悉Struts的程序員。即使有新的框架再出來(lái)不用,而繼續(xù)用Struts的理由也加上了一條低風(fēng)險(xiǎn),因?yàn)橹型救绻_發(fā)人員變動(dòng),很容易的招進(jìn)新的會(huì)Struts的IT民工啊, ^_^!
筆者之前說的都是Struts-1,因?yàn)樾鲁隽薙truts-2,使得每次談到Struts都必須注明它是Struts-1還是2.筆者先談比較熟悉的 Struts-1,下次再介紹一下與Struts-2的區(qū)別:
1. Struts框架整體結(jié)構(gòu)
Struts-1的核心功能是前端控制器,程序員需要關(guān)注的是后端控制器。前端控制器是是一個(gè)Servlet,在Web.xml中間配置所有 Request都必須經(jīng)過前端控制器,它的名字是ActionServlet,由框架來(lái)實(shí)現(xiàn)和管理。所有的視圖和業(yè)務(wù)邏輯隔離都是應(yīng)為這個(gè) ActionServlet, 它就像一個(gè)交通警察,所有過往的車輛必須經(jīng)過它的法眼,然后被送往特定的通道。所有,對(duì)它的理解就是分發(fā)器,我們也可以叫做Dispatcher,其實(shí)了解Servlet編程的人自己也可以寫一個(gè)分發(fā)器,加上攔截request的Filter,其實(shí)自己實(shí)現(xiàn)一個(gè)struts框架并不是很難。主要目的就是讓編寫視圖的和后臺(tái)邏輯的可以脫離緊耦合,各自同步的完成自己的工作?BR> 那么有了ActionServlet在中間負(fù)責(zé)轉(zhuǎn)發(fā),前端的視圖比如說是Jsp,只需要把所有的數(shù)據(jù)Submit,這些數(shù)據(jù)就會(huì)到達(dá)適合處理它的后端控制器Action,然后在里面進(jìn)行處理,處理完畢之后轉(zhuǎn)發(fā)到前臺(tái)的同一個(gè)或者不同的視圖Jsp中間,返回前臺(tái)利用的也是Servlet里面的forward 和redirect兩種方式。所以到目前為止,一切都只是借用了Servlet的API搭建起了一個(gè)方便的框架而已。這也是Struts最顯著的特性?? 控制器。
那么另外一個(gè)特性,可以說也是Struts-1帶來(lái)的一個(gè)比較成功的理念,就是以xml配置代替硬編碼配置信息。以往決定Jsp往哪個(gè)servlet提交,是要寫進(jìn)Jsp代碼中的,也就是說一旦這個(gè)提交路徑要改,我們必須改寫代碼再重新編譯。而Struts提出來(lái)的思路是,編碼的只是一個(gè)邏輯名字,它對(duì)應(yīng)哪個(gè)class文件寫進(jìn)了xml配置文件中,這個(gè)配置文件記錄著所有的映射關(guān)系,一旦需要改變路徑,改變xml文件比改變代碼要容易得多。這個(gè)理念可以說相當(dāng)成功,以致于后來(lái)的框架都延續(xù)著這個(gè)思路,xml所起的作用也越來(lái)越大。
大致上來(lái)說Struts當(dāng)初給我們帶來(lái)的新鮮感就這么多了,其他的所有特性都是基于方便的控制轉(zhuǎn)發(fā)和可擴(kuò)展的xml配置的基礎(chǔ)之上來(lái)完成它們的功能的。
下面將分別介紹Action和FormBean, 這兩個(gè)是Struts中最核心的兩個(gè)組件。
- 2009年9月全國(guó)計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師考試真題及答案
- 2009年3月全國(guó)計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師考試真題及答案
- 2008年9月全國(guó)計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師考試真題及答案
- 2008年4月全國(guó)計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師考試真題及答案
- 2011年3月全國(guó)計(jì)算機(jī)二級(jí)Java考試真題及答案
- 2010年9月全國(guó)計(jì)算機(jī)二級(jí)Java考試真題及答案
- 查看計(jì)算機(jī)等級(jí)考試全部真題>>
- 2023年12月上海計(jì)算機(jī)一級(jí)成績(jī)查詢?nèi)肟冢ㄒ验_通
- 2024年3月江西計(jì)算機(jī)二級(jí)報(bào)名時(shí)間及報(bào)名入口(2
- 2024年3月湖北計(jì)算機(jī)二級(jí)報(bào)名時(shí)間及報(bào)名入口(2
- 2024年3月山東計(jì)算機(jī)二級(jí)報(bào)名時(shí)間及報(bào)名入口(2
- 2024年3月四川計(jì)算機(jī)二級(jí)報(bào)名時(shí)間及報(bào)名入口(2
- 2024年3月安徽計(jì)算機(jī)二級(jí)報(bào)名時(shí)間及報(bào)名入口(2
- 2024年3月河南計(jì)算機(jī)二級(jí)報(bào)名時(shí)間及報(bào)名入口(2
- 2024年3月河南計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間:2024