1.struts2的建立過(guò)程:
配置過(guò)程:
1.新建web項(xiàng)目
2.導(dǎo)入struts2類庫(kù). [blank項(xiàng)目中含有最少的jar文件]
3.配置web.xml
<filter>[...SrutsPrepareAndExecuteFilter]
4.寫Action類
public class HelloWorldAction {
public String execute(){
System.out.println("hello world!");
try {
ServletActionContext.getResponse().getWriter().printf("hello!");
} catch (Exception e) {
e.printStackTrace();
}
return null ;
}
}
5.創(chuàng)建struts.xml
①.struts2默認(rèn)在類路徑下查找struts.xml文件
關(guān)于struts.xml配置,可以參看struts2-blank-2.1.8.1.war解壓后的配置
設(shè)置環(huán)境為開發(fā)模式.設(shè)置為開發(fā)模式,有利于編程和調(diào)試,
<constant name="struts.devMode" value="true" />
3.讓struts.xml中的Package繼承struts-default.xml中的默認(rèn)包.
所有的默認(rèn)包中的元素配置就引入進(jìn)來(lái).
4.配置默認(rèn)值.
<action name="HelloWorldAction" class="cn.itcast.struts2.helloworld.HelloWorldAction">
<result name="success">
<param name="location">/index.jsp</param>
</result>
</action>
5.strtus2中的action不是單例的,它會(huì)為每個(gè)請(qǐng)求單獨(dú)分配一個(gè)action實(shí)例,所以可以在action類中聲明實(shí)體屬性.
Struts2的Action是模型層,不是控制層,原因它是需要攜帶業(yè)務(wù)數(shù)據(jù)的.
6.struts2中的攔截器是負(fù)責(zé)每個(gè)獨(dú)立的一項(xiàng)任務(wù).例如,參數(shù)傳遞,國(guó)際化,異常處理,StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它負(fù)責(zé)攔截由<url-pattern>/*</url-pattern>指定的所有用戶請(qǐng)求,當(dāng)用戶請(qǐng)求到達(dá)時(shí),該Filter會(huì)過(guò)濾用戶的請(qǐng)求。
7.在struts2的jsp中輸出數(shù)據(jù),借助于struts-tag.tld標(biāo)簽庫(kù).該庫(kù)在[struts-core.jar/META-INF/struts-tag.tld,但是其重要作用還是用于回顯數(shù)據(jù)
8.Struts2可以數(shù)據(jù)的范圍:ActionContext request session application
ActionContext是數(shù)據(jù)中心,ValueStack不過(guò)是該數(shù)據(jù)中心中的一個(gè)特殊對(duì)象.
在jsp中訪問(wèn)ActionContext中的數(shù)據(jù)的話,可以使用OGNL語(yǔ)言.
9.struts2中包的名字空間搜索原則:
1.<package name="xxPkg">
2.<package name="xxPkg" namespace="">
3.<package name="xxPkg" namespace="/">
4.<package name="xxPkg" namespace="/HelloWorld">
1.和2.效果一樣,都是默認(rèn)的包.
2.都會(huì)自后向前搜索,直到找到為止,"/" 和 "/HelloWorld"唯一不同就是也可以作為搜索目錄.
3.空包是默認(rèn)包,如果每個(gè)包都沒(méi)有找到相應(yīng)的action的話,就去默認(rèn)包下去找.
10.struts2中進(jìn)行動(dòng)態(tài)方法調(diào)用.
http://localhost:8085/struts2/Hell/HelloWorldAction!toRewView.do
11.struts2中使用標(biāo)簽庫(kù)
<s:form action="HelloWorldAction_doReg" [namespace=""]>
<s:textfield name="name" label="UserName" />
<s:submit />
</s:form>
namespace:如果不寫,會(huì)使用當(dāng)期的名字空間.
struts給的所有控件標(biāo)簽,主要目的用于回顯數(shù)據(jù).
12.struts2中進(jìn)行基本的校驗(yàn),需要Validateable和ValidationAware兩個(gè)接口的支持,同時(shí)還需要
workflow攔截器的支持.
13.在struts2中,默認(rèn)的表達(dá)式語(yǔ)言是OGNL,Object Graphic Navigation Language(對(duì)象圖導(dǎo)航語(yǔ)言)的縮寫,它是一個(gè)開源項(xiàng)目。 Struts 2框架使用OGNL作為默認(rèn)的表達(dá)式語(yǔ)言。相對(duì)EL表達(dá)式,它提供了平時(shí)我們需要的一些功能,如:支持對(duì)象方法調(diào)用,支持類靜態(tài)方法調(diào)用和值訪問(wèn),操作集合對(duì)象。例如():
訪問(wèn)值棧中的action的普通屬性: username = <s:property value="username"/>
由于下午有公司來(lái)面試,耽誤了一些時(shí)間,老徐說(shuō)明天再多補(bǔ)一個(gè)小時(shí),太敬業(yè)了啊,佩服!