動(dòng)作是Struts2框架的核心,因?yàn)樗麄兊娜魏蜯VC(模型 - 視圖 - 控制器)框架。每個(gè)URL將被映射到一個(gè)特定的動(dòng)作,它提供了來(lái)自用戶的請(qǐng)求提供服務(wù)所需的處理邏輯。
但動(dòng)作也提供其他兩個(gè)重要的能力。首先,操作從請(qǐng)求數(shù)據(jù)的傳輸中起著重要的作用,通過(guò)向視圖,無(wú)論是一個(gè)JSP或其它類(lèi)型的結(jié)果。二,動(dòng)作必須協(xié)助的框架,在確定結(jié)果應(yīng)該渲染視圖,在響應(yīng)該請(qǐng)求將被退回。
在Struts2的動(dòng)作,唯一的要求是必須有一個(gè)無(wú)參數(shù)的方法返回String或結(jié)果的對(duì)象,必須是一個(gè)POJO。如果不帶參數(shù)的方法是不指定,則默認(rèn)動(dòng)作是使用execute()方法。
也可以選擇擴(kuò)展ActionSupport類(lèi)實(shí)現(xiàn)了6個(gè)接口,包括動(dòng)作界面。動(dòng)作界面如下:
public interface Action { public static final String SUCCESS = "success"; public static final String NONE = "none"; public static final String ERROR = "error"; public static final String INPUT = "input"; public static final String LOGIN = "login"; public String execute() throws Exception; }
讓我們來(lái)看看Hello World示例的操作方法:
package com.yiibai.struts2; public class HelloWorldAction{ private String name; public String execute() throws Exception { return "success"; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
為了說(shuō)明這一點(diǎn),操作方法控制視圖,讓我們做出以下更改執(zhí)行方法和擴(kuò)展類(lèi)ActionSupport 如下:
package com.yiibai.struts2; import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport{ private String name; public String execute() throws Exception { if ("SECRET".equals(name)) { return SUCCESS; }else{ return ERROR; } } public String getName() { return name; } public void setName(String name) { this.name = name; } }
在這個(gè)例子中,我們有一些在execute方法的邏輯來(lái)看待的name屬性。如果屬性等于字符串“SECRET”,我們返回SUCCESS 的結(jié)果,否則我們返回ERROR 的結(jié)果。因?yàn)槲覀円呀?jīng)擴(kuò)展ActionSupport,所以我們可以使用字符串常量的成功和錯(cuò)誤?,F(xiàn)在,讓我們修改我們的struts.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="com.yiibai.struts2.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp</result> <result name="error">/AccessDenied.jsp</result> </action> </package> </struts>
讓我們創(chuàng)建以下JSP文件 helloWorld.jsp 的WebContent文件夾在eclipse項(xiàng)目。要做到這一點(diǎn),右鍵單擊WebContent文件夾在項(xiàng)目資源管理器,選擇New >JSP File。該文件將要求返回的結(jié)果是SUCCESS,這是一個(gè)字符串常量“success”的定義在動(dòng)作界面:
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Hello World</title> </head> <body> Hello World, <s:property value="name"/> </body> </html>
以下是由框架的動(dòng)作的結(jié)果將被調(diào)用的文件,該文件是等于字符串常量“錯(cuò)誤”的ERROR 。以下是AccessDenied.jsp 的內(nèi)容
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri=上一篇:updownselect 示例下一篇:Struts2文件上傳例子