javabean-jsp分页问题,,,,,,,,,,,,,,,

问题描述

jsp分页问题,,,,,,,,,,,,,,,

求大神看看???显示列表只有第一页有全部信息,但是页码、上一页、下一页??都有??就是没有内容分页数目正确??但是内容全显示在第一页
package?org.pan.web;
import?java.sql.*;
import?java.util.Vector;
import?org.pan.util.*;
import?javax.servlet.http.HttpServletRequest;
import?org.pan.web.book.shopuser;
public?> private?shopuser?user?=?new?shopuser(); //新的用户对象
private?javax.servlet.http.HttpServletRequest?request;?//建立页面请求
private?Vector?userlist; //显示用户列表向量数组
private?int?page?=?1; //显示的页码
private?int?pageSize=3; //每页显示的图书数
private?int?pageCount?=0; //页面总数
private?long?recordCount?=0; //查询的记录总数
private?String?message?=?""; //出错信息提示
private?String?username?=?""; //注册后返回的用户名
private?long?userid?=?0; //注册后返回的用户ID

public?usermn()?throws?Exception{
super();
}

public?Vector?getUserlist()?{
return?userlist;
}

public?String?getGbk(?String?str)?{
try
{
return?new?String(str.getBytes("ISO8859-1"));
}
catch?(Exception?e)
{
return?str;
}
}

//将页面表单传来的资料分解
public?boolean?getRequest(javax.servlet.http.HttpServletRequest?newrequest)?{
boolean?flag?=?false;
try
{

request?=?newrequest;
String?ID?=?request.getParameter("userid");
if?(ID!=null?)
{
userid?=?0;
try
{
userid?=?Long.parseLong(ID);
user.setId(userid);
}
catch?(Exception?e)
{
message?=?message?+?"你要修改的用户号出错!";
}
}

username?=?request.getParameter("username");
if?(username==null?||?username.equals(""))
{
username?=?"";
message?=?message?+?"用户名为空!";
}
user.setUserName(getGbk(username));?
String?password?=?request.getParameter("passwd");
if?(password==null?||?password.equals(""))
{

password?=?"";
message?=?message?+?"密码为空!";
}
String?pwdconfirm?=?request.getParameter("passconfirm");
if?(!password.equals(pwdconfirm))
{
message?=?message?+?"确认密码不相同!";
}
user.setPassWord(getGbk(password));
String?names?=?request.getParameter("names");;
if?(names==null)
{
names?=?"";
}
user.setNames(getGbk(names));
String?sex?=?request.getParameter("sex");

user.setSex(getGbk(sex));
String?address?=?request.getParameter("address");
if?(address?==?null)
{
address?=?"";
}
user.setAddress(getGbk(address));
String?post?=?request.getParameter("post");
if?(post?==?null)
{
post?=?"";
}
user.setPost(getGbk(post));
String?phone?=?request.getParameter("phone");
if?(phone==?null)
{
phone?=?"";
}
user.setPhone(phone);
String?email?=?request.getParameter("email");
if?(email?==?null)
{

email?=?"";
}
user.setEmail(getGbk(email));
String?IP?=?request.getRemoteAddr();
user.setRegIpAddress(IP);
if?(message.equals(""))
{
flag?=?true;
}
return?flag;

}
catch?(Exception?e)
{
return?flag;
}
}

public?String?getSql()?{
sqlStr?=?"select?*?from?my_users?order?by?id";
return?sqlStr;
}

