首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于 Struts 2 开发 Web 应用 -2

基于 Struts 2 开发 Web 应用 -2

示例开发该示例包括两个页面,第一个是管理员浏览所有系统用户(userList.jsp),第二个是管理员创建一个新用户(user.jsp)。图 6 和图 7 分别是两个示例的应用截图。
图 6 . 浏览系统用户图 7. 点击 “创建”按钮创建新用户点击“提交”,如果通过校验,则返回到第一个页面,如果校验失败,仍回到当前页面,并提示错误信息。
下面我们开发该应用的各个组件:
创建 Action创建基类
通过基类实现 SessionAware, ServletRequestAware, ServletResponseAware 接口,可以使用 IOC 方式初始化 session, request 和 response。这种实现可以方便所有子类访问 session, request 和 response。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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 应用中,action 的配置文件应该位于类根路径下,一个 Struts 2 应用中可以存在多个 action 配置文件,但这些文件需要在 struts.xml 中引用,本例所有 action 在 struts-user.xml 中定义,struts.xml 引用 struts-user.xml。
在 struts-user.xml 中可以看到不同的类方法被配置成不同的 Action, 如果没有指定方法,那么 struts 2 框架会默认调用 execute(), 例如:”showUserList”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!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="sample.action.UserAction"
            method="submitUser">
            <result name="input">/WEB-INF/page/user.jsp</result>
            <result name="userList" type="chain">showUserList</result>
        </action>     
        ……………                  
    </package>
</struts>




在 Struts 2 中,如果一个 Action 需要调用另一个 Action, 可以设置 result 的 type 为 chain, 如前面代码片段中的 <result name="userList"type="chain">showUserList</result>
返回列表