隨筆-54  評(píng)論-0  文章-2  trackbacks-0
           今天初步學(xué)習(xí)了一下Struts2,對(duì)于Struts2,企業(yè)中已應(yīng)用十分廣泛,由于他是在Struts基礎(chǔ)上發(fā)展而來(lái),技術(shù)上比struts高,比如struts2對(duì)同一個(gè)路徑的每個(gè)請(qǐng)求分別使用一個(gè)獨(dú)立Action實(shí)例對(duì)象,所有使用struts2不用考慮線程安全問(wèn)題,還有就是修改下配置文件,不用重啟服務(wù)器
          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è)了啊,佩服!

          posted on 2010-03-25 16:39 d66380022 閱讀(293) 評(píng)論(0)  編輯  收藏
          主站蜘蛛池模板: 十堰市| 海口市| 淳化县| 太仆寺旗| 鲜城| 鹿邑县| 景宁| 连云港市| 承德县| 闽侯县| 余庆县| 皮山县| 濮阳县| 抚州市| 陆丰市| 邵东县| 荥阳市| 兴国县| 牡丹江市| 高碑店市| 西吉县| 普格县| 资溪县| 嘉荫县| 定襄县| 共和县| 浦县| 东光县| 旬邑县| 永新县| 两当县| 太仓市| 上蔡县| 环江| 鹤壁市| 石嘴山市| 故城县| 阿城市| 河南省| 武城县| 射洪县|