public?boolean?execute()?throws?Exception?{
sqlStr?=?"select?count(*)?from?my_users";????//取出记录数
int?rscount?=?pageSize;
try
{
ResultSet?rs1?=?stmt.executeQuery(sqlStr);
if?(rs1.next())?recordCount?=?rs1.getInt(1);

rs1.close();
}
catch?(SQLException?e)
{
close();
return?false;
}
//设定有多少pageCount
if?(recordCount?<?1)
????????????pageCount?=?0;
????????else
????????????pageCount?=?(int)(recordCount?-?1)?/?pageSize?+?1;
//检查查看的页面数是否在范围内
if?(page?<?1)??
????????????page?=?1;
????????else?if?(page?>?pageCount)
????????????page?=?pageCount;

rscount?=?(int)?recordCount?%?pageSize; ?//?最后一页记录数????????

//sql为倒序取值
sqlStr?=?"select?*?from?My_users?";
if?(page?==?1)
{
sqlStr?=?sqlStr?+?"?order?by?Id?desc";
}?else?{
sqlStr?=?sqlStr?+?"?where?Id?not?in?(?select?Id?from?My_users?ORDER?BY?id)?and?Id?in?"?+
"(select?Id?from?My_users?ORDER?BY?ID)?"?+?"?order?by?Id?desc";
}
try
{
rs?=?stmt.executeQuery(sqlStr);
userlist?=?new?Vector();
while?(rs.next()){
shopuser?user?=?new?shopuser();
user.setId(rs.getLong("Id"));
user.setUserName(rs.getString("UserName"));
user.setPassWord(rs.getString("PassWord"));
user.setNames(rs.getString("Names"));
user.setSex(rs.getString("Sex"));
user.setAddress(rs.getString("Address"));
user.setPhone(rs.getString("Phone"));
user.setPost(rs.getString("Post"));
user.setEmail(rs.getString("Email"));
user.setRegTime(rs.getString("RegTime"));
user.setRegIpAddress(rs.getString("RegIpAddress"));
userlist.addElement(user);

}
rs.close();
return?true;
}
catch?(SQLException?e)
{
System.out.println(e);
return?false;
}

}

public?boolean?insert(HttpServletRequest?req)?throws?Exception?{
if?(getRequest(req))?{
sqlStr?=?"select?*?from?My_users?where?username?=?'"?+?user.getUserName()?+"'";
rs?=?stmt.executeQuery(sqlStr);
if?(rs.next())
{
message?=?message?+?"该用户名已存在!";
rs.close();
return?false;
}
sqlStr?=?"insert?into?my_users?(username,password,Names,sex,Address,Phone,Post,Email,RegTime,RegIpaddress)?values?('";
sqlStr?=?sqlStr?+?strFormat.toSql(user.getUserName())?+?"','";
sqlStr?=?sqlStr?+?strFormat.toSql(user.getPassWord())?+?"','";
sqlStr?=?sqlStr?+?strFormat.toSql(user.getNames())?+?"','";
sqlStr?=?sqlStr?+?strFormat.toSql(user.getSex())?+?"','";
sqlStr?=?sqlStr?+?strFormat.toSql(user.getAddress())?+?"','";
sqlStr?=?sqlStr?+?strFormat.toSql(user.getPhone())?+?"','";
sqlStr?=?sqlStr?+?strFormat.toSql(user.getPost())?+?"','";
sqlStr?=?sqlStr?+?strFormat.toSql(user.getEmail())?+?"',now(),'";
sqlStr?=?sqlStr?+?user.getRegIpAddress()?+?"')";
try
{
stmt.execute(sqlStr);
sqlStr?=?"select?max(id)?from?My_users?where?username?=?'"?+user.getUserName()+?"'";
rs?=?stmt.executeQuery(sqlStr);
while?(rs.next())
{
userid?=?rs.getLong(1);
}
rs.close();
return?true;
}
catch?(SQLException?sqle)
{
return?false;
}
}?else {
return?false;
}

}

public?boolean?update(HttpServletRequest?req)?throws?Exception?{
if?(getRequest(req)){
sqlStr?=?"update?my_users?set?";
sqlStr?=?sqlStr?+?"username?=?'"?+?strFormat.toSql(user.getUserName())?+?"',";
sqlStr?=?sqlStr?+?"password?=?'"?+?strFormat.toSql(user.getPassWord())?+?"',";
sqlStr?=?sqlStr?+?"Names?=?'"?+?strFormat.toSql(user.getNames())?+?"',";
sqlStr?=?sqlStr?+?"sex?=?'"?+?strFormat.toSql(user.getSex())?+?"',";
sqlStr?=?sqlStr?+?"address?=?'"?+?strFormat.toSql(user.getAddress())?+?"',";
sqlStr?=?sqlStr?+?"phone?=?'"?+?strFormat.toSql(user.getPhone())?+?"',";
sqlStr?=?sqlStr?+?"post?=?'"?+?strFormat.toSql(user.getPost())?+?"',";
sqlStr?=?sqlStr?+?"Email?=?'"?+?strFormat.toSql(user.getEmail())?+?"'?";
sqlStr?=?sqlStr?+?"?where?id?=?'"?+?user.getId()?+?"'";
try
{

stmt.execute(sqlStr);
return?true;
}
catch?(SQLException?e)
{
return?false;
}
}?else?{
return?false;
}

}

