零基础学Struts
上QQ阅读APP看书,第一时间看更新

16.5 完成查看所有用户信息模块

16.5.1 整合Struts 2和Spring

整合Spring之前首先需要为Web应用添加Spring所需的jar文件,然后修改“web.xml”文件。添加一个Listener,使得Web应用启动时会自动查找WEB-INF目录下的“applicationContext.xml”配置文件,并根据该配置文件来创建Spring容器。同时安装Struts 2的Spring插件,代码如下所示。

        <? xml version="1.0" encoding="UTF-8"? >
        <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
            <! --定义核心Filter FilterDispatcher -->
            <filter>
                    <! -- 定义核心Filter的名称 -->
                    <filter-name>struts2</filter-name>
                    <! --定义核心Filter的实现类 -->
                    <filter-class>
                            org.apache.struts2.dispatcher.FilterDispatcher
                    </filter-class>
            </filter>
            <filter-mapping>
                    <! --核心Filter的名称 -->
                    <filter-name>struts2</filter-name>
                    <! --使用该核心Filter来接受所有Web请求 -->
                    <url-pattern>/*</url-pattern>
            </filter-mapping>
            <listener>
                    <listener-class>
                            org.springframework.web.context.ContextLoaderListener
                    </listener-class>
            </listener>
        </web-app>

16.5.2 创建查看全部用户信息控制器

新建业务控制器ShowAllAction,该Action负责取得所有的用户信息,并将所有用户List储存在request范围中,代码如下所示。

        package net.hncu.action;
        import java.util.List;
        import net.hncu.service.UserService;
        import org.apache.struts2.ServletActionContext;
        import com.opensymphony.xwork2.ActionSupport;
        public class ShowAllAction extends ActionSupport {
              //业务逻辑组件
              private UserService userService;
              //设置业务逻辑组件
              public void setUserService(UserService userService) {
                    this.userService = userService;
              }
              public String execute() throws Exception {
                    //通过调用业务逻辑组件获得所有用户
                    List all = userService.queryAllUser();
                    //将所有用户List储存在request范围中
                    ServletActionContext.getRequest().setAttribute("all", all);
                    return SUCCESS;
            }
        }

16.5.3 创建全部用户信息显示页

新建用户信息显示页,该页面中通过iterator标签遍历List中的全部用户,并将用户信息显示出来,代码如下所示。

        <%@page contentType="text/html; charset=gb2312"%>
        <%@taglib prefix="s" uri="/struts-tags"%>
        <html>
        <head>
              <title>用户列表</title>
        </head>
        <body>
        <center>
              <h2>用户列表</h2>
              <table border="1">
                    <tr>
                          <td>用户ID</td>
                          <td>用户名</td>
                          <td>密码</td>
                          <td>是否删除</td>
                          <td>是否更新</td>
                    </tr>
                    <s:iterator value="#request.all" id="user">
                    <tr>
                          <td><a href="showUser.action? id=<s:property value=' #user.id' />">
        <s:property value="#user.id"/></a></td>
                              <td><s:property value="#user.username"/></td>
                              <td><s:property value="#user.password"/></td>
                              <td><a href="delete.action? id=<s:property value=' #user.id' />">删除</a></td>
                              <td><a href="update.jsp? id=<s:property value=' #user.id' />">更新</a></td>
                        </tr>
                        </s:iterator>
                  </table>
                  <a href="add.jsp">添加新用户</a>
            </center>
            </body>
            </html>

16.5.4 配置查看全部用户信息控制器

在Spring配置文件中配置业务控制器showAllAction,并为其注入业务逻辑组件,代码如下所示。

        <! -- 创建showAllActon实例 -->
        <bean id="showAllAction" class="net.hncu.action.ShowAllAction" scope="prototype">
            <property name="userService" ref="userService"></property>
        </bean>

在“struts.xml”文件中配置showAllAction,并定义处理结果与视图资源之间的关系,代码如下所示。

        <action name="showAll" class="showAllAction">
              <! -- 定义处理结果与视图资源之间的关系-->
              <result name="success">/showAll.jsp</result>
        </action>

16.5.5 测试查看所有用户信息

打开浏览器,运行showAll.action,页面将跳转到用户信息显示页,并显示出所有用户信息,如图图16.2所示。

图16.2 注册用户列表