struts 修改拦截器修改返回值_关于struts2简单的介绍与示例
Apache Struts 2是一個(gè)用于開(kāi)發(fā)Java EE網(wǎng)絡(luò)應(yīng)用程序的開(kāi)放源代碼網(wǎng)頁(yè)應(yīng)用程序架構(gòu)。它利用并延伸了Java Servlet API,鼓勵(lì)開(kāi)發(fā)者采用MVC架構(gòu)。
緣起于Apache Struts的WebWork框架,旨在提供相對(duì)于Struts框架的增強(qiáng)和改進(jìn),同時(shí)保留與Struts框架類似的結(jié)構(gòu)。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名義合并Struts。
Struts1設(shè)計(jì)的第一目標(biāo)就是使MVC模式應(yīng)用于web程序設(shè)計(jì)。在過(guò)去10年,Struts在更好的web應(yīng)用方面所做的工作是值得肯定的。在某些方面,Struts社區(qū)注意到這一框架的局限性,所以這個(gè)活躍的社區(qū)通過(guò)對(duì)MVC運(yùn)行模式的重新理解并同時(shí)引入一些新的建筑學(xué)方面的設(shè)計(jì)理念后,新的Struts2框架結(jié)構(gòu)更清晰,使用更靈活方便。
這一新的結(jié)構(gòu)包含應(yīng)用邏輯的橫切面攔截器,基于注釋的配置以減少和去除XML形式的配置文件,功能強(qiáng)大的表達(dá)式語(yǔ)言,支持可更改、可重用UI組件的基于微MVC的標(biāo)簽庫(kù)。Struts2有兩方面的技術(shù)優(yōu)勢(shì),一是所有的Struts2應(yīng)用程序都是基于client/server HTTP交換協(xié)議,The Java Servlet API揭示了Java Servlet只是Java API的一個(gè)很小子集,這樣我們可以在業(yè)務(wù)邏輯部分使用功能強(qiáng)大的Java語(yǔ)言進(jìn)行程序設(shè)計(jì)。Struts 2提供了對(duì)MVC的一個(gè)清晰的實(shí)現(xiàn),這一實(shí)現(xiàn)包含了很多參與對(duì)所以請(qǐng)求進(jìn)行處理的關(guān)鍵組件,如:攔截器、OGNL表達(dá)式語(yǔ)言、堆棧。
idea構(gòu)建struts2項(xiàng)目:
創(chuàng)建strus2項(xiàng)目(注意不要勾選download,最新的struts核心包可能會(huì)導(dǎo)致一系列的錯(cuò)誤)
去struts官網(wǎng)下載項(xiàng)目所需要的包
解壓下載好的文件,將lib文件夾內(nèi)的所有包導(dǎo)入項(xiàng)目中
目錄結(jié)構(gòu)如下:
創(chuàng)建示例action
配置struts.xml文件,一共有三種方式,但用的最多的就是通配符的方式
處理返回值與視圖相對(duì)應(yīng)
需注意web.xml中包的路徑 struts2.5版本略有不同
使用tomcat運(yùn)行該示例如下:
如果在實(shí)際開(kāi)發(fā)過(guò)程中,將所有的action寫在一個(gè)配置文件內(nèi),這個(gè)文件就會(huì)顯得異常臃腫,所以我們需要采用多個(gè)配置文件。
指定多個(gè)配置文件的示例:
我們將剛才寫的struts.xml配置信息移到一個(gè)新的test.xml文件中,然后再struts.xml文件引入test.xml配置文件
我們也可以統(tǒng)一配置文件的編碼格式為UTF-8,避免以后出錯(cuò)
我們也可以采用默認(rèn)的action 防止404錯(cuò)誤不友好體驗(yàn)
當(dāng)用戶輸入錯(cuò)誤的url
關(guān)于修改請(qǐng)求地址的后綴示例:
修改后綴為html
action接收參數(shù)的示例:創(chuàng)建一個(gè)登陸界面
創(chuàng)建一個(gè)接收參數(shù)的action
注意接收參數(shù)的命名與前端名稱的一致性
配置struts信息
測(cè)試成功:
但是這樣寫,當(dāng)參數(shù)過(guò)多時(shí)就會(huì)不利于維護(hù),我們需要采用一種面向?qū)ο蟮玫椒绞絹?lái)接收參數(shù)
創(chuàng)建一個(gè)user實(shí)體類
使用user對(duì)象接收參數(shù)
更改前端參數(shù)
但是當(dāng)傳入?yún)?shù)改變的時(shí)候,我們需要改變接收實(shí)體的參數(shù),所以也不建議使用。
我們使用實(shí)現(xiàn)接口的方式接收參數(shù),這種方式需要實(shí)例化對(duì)象
關(guān)于使用集合接收參數(shù)
關(guān)于處理結(jié)果的類型
除了input比較特殊之外,其他的幾種只是一種代碼規(guī)范。
input來(lái)限制接收參數(shù)的類型
定義age的類型為int
修改配置文件信息,參數(shù)正確可以進(jìn)入首頁(yè),否則繼續(xù)停留在登陸界面
測(cè)試成功:
自定義攔截器示例:
新建攔截器,繼承AbstractInterceptor類,重寫intercept方法
在struts.xml中注冊(cè)攔截器
在指定的action中調(diào)用攔截器
創(chuàng)建測(cè)試action
創(chuàng)建測(cè)試義頁(yè)面
測(cè)試如下:
內(nèi)置攔截器:
需要注意的是當(dāng)我們?yōu)槟硞€(gè)action指定攔截器后,則默認(rèn)的攔截器不會(huì)被引用,所以需要手動(dòng)引用默認(rèn)攔截器
struts2權(quán)限控制示例:
WEB-INF是無(wú)法直接通過(guò)url訪問(wèn)的
相應(yīng)的邏輯處理
視圖的轉(zhuǎn)發(fā)
自定義權(quán)限攔截器
配置信息
這樣就完成了權(quán)限的控制
我好想你。
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的struts 修改拦截器修改返回值_关于struts2简单的介绍与示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: idea springboot 无法ru
- 下一篇: react组件放在数组中_为什么要在函数