Struts 學(xué)習(xí)總結(jié)
一、? struts2 簡(jiǎn)介
struts2 官網(wǎng)地址: http://struts.apache.org/
struts2 官方開發(fā)介紹 :? http://struts.apache.org/2.0.14/docs/core-developers-guide.html
struts 官方開發(fā)介紹本地地址 :?
F:\ 編程資料 \ struts\struts-2.1.6-all\struts-2.1.6\docs\docs\guides.html (包括了所有使用的信息 , 相當(dāng)重要)
F:\ 編程資料 \ struts\struts-2.1.6-all\struts-2.1.6\docs\docs\home.html
學(xué)習(xí)計(jì)劃 : 首先將電子書看了再看文檔。
在 Struts2 中,模型 - 視圖 - 控制器模式通過五個(gè)核心組件來實(shí)現(xiàn) —— Action 、攔截器?值棧 /OGNL ?結(jié)果類型和結(jié)果 / 視圖技術(shù)。
在 “ struts.properties ” 文件中定義的屬性都可以在 “ web.xml ” 文件的 “ init-param ” 標(biāo)簽中進(jìn)行配置,或者通過 “ struts.xml ” 文件中的 “ constant ” ? 標(biāo)簽來修改(我們?cè)谙乱徽轮袝?huì)繼續(xù)討論這個(gè)標(biāo)簽)。
?? struts.properties 文件通常放在 Web 應(yīng)用的 WEB-INF/classes 路徑下。實(shí)際上,只要將該文件放在 Web 應(yīng)用的 CLASSPATH 路徑下, Struts?2 框架就可以加載該文件。
Struts2 使用了名為依賴注入 5—— 又名控制反轉(zhuǎn) —— 的技術(shù)來降低系統(tǒng)的耦合性。依賴注入可以通過構(gòu)造器注入,接口注入和 setter 注入來實(shí)現(xiàn)。 Struts2 中用的是 setter 注入。這就是說,你只需要提供一個(gè) setter ,對(duì)應(yīng)的對(duì)象就可以被 Action 使用了。 Struts2 推薦的依賴注入框架是 Spring 框架,并通過插件對(duì)它進(jìn)行配置。你還可以使用 Plexus ,或者是提供自定義的實(shí)現(xiàn)。
在 struts 中獲得 HttpRequest 對(duì)象 :
Inteceptor 中獲取 HttpServletRequest :
? ActionContext?ac?=?invocation.getInvocationContext();
????????HttpServletRequest?request?=?(HttpServletRequest)?ac.get(ServletActionContext. HTTP_REQUEST );
Action 等其他類中獲取 HttpServletRequest :
HttpServletRequest?request?=?ServletActionContext. getRequest ();
String? userNameReq ?=?request.getParameter( "userName" );
配置 struts 應(yīng)用程序步驟說明 :
1、? 導(dǎo)入 struts 應(yīng)用程序需要的 jar 包 (struts2 項(xiàng)目一般需要的 jar) 。
2、? 配置 web.xml 文件 :
? < filter >
< filter-name > struts2 </ filter-name >
< filter-class > org.apache.struts2.dispatcher.FilterDispatcher </ filter-class >
</ filter >
< filter-mapping >
< filter-name > struts2 </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
3、? 在 src 路徑下配置 struts.xml 初始文件。
? <! DOCTYPE? struts? PUBLIC
???????? "-//Apache?Software?Foundation//DTD?Struts?Configuration?2.0//EN"
???????? "http://struts.apache.org/dtds/struts-2.0.dtd" >
< struts >
???? < include? file = "struts-default.xml" />
</ struts >
4、? 在 WebContent 路徑下新建 html 文件,看是否能夠訪問。如果報(bào) 404 證明工程搭建有問題。
5、? 成功訪問,則創(chuàng)建對(duì)應(yīng)的 jsp 文件和在 struts.xml 中配置對(duì)應(yīng)的 action 等。在瀏覽器中訪問對(duì)應(yīng)的 action 時(shí),如果采用標(biāo)簽則應(yīng)該如下訪問 :
<package?name="tutorial"?namespace="/"?extends="struts-default">
頁(yè)面 form 配置如下 :
< s:form? action = "login"? namespace = "/" >
User?id : < input? type = "text"? name = "userId"? /> ? < br />
Password : ? < input? type = "password"? name = "passwd"? /> ? < br? />
< input? type = "submit"? value = "Login" />
</ s:form >
如果采用 html 標(biāo)記則配置如下 :
<form?action="<%=request.getContextPath()?/login.action">
注意 : 可以通過查看網(wǎng)頁(yè)源碼來看 form 的 action 是否配置正確。
6、? 相關(guān) Struts 書籍及資料
F:\ 編程資料 \ struts\struts-2.1.6-all\struts-2.1.6\docs\docs\other-resources.html
示例程序?qū)Ш? :?
Apache?Struts?2?Documentation?>?Home?>?Tutorials?>?Bootstrap?>?Hello?World
一、? Bootstrap( 引導(dǎo) )
標(biāo)簽的使用 :<s:url> 的使用 .
<s:url?var= "url" ?action= "Welcome" >
???????????? <s:param?name= "request_locale" > en </s:param>
???????? </s:url>
<s:a?href= "%{url}" > English </s:a>
在 struts.xml 中 action 配置可以不用配置 class.
<action?name= "Welcome" ?>
?? <result>/Welcome.jsp</result>
</action>
? <default-action-ref> 用于在沒有找到 action 的時(shí)候調(diào)用。
Struts 標(biāo)簽使用說明 :
<s:set> 標(biāo)簽設(shè)值,如果需要設(shè)置常量,需要在 value=”’’” 內(nèi)部添加單引號(hào)。
<s:set?var="name"?value="'xieyun'"?></s:set>
動(dòng)態(tài)傳遞參數(shù)
globalMessages_en_US.properties 配置如下 :myParam=xie-{0}
頁(yè)面上調(diào)用如下 :
< s:text? name = "myParam" >
? < s:param > callan </ s:param >
</ s:text >
浪曦視頻教程總結(jié)
一、基礎(chǔ)知識(shí)說明
在 action 使用中,可以不繼承 ActionSupport 類或?qū)崿F(xiàn) Action 接口。 Struts2 能夠通過 struts.xml 文件中聲明的 action 來反射解析 Action 類,但是該類必須包含一個(gè)返回字符串的 execute 方法。如果不聲明 execute 方法會(huì)報(bào)錯(cuò)誤如下 :
java.lang.NoSuchMethodException:?com.test.action.LoginAction.execute()
java.lang.Class.getMethod(Unknown?Source)
即使我們?cè)? struts.xml 文件的 action 中申明一個(gè) method 屬性,指定一個(gè)方法,也會(huì)報(bào)上面的錯(cuò)誤。
二、 struts2 類型轉(zhuǎn)換
1 、 struts 中的錯(cuò)誤驗(yàn)證
???Action 繼承 ActionSupport 后, ActionSupport 里面有一個(gè) Validate() 方法,該方法負(fù)責(zé)在執(zhí)行 execute() 方法前進(jìn)行一些輸入?yún)?shù)的簡(jiǎn)單驗(yàn)證,如果我們?cè)谠摲椒愄砑恿隋e(cuò)誤信息 (addFieldError("userName","userName?is?required");) ,那么我們的 result 將會(huì)執(zhí)行一個(gè) input 結(jié)果,跳轉(zhuǎn)到提交的頁(yè)面 ( 該 input 結(jié)果需要用戶自己在 struts.xml 中進(jìn)行配置 ) 。
示例程序如下 :
Login.jsp
<%@? page? language = "java"? contentType = "text/html;?charset=UTF-8"
???? pageEncoding = "UTF-8" %>
<%@? taglib? prefix = "s"?? uri = "/struts-tags" %>
<! DOCTYPE? html? PUBLIC? "-//W3C//DTD?HTML?4.01?Transitional//EN"? "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
- 2010-11-17 21:26
- 瀏覽 273
- 評(píng)論(0)
- 分類: 企業(yè)架構(gòu)
- 相關(guān)推薦
發(fā)表評(píng)論
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

評(píng)論