基本Action类
编写基本的Action类,将通用的代码写进去,让其它Action类继承,从而减少冗余代码。
public class BaseAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String forward = null;
private Map<String, Object> session = ActionContext.getContext().getSession();
@SuppressWarnings("unchecked")
private Map<String, Object> request = (Map<String, Object>) ActionContext.getContext().get(CONSTANT.REQUEST);
public String getForward() {
return forward;
}
public void setForward(String forward) {
this.forward = forward;
}
public Map<String, Object> getSession() {
return session;
}
public Map<String, Object> getRequest() {
return request;
}
// 其它通用方法或属性
}
配置通用Action
在struts.xml中配置通用的Action,以后便不用再一个一个的配置Action。
<action name="*_*" class="{1}" method="{2}">
<result name="success">${forward}</result>
<result name="redirect" type="redirect">${forward}</result>
<result name="download" type="stream">
<param name="contentType">${contentType}</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="contentLength">${fileSize}</param>
<param name="bufferSize">4096</param>
</result>
</action>
其中”_“第一个*表示Action名,第二个表示Action里的方法,当然你也可以自己指定。
当你在spring的配置文件中配置这样的一个Action:
public class TestAction extends BaseAction {
private static final long serialVersionUID = 1L;
private static final String jsp_url = "/index.jsp";
private static final String action_url = "/index.action";
private static final String ACTION_REDIRECT = "redirect";
public String test() throws Exception {
// TODO Auto-generated method stub
setForward(jsp_url);
return Action.SUCCESS;
}
public String test() throws Exception {
// TODO Auto-generated method stub
setForward(action_url);
return ACTION_REDIRECT;
}
}
<bean id="TestAction" class="com.example.action.TestAction" scope="prototype" />
然后你访问TestAction_test.action时,会执行com.example.action.TestAction类的test方法,页面将会跳转到index.jsp。