public?boolean?delete(?long?aid?)?throws?Exception?{

sqlStr?=?"delete?from?My_users?where?id?=?"??+?aid?;
try
{
stmt.execute(sqlStr);
return?true;
}
catch?(SQLException?e)
{
System.out.println(e);
return?false;
}
}

public?boolean?getUserinfo(long?newid?)?throws?Exception?{
try
{
sqlStr="select??*?from?My_users?where?Id?=?"?+?newid?;
rs?=?stmt.executeQuery(sqlStr);

userlist?=?new?Vector();
while?(rs.next()){
user.setId(rs.getLong("Id"));
user.setUserName(rs.getString("UserName"));
user.setPassWord(rs.getString("PassWord"));
user.setNames(rs.getString("Names"));
user.setSex(rs.getString("Sex"));
user.setAddress(rs.getString("Address"));
user.setPhone(rs.getString("Phone"));
user.setPost(rs.getString("Post"));
user.setEmail(rs.getString("Email"));
user.setRegTime(rs.getString("RegTime"));
user.setRegIpAddress(rs.getString("RegIpAddress"));
userlist.addElement(user);

}
rs.close();
return?true;
}
catch?(SQLException?e)
{
return?false;
}

}

public?int?getPage()?{ //显示的页码
return?page;
}
public?void?setPage(int?newpage)?{
page?=?newpage;
}

public?int?getPageSize(){ //每页显示的图书数
return?pageSize;
}
public?void?setPageSize(int?newpsize)?{
pageSize?=?newpsize;
}

public?int?getPageCount()?{ //页面总数
return?pageCount;
}
public?void?setPageCount(int?newpcount)?{
pageCount?=?newpcount;
}

public?long?getRecordCount()?{
return?recordCount;
}
public?void?setRecordCount(long?newrcount)?{
recordCount=?newrcount;
}

public?String?getMessage()?{
return?message;
}

public?void?setMessage(String?msg)?{
message?=?msg;
}

public?void?setUserid(long?uid)?{
userid?=?uid;
}
public?long?getUserid()?{
return?userid;
}

public?void?setUserName(String?uName)?{
username?=?uName;
}

public?String?getUserName()?{
return?username;
}
};

解决方案

你的sql语句写的就不是分页的啊,一次性把数据全查出来了,当然都显示在第一页

解决方案二:

分页有真分页和假分页,假分页就是把数据全部取出,在显示出来之前处理要显示多少记录,而真分页是在数据库拿出一页数据的数据直接显示。假分页效率低下,占用服务器和客户端资源大,如果数据量很大,会造成成服务器内存不足而使程序异常,所以不推荐使用。而真分页依赖数据库支持,核心思想就是从行号 为startRow 的记录开始拿数据,拿一个pageSize 的数据。
??? SQL Server2005有ROW......
答案就在这里:jsp的分页的问题

解决方案三:

只看到后台代码,前台绑定代码没见着。
后台代码似乎是把所有数据全部查出来然后再分页的么,这样不太好,最好是根据页数和一页显示条数动态查询数据,再在前台绑定数据。
分页没有效果可能有:1、分页后查询出来的数据不对,2、分页查询数据再前台显示不对 断点调试下获取的sql语句直接运行是不是正确的。

解决方案四:

你最好在写sql语句时就直接进行分页

解决方案五:

分页:
1.前端分页,把起始条数和终止条数传到后台。
2.后端分页:
select * from
(select t.*,rownum as rowno from TABLE1 )
where rowno between 10 and 20

时间: 2024-10-17 23:25:10

javabean-jsp分页问题,,,,,,,,,,,,,,,的相关文章

《实现JSP分页显示数据库》的阅读笔记

