2开发Web应用(4)
时间:2011-01-25 IBM 吴春峰 程炜
下面我们开发该应用的各个组件:
创建 Action
创建基类
通过基类实现 SessionAware, ServletRequestAware, ServletResponseAware 接口,可以使用 IOC 方式初始化 session, request 和 response。这种实现可以方便所有子类访问 session, request 和 response。
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class BaseAction extends ActionSupport
implements SessionAware, ServletRequestAware, ServletResponseAware{
private Map sessionMap;
private HttpServletRequest request;
private HttpServletResponse response;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
public void setSession(Map map){
this.sessionMap=map;
}
public HttpServletRequest getHttpServletRequest(){
return request;
}
public HttpServletResponse getHttpServletResponse(){
return response;
}
public Map getSession(){
return sessionMap;
}
}
创建 , 配置 Action
在该示例中,所有 form 表单提交使用一个 Action 类,该类的不同方法将作为不同表单提交的 Action。在该示例中,execute(), createOrEditUser(), submitUser(), deleteUser() 对应于不同表单对应的 action。
图 8. UserAction 代码
基于Struts 2开发Web应用(5)
时间:2011-01-25 IBM 吴春峰 程炜
在 Struts 2 应用中,action 的配置文件应该位于类根路径下,一个 Struts 2 应用中可以存在多个 action 配置文件,但这些文件需要在 struts.xml 中引用,本例所有 action 在 struts-user.xml 中定义,struts.xml 引用 struts-user.xml。
在 struts-user.xml 中可以看到不同的类方法被配置成不同的 Action, 如果没有指定方法,那么 struts 2 框架会默认调用 execute(), 例如:”showUserList”
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="user" extends="struts-default" namespace="/admin">
……………
<!-- user list -->
<action name="showUserList" class="sample.action.UserAction">
<result>/WEB-INF/page/userList.jsp</result>
</action>
<!-- add user -->
<action name="createOrEditUser"
class="sample.action.UserAction"
method="createOrEditUser">
<result>/WEB-INF/page/user.jsp</result>
</action>
<action name="submitUser"
class=
|