struts2安裝包是一款采用MVC設(shè)計(jì)模式的Web框架,我們可以通過(guò)這款軟件來(lái)進(jìn)行Web開(kāi)發(fā)。如果你是一名Web開(kāi)發(fā)人員,那么就可以直接通過(guò)Struts2完整版來(lái)建立模型,同時(shí)還可以用來(lái)進(jìn)行視圖的數(shù)據(jù)交互。這款軟件的功能比起原先的Struts1有了非常明顯的進(jìn)步。
Struts2是一個(gè)基于MVC設(shè)計(jì)模式的Web應(yīng)用框架,它本質(zhì)上相當(dāng)于一個(gè)servlet,在MVC設(shè)計(jì)模式中,Struts2作為控制器(Controller)來(lái)建立模型與視圖的數(shù)據(jù)交互。Struts 2是Struts的下一代產(chǎn)品,是在 struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大。Struts 2以WebWork為核心,采用攔截器的機(jī)制來(lái)處理用戶的請(qǐng)求,這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開(kāi),所以Struts 2可以理解為WebWork的更新產(chǎn)品。雖然從Struts 1到Struts 2有著太大的變化,但是相對(duì)于WebWork,Struts 2的變化很小。
在Action的實(shí)現(xiàn)方面
Struts1要求必須統(tǒng)一擴(kuò)展自Action類,而Struts2中可以是一個(gè)POJO。
線程模型方面
Struts1的Action是單實(shí)例的,一個(gè)Action的實(shí)例處理所有的請(qǐng)求。Struts 2的Action是一個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)實(shí)例(每次請(qǐng)求時(shí)都新new出一個(gè)對(duì)象),沒(méi)有線程安全方面的問(wèn)題。
Servlet依賴方面
Struts1的Action依賴于Servlet API,比如Action的execute方法的參數(shù)就包括request和response對(duì)象。這使程序難于測(cè)試。Struts2中的Action不再依賴于Servlet API,有利于測(cè)試,并且實(shí)現(xiàn)TDD。
封裝請(qǐng)求參數(shù)
Struts1中強(qiáng)制使用ActionForm對(duì)象封裝請(qǐng)求的參數(shù)。Struts2可以選擇使用POJO類來(lái)封裝請(qǐng)求的參數(shù),或者直接使用Action的屬性。
表達(dá)式語(yǔ)言方面
Struts1中整合了EL,但是EL對(duì)集合和索引的支持不強(qiáng),Struts2整合了OGNL(Object Graph NavigationLanguage)。
綁定值到視圖技術(shù)
Struts1使用標(biāo)準(zhǔn)的JSP,Struts2使用“ValueStack”技術(shù)。
類型轉(zhuǎn)換
Struts1中的ActionForm基本使用String類型的屬性。Struts2中使用OGNL進(jìn)行轉(zhuǎn)換,可以更方便的使用。
Struts1中支持覆蓋validate方法或者使用Validator框架。Struts2支持重寫(xiě)validate方法或者使用XWork的驗(yàn)證框架。
Action執(zhí)行控制的對(duì)比
Struts1支持每一個(gè)模塊對(duì)應(yīng)一個(gè)請(qǐng)求處理,但是模塊中的所有Action必須共享相同的生命周期。Struts2支持通過(guò)攔截器堆棧為每一個(gè)Action創(chuàng)建不同的生命周期。
漏洞情況分析:
Struts2 是第二代基于Model-View-Controller (MVC)模型的java企業(yè)級(jí)web應(yīng)用框架。它是WebWork和Struts社區(qū)合并后的產(chǎn)物。攻擊者可以利用Struts應(yīng)用框架的命令執(zhí)行漏洞,執(zhí)行惡意Java代碼,最終導(dǎo)致網(wǎng)站數(shù)據(jù)被竊取、網(wǎng)頁(yè)被篡改等嚴(yán)重后果。具體分析情況如下:
1、 Apache Struts遠(yuǎn)程命令執(zhí)行漏洞
由于Apache Struts2的action:、redirect:和redirectAction:前綴參數(shù)在實(shí)現(xiàn)其功能的過(guò)程中使用了Ognl表達(dá)式,并將用戶通過(guò)URL提交的內(nèi)容拼接入Ognl表達(dá)式中,從而造成攻擊者可以通過(guò)構(gòu)造惡意URL來(lái)執(zhí)行任意Java代碼,進(jìn)而可執(zhí)行任意命令。
2、 Apache Struts開(kāi)放重定向漏洞
Apache Struts 2DefaultActionMapper在處理短路徑重定向參數(shù)前綴"redirect:"或"redirectAction:"時(shí)存在開(kāi)放重定向漏洞,允許遠(yuǎn)程攻擊者利用漏洞操作"redirect:"或"redirectAction:"后的信息,重定向URL到任意位置。
漏洞影響評(píng)估:
CNVD對(duì)遠(yuǎn)程命令執(zhí)行漏洞(CNVD-2013-28972)和開(kāi)放重定向漏洞(CNVD-2013-28979)的評(píng)級(jí)為“高危”,由于redirect:和redirectAction:此兩項(xiàng)前綴為Struts默認(rèn)開(kāi)啟功能,因此ApacheStruts 2.3.15.1以下版本受到漏洞影響。該漏洞與在2012年對(duì)我國(guó)境內(nèi)政府和重要信息系統(tǒng)部門、企事業(yè)單位網(wǎng)站造成嚴(yán)重威脅的漏洞(編號(hào):CNVD-2013-25061,對(duì)應(yīng)CVE-2013-1966)相比,技術(shù)評(píng)級(jí)相同且受影響版本更多。
漏洞處置建議:
廠商已經(jīng)發(fā)布Apache Struts 2.3.15.1以修復(fù)此安全漏洞,建議Struts用戶及時(shí)升級(jí)到最新版本。
下載struts2,需要用到的是full distribution,根據(jù)需要也可以下載諸如文檔doc和源代碼source等。
安裝tomcat或其他服務(wù)器,安裝Eclipse或其他JAVA編譯環(huán)境,將Struts2解壓并記錄下解壓的路徑。
在MyEclipse中配置服務(wù)器,此處以tomcat為例,進(jìn)入MyEclipse,工具欄中選擇windows,然后選擇preference,然后選擇MyEclipse->Servers->Tomcat,然后選擇對(duì)應(yīng)的Tomcat版本你你對(duì)應(yīng)的安裝地址。
在MyEclipse中配置jdk,依次選擇window –> preferences – >java – >installed jres,如果沒(méi)有對(duì)應(yīng)的JDK(不是JRE),選擇add,選擇standard VM -> next,選擇JDK對(duì)應(yīng)的Directory。
建立Struts2程序,首先找到struts目錄下對(duì)應(yīng)的apps目錄,解壓struts2-blank-2.1.6.war,Copy對(duì)應(yīng)的lib的jar文件,需要除junit和spring-test之外的所有文件,其中commons-io的jar包會(huì)在文件上傳和下載時(shí)需要,其他為必須。在struts.xml中照原配置根據(jù)自己的需要進(jìn)行對(duì)應(yīng)的配置。
如何手動(dòng)配置Struts2項(xiàng)目?
首先新建一個(gè)web project,這里就以這個(gè)項(xiàng)目為例,項(xiàng)目名起為test。
解壓你下載好的struts2文件,找到里面的Apps——struts2-blank.war文件。
復(fù)制這個(gè)文件到你的Tomcat所在的目錄——webapps文件夾下。啟動(dòng)Tomcat后就會(huì)自動(dòng)生成一個(gè)struts2-blank項(xiàng)目。
這個(gè)項(xiàng)目就是你下載的struts版本中的一個(gè)空白的模板,里面是你這個(gè)版本的struts所必須的文件,只能多不能少,所以根據(jù)這個(gè)你才能配置成功,而不是看幾年前的教程,那樣你很難成功,不同的版本需要的jar包是不一樣的。
打開(kāi)struts2-blank文件夾,找到里面的web.xml 文件,將這個(gè)文件打開(kāi),復(fù)制里面的內(nèi)容到你項(xiàng)目的web.xml文件中。
打開(kāi)lib文件夾,把里面的所有包都復(fù)制(ctrl+C),然后打開(kāi)Myeclipse中的你的項(xiàng)目的lib目錄,粘貼即可(ctrl+V)。
最后將struts.xml文件復(fù)制到你項(xiàng)目的src目錄下,不要復(fù)制錯(cuò)了,一旦錯(cuò)了就木有用了。
復(fù)制后需要將里面<struts></struts>中間的部分都刪掉,否則會(huì)報(bào)錯(cuò)的。
這樣你的struts就配置好了,部署一下就可以了。
注意:如果在部署的時(shí)候出現(xiàn)找不到類的情況說(shuō)名你部署的時(shí)候jar包沒(méi)有導(dǎo)入成功,可以手動(dòng)的復(fù)制進(jìn)去方法如下:
打開(kāi)Tomcat目錄下的webapps文件夾,找到你自己的項(xiàng)目,打開(kāi)里面的lib文件夾,將第七步中的jar包復(fù)制進(jìn)去就OK了。
1贛教云教學(xué)通2.0-贛教云教學(xué)通2.0下載 v5......
2step7 microwin-西門子PLC S7......
3百度網(wǎng)盤(pán)清爽精簡(jiǎn)純凈版-網(wǎng)盤(pán)工具-百度網(wǎng)盤(pán)清爽精......
4360安全瀏覽器-瀏覽器-360安全瀏覽器下載 ......
5谷歌瀏覽器 XP版-谷歌瀏覽器 XP版-谷歌瀏覽......
6Kittenblock重慶教育專用版-機(jī)器人編程......
7seo外鏈助手(超級(jí)外鏈) -SEO外鏈優(yōu)化工具......
8Notepad3-記事本軟件-Notepad3下......
9小米運(yùn)動(dòng)刷步數(shù)神器-小米運(yùn)動(dòng)刷步數(shù)神器下載 v2......