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

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

因为这次需要传递的一个数据集合,而不是单纯的数据,所要会用到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.*;//要使用List

public 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容器里面,并把这个数据集合命名为allUsr
	return "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);的原因。

你可能感兴趣的:(【Struts2】使用JDBC、Struts2标签、编辑WEB.XML完成较成熟的工程(3))