js|笔记|分页|数据|数据库|显示 这篇文章介绍的是用javabean和jsp页面来实现数据的分页显示,例子中所使用的数据库是Mysql. 1.先看javabean 类名: databaseBean.java: 以下为databaseBean.java的代码: package database_basic;import java.sql.*;import java.util.*; public class databaseBean{//这是默认的数据库连接方式private String DB

json实现jsp分页实例介绍(附效果图)_JSP编程

json 在上篇文章已有详细介绍,json的既简单易懂,又传输迅速.并且能和javascript很好的融为一体. 在不需要添加jar的前提下,能够很好完成jsp分页问题. 下面具体介绍分页实例: 效果如图所示,采用jsp+servlet技术 首先:编写一个javaBean User.java 复制代码 代码如下: package bean; public class User { private int id; private String name; private String passwo

JSP分页技术实现

js|分页 JSP分页技术实现 目前比较广泛使用的分页方式是将查询结果缓存在HttpSession或有状态bean中,翻页的时候从缓存中取出一页数据显示.这种方法有两个主要的缺点:一是用户可能看到的是过期数据:二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间,并且缓存的数据也会占用大量内存,效率明显下降. 其它常见的方法还有每次翻页都查询一次数据库,从ResultSet中只取出一页数据(使用rs.last();rs.getRow()获得总计录条数,使用rs.absolute()定位到本页

Jsp分页原代码,及用法

js|分页 Jsp分页原代码,及用法 1.定义一个分页的Tag Bean,以便用户在Jsp页中使用自定义标签,用户在使用时可以相应的描述 package BSC.tree; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.tagext.TagSupport; import javax.servlet.http.HttpServletResponse; import or

用MyEclipse开发的Hibernate + JSP分页代码

下载后导入项目到 MyEclipse , 然后修改数据库连接参数即可测试. 我这用 的是 MySQL 数据库. 用 JSP 是因为 Hibernate 可以配合各种框架, 因此在代 码里我已经尽量的把页面和后台的直接变量耦合分隔开了. 部分代码显示: 相关 SQL: CREATE TABLE `user` ( `id` int(11) NOT NULL, `username` varchar(200) NOT NULL, `password` varchar(20) NOT NULL, `age

jsp分页显示完整实例

 这篇文章主要介绍了jsp分页显示完整实例,以文章管理页面为例详细分析了jsp的分页显示实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jsp分页显示的实现方法.分享给大家供大家参考. 具体实现方法如下: 代码如下: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="&q

jsp分页显示的实现代码

 这篇文章主要介绍了jsp分页显示的实现代码,有需要的朋友可以参考一下 最近这几天在做JSP留言板设计的过程中,遇到了一个问题.先看一张截图:    这是随便在一个新闻的留言页面截的图,假如留言条数太多,那整个页面得排好长好长,这就直接给用户造成了麻烦.不舒服的感受,所以,解决这个问题,通常采用分页显示的方法.        要把页面显示方式设计成这样的方式,通常需要用到这几个基本变量:pageSize(每个页面所显示的记录数).pageCount(一共有多少个页面).showPage(目前显示

一个通用的JSP分页类,具有显示多组页码功能

最近几天学习jsp觉得很好,写了个分页类,给大家分享一下,同时也请高手指点. 第一部分:db.MysqlConn 数据库链接类 /********************************************************** 路径:zon.db.MysqlConn 文件:MysqlConn.java 用途:数据库连接 package db; import java.sql.*; import javax.xml.parsers.*; import org.w3c.dom.*

ssh框架jsp分页查询中如何对迭代器生成的表格中的一行记录进行删除修改操作?

问题描述 ssh框架jsp分页查询中如何对迭代器生成的表格中的一行记录进行删除修改操作? 求此处的链接操作delete及modify的实现代码,求大神帮忙,万分感谢! 解决方案 JSP: //单个删除 function ch(id){ if(confirm("确定要删除吗?")){ window.location.href="user_del.action?delid="+id; } } Action中: private Integer delid; //从页面中获

分布-关于JSP分页的问题,请大神帮忙,在线等

问题描述 关于JSP分页的问题,请大神帮忙,在线等 数据库里有13条记录,字段名为title. 部分代码如下: pageSize=4; //每页显示4条记录 int recordCount=rs.getRow(); pageCount=(recordCount%pageSize==0)?(recordCount/pageSize):(recordCount/pageSize+1); for(int i=1;i<=pageCount;i++){ int abs=(i-1)*pageSize+1;