1 Struts 2.x多業務處理
所有的開發之中,每一個Action都要同時處理多個操作請求,所以來講在Struts 2.x裏面依然支持多業務的操作,那麼下面爲了更好的觀察出問題,重新建立新的Action以及VO類。
範例:定義一個新聞的VO類
package org.lks.vo;
import java.io.Serializable;
@SuppressWarnings("serial")
public class News implements Serializable {
private Integer nid;
private String ntitle;
private String ncontent;
}
隨後建立一個NewsAction,這個Action要求可以多業務處理,如果寫多業務處理的話,就不要使用execute()方法。
範例:定義NewsAction
package org.lks.action;
import org.lks.vo.News;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class NewsAction extends ActionSupport {
private News news = new News();
public News getNews() {
return news;
}
public void list() {
System.out.println("[list]");
}
public String update() {
System.out.println("[update]");
return null;
}
public void insert(){
System.out.println("[insert]");
}
}
隨後進行struts.xml文件的配置操作。
範例:定義struts.xml文件
<action name="NewsAction_*" class="org.lks.action.NewsAction" method="{1}"></action>
如果現在要執行的是增加操作,則路徑使用:NewsAction_insert.action,如果使用修改操作使用:NewsAction_update.action,依次類推。
可以發現在Struts 2.x之中,每一次執行的時候實際上都會重新生成新的Action對象,所以裏面的內容不會出現從上一次請求一直沿用到本次請求的情況。這一點是是要比Struts 1.x更加優秀。
如果說此時你的項目開發使用的是基於配置文件完成的,這樣的配置完全可用,而且也可以發現在整個的Action裏面是否方法要返回結果都由用戶自己來決定,可是在現在的開發之中(Struts 2.x比Struts 1.x優秀的地方在於它支持Annotation配置)都會使用Annotation來完成配置,一旦用了Annotation,那麼無法配置method參數。如果現在不能夠配置method參數,那麼就需要換另外一種形式訪問。
範例:修改struts.xml文件的定義
<action name="NewsAction" class="org.lks.action.NewsAction"></action>
此時可以利用!
完成,例如:要訪問增加操作NewsAction!insert.action
、修改NewsAction!update.action
。