Struts 的Action講解
Struts x
Stuts
接口
必須繼承orgapachestrutsactionAction或者其子類
無須繼承任何類型或實現任何接口
表單數據
表單數據封裝在FormBean中
表單數據包含在Action中通過Getter和Setter獲取
structs
中更多的像JAVABEAN實現一樣的哦!
雖然
理論上Struts
的Action無須實現任何接口或繼承任何類型
但是
我們為了方便實現Action
大多數情況下都會繼承com
opensymphony
xwork
ActionSupport類
並重載(Override)此類裡的String execute()方法
具體的實現
當請求HelloWorld
action發生時
Struts運行時(Runtime)根據struts
xml裡的Action映射集(Mapping)
實例化tutoiral
HelloWorld類
並調用其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=
/struts
tags
%>
<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=
struts
default
xml
/>
<package name=
tutorial
extends=
struts
default
>
<action name=
HelloWorld
class=
tutorial
HelloWorld
>
<result>/HelloWorld
jsp</result>
</action>
</package>
</struts>
上面是一個XML配置文件!
struts
xml
<action name=
HelloWorld
class=
tutorial
HelloWorld
>
<result>/HelloWorld
jsp</result>
</action>
提交到這個Action了!
其實就是找到一個類文件中去!
public class HelloWorld extends ActionSupport {
需要實現一個方法!
在HelloWorld
jsp中只需要引用這個BEAN中的一個屬性就可以了的!
<h
><s:property value=
message
/></h
>
表示顯示出來這個屬性
《我明白了JAVABEAN中的屬性的概念就是對應於JSP中的這個標簽的哦!》
所以通過JAVABEAN不需要手工寫setProperty方法的哦!
如果想與Response
Request對象打交道的 話怎麼做呢?
在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