现在问题是在Web页面显示正常,插了数据也正常。就是在web页面看不到目前已有的数据库信息。
(数据库JDBC驱动都连接正常)
使用工具:Myeclipse+SQL2000address.jsp<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="emis" uri="emis"%>
<%
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>企业信息管理系统 - 通讯录管理</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="企业,信息,管理">
<meta http-equiv="description" content="企业信息管理系统 - 通讯录管理">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="css/styles.css"></head>
<body>
<div align="center"><table height="100%" width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td colspan="2" height="108">
<table height="108" background="images/banner.jpg" border="0"
cellspacing="0" cellpadding="0" width="100%">
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="160" bgcolor="#EEEEEE" valign="top" height="100%"><%@ include
file="inc/menu.jsp"%></td>
<td align="left" valign="top">
<TABLE width="100%" class="position">
<TR>
<TD>当前位置:通讯录管理</TD>
<TD align="right"><a
href="address.do?method=add&pageSize=${requestScope.pageSize}&pageNo=${requestScope.pageNo}">新增联系人</a></TD>
<TD width="20"></TD>
</TR>
</TABLE>
<b></b>
<TABLE border="0" width="100%">
<TR class="tableheader">
<TD>姓名</TD>
<TD>性别</TD>
<TD>手机</TD>
<TD>Email</TD>
<TD>QQ号码</TD>
<TD>工作单位</TD>
<TD>地址</TD>
<TD>邮编</TD>
<TD>操作</TD>
</TR>
<c:forEach items="${requestScope.list}" var="hash">
<TR>
<TD>${hash.name}</TD>
<TD>${hash.sex}</TD>
<TD>${hash.mobile}</TD>
<TD>${hash.email}</TD>
<TD>${hash.qq}</TD>
<TD>${hash.company}</TD>
<TD>${hash.address}</TD>
<TD>${hash.postcode}</TD>
<TD><a
href='address.do?method=edit&id=${hash.id}&pageSize=${requestScope.pageSize}&pageNo=${requestScope.pageNo}'>修改</a>
<a
href="address.do?method=delete&id=${hash.id}&pageSize=${requestScope.pageSize}&pageNo=${requestScope.pageNo}">删除</a></TD>
</TR>
</c:forEach>
</TABLE>
<emis:pager action="address.do?method=list"
pageSize="${requestScope.pageSize}"
pageNo="${requestScope.pageNo}"
rowCount="${requestScope.rowCount}" 
pageCount="${requestScope.pageCount}" 
pageFirstNo="${requestScope.pageFirstNo}" 
pagePreNo="${requestScope.pagePreNo}" 
pageNextNo="${requestScope.pageNextNo}"
pageLastNo="${requestScope.pageLastNo}"  />
</td>
</tr>
<tr>
<td colspan="2" align="center"><%@ include file="inc/foot.jsp"%>
</td>
</tr>
</table>
</div>
</body>
</html>
调用方法AddressBean.java
package com.demo.javabean;import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;import javax.servlet.http.HttpServletRequest;public class AddressBean {
/**
 * (1)列表函数
 * @param request
 * @param username
 * @param strPageSize
 * @param strPageNo
 * @return
 */
public boolean list(HttpServletRequest request, String username, String strPageSize,
String strPageNo) {
// 创建数据库连接
DBAccess db = new DBAccess();
if(db.createConn()) { // 查询总的记录数,计算跳页参数
int pageSize = Integer.parseInt(strPageSize);
int pageNo = Integer.parseInt(strPageNo);
int start = pageSize * (pageNo - 1);
// 总记录数查询SQL
String sql1 = "select count(*) as countall from address where username='"
+ username + "'";
db.query(sql1);
if (db.next()) {
//计算总行数并保存
String countall = db.getValue("countall");
int rowCount = Integer.parseInt(countall);
request.setAttribute("rowCount", rowCount); //计算总页数并保存
int pageCount = rowCount % pageSize == 0 ? rowCount / pageSize
: rowCount / pageSize + 1;
request.setAttribute("pageCount", pageCount); //计算跳页参数并保存
int pageFirstNo = 1;// 首页
int pageLastNo = pageCount;//尾页
int pagePreNo = pageNo > 1 ? pageNo - 1 : 1;// 前一页
int pageNextNo = pageNo < pageCount ? pageNo + 1 : pageCount;// 后一页
request.setAttribute("pageFirstNo", pageFirstNo);
request.setAttribute("pageLastNo", pageLastNo);
request.setAttribute("pagePreNo", pagePreNo);
request.setAttribute("pageNextNo", pageNextNo);
}
db.closeRs(); // 取得当前页数据SQL
String sql2 = "select * from address where username='" + username
+ "' order by name limit " + start + "," + pageSize;
List<Hashtable<String, String>> list = new ArrayList<Hashtable<String, String>>();
db.query(sql2);
while (db.next()) {
// 查询每行数据的各个字段数据
Hashtable<String, String> hash = new Hashtable<String, String>();
hash.put("id", db.getValue("id"));
hash.put("username", db.getValue("username"));
hash.put("name", db.getValue("name"));
hash.put("sex", db.getValue("sex"));
hash.put("mobile", db.getValue("mobile"));
hash.put("email", db.getValue("email"));
hash.put("qq", db.getValue("qq"));
hash.put("company", db.getValue("company"));
hash.put("address", db.getValue("address"));
hash.put("postcode", db.getValue("postcode"));

// 保存当前行
list.add(hash);
}
// 保存所有行数据列表传递给下一个页面
request.setAttribute("list", list);
db.closeRs();
db.closeStm();
db.closeConn();
}
return true;
}

/**
 * (2)删除函数
 * @param request
 * @param username
 * @return
 */
public boolean delete(HttpServletRequest request, String username) {
// 创建数据库连接
DBAccess db = new DBAccess();
if(db.createConn()) { // 根据id组成删除SQL,执行删除
String id = request.getParameter("id");
String sql = "delete from address where id=" + id;
db.update(sql);
db.closeStm();
db.closeConn();
}
return true;
}

/**
 * (3)新增函数
 * @param request
 * @param username
 * @return
 */
public boolean insert(HttpServletRequest request, String username) {
// 创建数据库连接
DBAccess db = new DBAccess();
if(db.createConn()) { // 取得新增表单参数
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String mobile = request.getParameter("mobile");
String email = request.getParameter("email");
String qq = request.getParameter("qq");
String company = request.getParameter("company");
String address = request.getParameter("address");
String postcode = request.getParameter("postcode"); // 组合新增SQL
String sql = "insert into address (username, name, sex, mobile, email, qq, company, address, postcode) ";
sql += " values('" + username + "','" + name + "','" + sex + "','"
+ mobile + "','" + email + "','" + qq + "','" + company
+ "','" + address + "','" + postcode + "')"; // 转换参数编码
try {
sql = new String(sql.getBytes("ISO8859-1"), "UTF-8");
} catch (Exception e) {
return false;
} // 执行插入
db.update(sql);
db.closeStm();
db.closeConn();
}
return true;
}

/**
 * (4)查询函数
 * @param request
 * @param username
 * @return
 */
public boolean select(HttpServletRequest request, String username) {
// 创建数据库连接
DBAccess db = new DBAccess();
if(db.createConn()) { // 根据id编号查询当前行记录
String id = request.getParameter("id");
String sql = "select * from address where id=" + id;
db.query(sql);
if (db.next()) {
// 取得各个字段的值并保存
request.setAttribute("id", db.getValue("id"));
request.setAttribute("username", db.getValue("username"));
request.setAttribute("name", db.getValue("name"));
request.setAttribute("sex", db.getValue("sex"));
request.setAttribute("mobile", db.getValue("mobile"));
request.setAttribute("email", db.getValue("email"));
request.setAttribute("qq", db.getValue("qq"));
request.setAttribute("company", db.getValue("company"));
request.setAttribute("address", db.getValue("address"));
request.setAttribute("postcode", db.getValue("postcode"));
}
db.closeRs();
db.closeStm();
db.closeConn();
}
return true;

}

/**
 * (5)更新函数
 * @param request
 * @param username
 * @return
 */
public boolean update(HttpServletRequest request, String username) {
// 创建数据库连接
DBAccess db = new DBAccess();
if(db.createConn()) { // 取得修改页表单参数
String id = request.getParameter("id");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String mobile = request.getParameter("mobile");
String email = request.getParameter("email");
String qq = request.getParameter("qq");
String company = request.getParameter("company");
String address = request.getParameter("address");
String postcode = request.getParameter("postcode"); // 组合更新SQL
String sql = "update address set name='" + name + "', sex='" + sex
+ "', mobile='" + mobile + "', email='" + email + "', qq='"
+ qq + "', company='" + company + "', address='" + address
+ "', postcode='" + postcode + "' where id=" + id; // 转换参数编码
try {
sql = new String(sql.getBytes("ISO8859-1"), "UTF-8");
} catch (Exception e) {
return false;
}

// 执行更新
db.update(sql);
db.closeStm();
db.closeConn();
}
return true;

}
}

解决方案 »

  1.   

    1:看你上面的代码,你的list数据与页面上显示的数据记录数是分两次查询得到的,你看到上面的每页记录数和记录总数并不能表示list中已经正确地取得了数据,请检查。
    2:如果list中已经取得了正确的数,那就要看是否已经正确地传到了.JSP文件中。
    3:c:forEach是否正确
      

  2.   

    先单元测试下吧,先在ide里面运行下查询这段方法,看看返回的结果集是不是空,如果不是的话,问题肯定出在<c:forEach items="${requestScope.list}" var="hash">
    这个标签上面了,那就先不用这个标签,直接调用查询的方法,打出来看看
      

  3.   

    ${requestScope.list} 这个值 你取到了没?
      

  4.   

    // 保存所有行数据列表传递给下一个页面
                request.setAttribute("list", list);
    确定这里面有值么?访问的时候有调用后台程序?