【Struts2】使用JDBC、Struts2标签、编辑WEB.XML完成较成熟的工程(3)

来源:互联网 发布:贵州大数据公需课 编辑:程序博客网 时间:2024/05/17 04:05

对用户列表的处理,就是如何把所查询的结果,经过不同的传递,并最终显示到页面上。

因为这次需要传递的一个数据集合,而不是单纯的数据,所要会用到ActionContext容器。

前章说到,adminwelcome存在一条需要跳转到动作findAllusr.java处理的超级链接。

findAllusr.java如下:

package com.ascent.action;import com.ascent.po.*;//首先要继承po下的所有方法与变量。import com.opensymphony.xwork2.ActionContext;//要使用getContext()把所有数据扔到ActionContext容器里,以便前台调用import java.sql.*;import java.util.*;//要使用Listpublic class findAllusr{private Connection con;private ResultSet rs;public String execute() throws Exception{List<usr> list=new ArrayList<usr>();//创建一个仅存usr类的List一个usr u=null;String sql="select * from usr";con=dbcon.getCon();rs=con.prepareStatement(sql).executeQuery();while(rs.next()){u=new usr();u.setId(rs.getInt("id"));u.setUsername(rs.getString("username"));u.setEmail(rs.getString("email"));u.setTel(rs.getString("tel"));u.setSuperuser(rs.getString("superuser"));list.add(u);}//这个过程之后,这个List相当于[{id1,username1,...},{id2,username2,..},...]ActionContext.getContext().put("allUsr", list);//之后把这个List压到ActionContext容器里面,并把这个数据集合命名为allUsrreturn "go";}}

之后在struts.xml添加action:

<action name="findAllusr" class="com.ascent.action.findAllusr">
<result name="go">/WEB-INF/showusr.jsp</result>
</action>

表示所有的处理结果将会扔到showusr.jsp下面处理

showusr.jsp如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="/struts-tags" prefix="s"%><!--使用struts标签记得加程序头--><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'showusr.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><center><h1>用户列表</h1><!--以下是表头静态部分--><table border="1" width="80%"><tr><td>ID</td><td>用户名</td><td>邮箱</td><td>电话</td><td>权限</td><td>操作</td></tr><!--意思是创建一个指向数据集合allUsr的游标,然后对里面的东西一个一个地读完,不用定义循环,自动读完所有的东西s:iterator必须在tr之外,表示创建行,在每一次循环之内。--><s:iterator value="#request.allUsr"><tr><td><s:property value="id" /></td><td><s:property value="username" /></td><td><s:property value="email" /></td><td><s:property value="tel" /></td><td><s:if test="superuser==1">普通用户</s:if><s:elseif test="superuser==2">高权用户</s:elseif><s:elseif test="superuser==3">管理员</s:elseif></td><td>操作</td></tr></s:iterator></table></center></body></html>


struts标签中的iterator是一个从上往下不停往下读取的游标,把它挂在数据集合allUsr上面。

这就是在之前的动作需要用到ActionContext.getContext().put("allUsr", list);的原因。

0 0