熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

開源框架:Structs2.0入門學習(3)

2013-11-23 20:06:51  來源: Java開源技術 

  Struts 的Action講解



   

  Struts x

  Stuts

  接口

  必須繼承orgapachestrutsactionAction或者其子類

  無須繼承任何類型或實現任何接口

  表單數據

  表單數據封裝在FormBean中

  表單數據包含在Action中通過Getter和Setter獲取

structs中更多的像JAVABEAN實現一樣的哦!

雖然理論上Struts 的Action無須實現任何接口或繼承任何類型但是我們為了方便實現Action大多數情況下都會繼承comopensymphonyxworkActionSupport類並重載(Override)此類裡的String execute()方法具體的實現


當請求HelloWorldaction發生時Struts運行時(Runtime)根據strutsxml裡的Action映射集(Mapping)實例化tutoiralHelloWorld類並調用其execute方法
通過XML文件進行映射到一個Action類!

  SUCCESS在接口comopensymphonyxworkAction中定義另外同時定義的還有ERROR INPUT LOGIN NONE

所以在Excute 中會返回一個這樣的值來的return ERROR ;


  程序無非就是輸入操作和輸出因此現在我們要討論一下輸入——表單輸入


  使用Struts 表單數據的輸入將變得非常方便和普通的POJO一樣在Action編寫Getter和Setter然後在JSP的UI標志的name與其對應在提交表單到Action時我們就可以取得其值

在BEAN中將屬性的名字與JSP中的屬性名一樣的話就可以通過GET SET來處理了!

OK我剛寫了一個登錄的示例出來代碼分析一下吧!
填寫表單輸入信息
<%@ taglib prefix=s uri=/strutstags %>
<s:form action=HelloWorld method=POST>
<s:textfield name=name label=User name/>
<s:password name=password label=Password/>
<s:submit value=Submit/>
</s:form>
用到了UI標簽的哦!
提交到一個Action的!

<struts>
    <include file=strutsdefaultxml/>
    <package name=tutorial extends=strutsdefault>
        <action name=HelloWorld class=tutorialHelloWorld>
            <result>/HelloWorldjsp</result>
        </action>     
    </package>
</struts>
上面是一個XML配置文件!
strutsxml
<action name=HelloWorld class=tutorialHelloWorld>
    <result>/HelloWorldjsp</result>
</action>
提交到這個Action了!
其實就是找到一個類文件中去!
public class HelloWorld extends ActionSupport {
需要實現一個方法!
在HelloWorldjsp中只需要引用這個BEAN中的一個屬性就可以了的!
<h><s:property value=message /></h>
表示顯示出來這個屬性
《我明白了JAVABEAN中的屬性的概念就是對應於JSP中的這個標簽的哦!》
所以通過JAVABEAN不需要手工寫setProperty方法的哦!

如果想與ResponseRequest對象打交道的 話怎麼做呢?

  在Strutx 你可以有兩種方式獲得這些對象非IoC(控制反轉Inversion of Control)方式和IoC方式



    非IoC方式

  要獲得上述對象關鍵Struts 中comopensymphonyxworkActionContext類我們可以通過它的靜態方法getContext()獲取當前Action的上下文對象 另外orgapachestrutsServletActionContext作為輔助類(Helper Class)可以幫助您快捷地獲得這幾個對象



  <![if !supportLists]>o                              <![endif]>HttpServletRequest request = ServletActionContextgetRequest();

  <![if !supportLists]>o                              <![endif]>HttpServletResponse response = ServletActionContextgetResponse();

  <![if !supportLists]>o                              <![endif]>HttpSession session = requestgetSession();

  如果你只是想訪問session的屬性(Attribute)你也可以通過ActionContextgetContext()getSession()獲取或添加session范圍(Scoped)的對象



國際化Struct技術!
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27950.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.