文章目录
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
。