jsp+servlet+javabean的分页显示,进来给点思路,谢谢! 100分

microns 2008-10-18 09:14:01
 //roomBean.java
public Vector list_room(String username){
Vector vc=new Vector();
String sql="select r_number,r_photo,if_book,r_area,r_price,r_facility,insert_time from room_info where username='"+username+"' order by insert_time desc";
try{
this.stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
while(rs.next())
{ bossBean bos=new bossBean();
bos.setR_number(rs.getString("r_number"));
bos.setR_photo(rs.getString("r_photo"));
bos.setR_area(rs.getString("r_area"));
bos.setR_price(rs.getString("r_price"));
bos.setR_facility(rs.getString("r_facility"));
bos.setInsert_time(rs.getString("insert_time"));
bos.setIf_book(rs.getString("if_book"));
vc.add(bos);
}

}
catch(Exception e)
{e.printStackTrace();}
return vc;
}

 //selectList.java
if(request.getParameter("send").equals("list_room")){
username=(String)session.getAttribute("username");
String goToPage = request.getParameter("list_room");
Vector result=db.list_room(username,goToPage);
request.getSession().setAttribute("list_room",(Object)result);
request.getSession().setAttribute("boss_info",null);
request.getSession().setAttribute("search",null);
request.getSession().setAttribute("addroom",null);
request.getSession().setAttribute("upload_success",null);
request.getSession().setAttribute("nullresult",null);
RequestDispatcher rd=request.getRequestDispatcher("trader_index.jsp");
rd.forward(request,response);

}

我想单独在写一个javabean分页,在roomBean.java中调用分页bean,然后在jsp页面中用JSTL标签把页分出来,有了这样的思路,但是不知道该如何做?麻烦那位解答一下,谢谢
...全文
1265 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
huaxl342308 2011-10-13
  • 打赏
  • 举报
回复
上面的朋友能发个完整例子给我吗??谢谢!498066493@qq.com
jiujiu999999 2010-09-04
  • 打赏
  • 举报
回复
恩 学习学习
qpzm3213 2010-08-30
  • 打赏
  • 举报
回复
受教了
laohuguaiguai 2009-06-02
  • 打赏
  • 举报
回复
能给我发个例子吗,我是个新手,为这问题头疼了好久了,谢谢了,leiwenwu.88@163.com
rwliangzai 2009-04-21
  • 打赏
  • 举报
回复
love1986 这位朋友发个例子给我吧,谢谢!rwliangzai@163.com
rwliangzai 2009-04-21
  • 打赏
  • 举报
回复
我也要学习分页
st181281 2009-03-10
  • 打赏
  • 举报
回复
看完获益匪浅。
microns 2008-10-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 DiscussQuestions 的回复:]
1.你写一个PageBean的实体类!@~!包括(当前页、总页数、总行数、每页显示多少行、List)。这个List就是你要查询的实体的集合,把查询的信息都保存到这个list中,
2.就只用去创建一个存储过程!~!用来查询不同页数的记录!~
3.在数据访问层就直接用那个存储过程,sql = "{call 存储过程名字(参数)}";把查询的结果集保…
[/Quote]
能贴个代码么?思路清楚了,具体的怎么调用pagebean,还不清楚

谢谢10-12楼这位仁兄贴出的代码,你的代码我没有怎么看明白?
lov1986 2008-10-19
  • 打赏
  • 举报
回复

package com.winwen.util;

import java.util.List;

/**
* @author lov1986 E-mail: lqsgc@163.com
* @version 创建时间:Aug 19, 2008 9:23:30 PM 类说明
*/
public class PageJudge {

public Page pageJudge(List list, int pageSize, String servletname) {
Page page = new Page();
page.setTarget(servletname); //调用的 servlet名字
page.setFormName("pageform");
page.setRowsPerPage(12);//显示行数
page.setMaxRowCount(list.size());
page.setCurPage(pageSize);
page.setMaxPage();

// 判断数据是否正好显示
if (page.getMaxPage() == page.getCurPage()
&& page.getMaxRowCount() % page.getRowsPerPage() != 0) {
list = list.subList(
(page.getCurPage() - 1) * page.getRowsPerPage(), page
.getMaxRowCount());
} else {
list = list.subList(
(page.getCurPage() - 1) * page.getRowsPerPage(), page
.getCurPage()
* page.getRowsPerPage());
}
page.setList(list);

return page;
}

}

lov1986 2008-10-19
  • 打赏
  • 举报
回复

/**
* 根据前台分页页面名称和相关分页信息,获取前台页面提交表单和页面信息的 HTML 代码
*
* @param aUrl -
* 前台分页页面的路径名称
* @return - 前台页面提交表单和页面信息的 HTML 代码
*/
public String getPageStr(String aUrl) {

String strFirstPage = "首页";
String strLastPage = "末页";
String strNextPage = "下一页";
String strPrevPage = "上一页";
String strCurrentPage = "页次";
String strGoto = "转至:";

StringBuffer strPages = new StringBuffer();

// 跳转脚本
strPages.append("<script language='JavaScript'>\r\n");
strPages.append("<!--\r\n");
strPages.append("function Jumping(){ \r\n\t");
strPages.append("document." + formName + ".submit();\r\n\t");
strPages.append("return ;\r\n");
strPages.append("}\r\n");

strPages.append("function gotoPage(pagenum){ \r\n\t");
strPages.append("document." + formName
+ ".pageSize.value = pagenum;\r\n\t");
strPages.append("document." + formName + ".submit();\r\n\t");
strPages.append("return ;\r\n");
strPages.append("}\r\n");
strPages.append("-->\r\n");
strPages.append("\r\n</script>\r\n");

strPages.append("<table border=0 align=center>\r\n");
strPages.append("<form name=" + formName + " action=" + aUrl
+ " method=get>\r\n");
strPages.append("<tr>\r\n\t<td>\r\n\t\t");
strPages.append("<b>共 <font color=#930909>" + this.getMaxRowCount()
+ "</font> 条记录</b> \r\n\t");

if (getMaxPage() == 1 || getMaxRowCount() == 0) {
strPages
.append("\t<font face=webdings color=#930909></font><font color=#930909><b>"
+ strFirstPage + "</b></font>\r\n\t");
strPages
.append("\t<font face=webdings color=#930909></font><font color=#930909><b>"
+ strPrevPage + "</b></font>\r\n\t");
strPages
.append("\t<font color=#930909><b>"
+ strNextPage
+ "</b></font><font face=webdings color=#930909></font>\r\n\t");
strPages
.append("\t<font color=#930909><b>"
+ strLastPage
+ "</b></font><font face=webdings color=#930909>:</font>\r\n\t");
} else if (getMaxPage() > 1 && getCurPage() == 1) {
strPages
.append("\t<font face=webdings color=#930909></font><font color=#930909><b>"
+ strFirstPage + "</b></font>\r\n\t");
strPages
.append("\t<font face=webdings color=#930909></font><font color=#930909><b>"
+ strPrevPage + "</b></font>\r\n\t");
strPages.append("\t<a href=\"javascript:gotoPage("
+ (getCurPage() + 1) + ")\"><font color=black><b>"
+ strNextPage
+ "</b></font></a><font face=webdings></font>\r\n\t");
strPages.append("\t<a href=\"javascript:gotoPage(" + getMaxPage()
+ ")\"><font color=black><b>" + strLastPage
+ "</b></font></a><font face=webdings>:</font>\r\n\t");
} else if (getMaxPage() > 1 && getCurPage() < getMaxPage()) {
strPages
.append("\t<font face=webdings></font><a href=\"javascript:gotoPage(1)\"><font color=black><b>"
+ strFirstPage + "</b></font></a>\r\n\t");
strPages
.append("\t<font face=webdings></font><a href=\"javascript:gotoPage("
+ (getCurPage() - 1)
+ ")\"><font color=black><b>"
+ strPrevPage + "</b></font></a>\r\n\t");
strPages.append("\t<a href=\"javascript:gotoPage("
+ (getCurPage() + 1) + ")\"><font color=black><b>"
+ strNextPage
+ "</b></font></a><font face=webdings></font>\r\n\t");
strPages.append("\t<a href=\"javascript:gotoPage(" + getMaxPage()
+ ")\"><font color=black><b>" + strLastPage
+ "</b></font></a><font face=webdings>:</font>\r\n\t");
} else if (getMaxPage() > 1 && getCurPage() == getMaxPage()) {
strPages
.append("\t<font face=webdings></font><a href=\"javascript:gotoPage(1)\"><font color=black><b>"
+ strFirstPage + "</b></font></a>\r\n\t");
strPages
.append("\t<font face=webdings></font><a href=\"javascript:gotoPage("
+ (getCurPage() - 1)
+ ")\"><font color=black><b>"
+ strPrevPage + "</b></font></a>\r\n\t");
strPages
.append("\t<font color=#930909><b>"
+ strNextPage
+ "</b></font><font face=webdings color=#930909></font>\r\n\t");
strPages
.append("\t<font color=#930909><b>"
+ strLastPage
+ "</b></font><font face=webdings color=#930909>:</font>\r\n\t");
}

strPages
.append("\t<font color=black><b>"
+ strGoto
+ "</b></font>\r\n\t\t<select name='pageSize' onchange='Jumping()'>");

for (int i = 1; i <= this.getMaxPage(); i++) {
if (i == this.getCurPage()) {
strPages.append("\r\n\t\t\t<option selected value=" + i + ">第 "
+ i + " 页</option>");
} else {
strPages.append("\r\n\t\t\t<option value=" + i + ">第 " + i
+ " 页</option>");
}
}

strPages.append("\r\n\t\t</select>\r\n\t");

strPages
.append("\t<font color=black><b>"
+ strCurrentPage
+ ":</b></font><font color=#930909><b>"
+ getCurPage()
+ "</b></font>\r\n\t\t<font color=black><b>/</b></font>\r\n\t\t<font color=#930909><b>"
+ getMaxPage()
+ "</b></font><font color=black><b> 页 </b></font>");

strPages.append("\r\n\t\r\n</form>\r\n</table>");

return strPages.toString();
}

/**
* <p>
* 根据Page 类的 target 属性和分页相关信息,获取前台页面提交表单和页面信息的 HTML 代码
* </p>
* <p>
* 注意:使用该方法之前,必须设置 Page 类的 target属性
* </p>
*
* @return - 前台页面提交表单和页面信息的 HTML 代码
*/
public String getPageStr() {
return this.getPageStr(target);
}

/**
* 打印 Page 对象的当前信息
*/
public String toString() {
return "当前是第 " + curPage + " 页;共有 " + maxPage + " 页,共 " + maxRowCount
+ " 条记录(行);每页 " + rowsPerPage + " 条记录(行)";
}
}
lov1986 2008-10-19
  • 打赏
  • 举报
回复

package com.winwen.util;

import java.util.List;

/**
* @author lov1986 E-mail: lqsgc@163.com
* @version 创建时间:Aug 19, 2008 9:22:22 PM 类说明
*/

public class Page {
/**
* 当前是第几页
*/
private int curPage; // 当前是第几页

/**
* 一共有多少页
*/
private int maxPage; // 一共有多少页

/**
* 一共有多少条记录(行)
*/
private int maxRowCount; // 一共有多少行

/**
* 每页显示多少行
*/
private int rowsPerPage; // 每页显示多少行

/**
* 当前页面要显示的数据列表(包含数据库返回对象的列表)
*/
private List list; // 当前页面显示的数据

/**
* 提交的表单的名称
*/
private String formName = "pageForm";// 提交的表单名称

/**
* 显示分页的前台页面路径名称
*/
private String target = "";

/**
* 页面显示下一页,上一页
*/
private String pageStr = "";

/**
* 默认每页显示记录数
*/
private static int ROWS_PER_PAGE = 15;

/**
* 分页信息初始化,每页显示记录数使用默认值
*
*/
public Page() {
this.curPage = 1;
this.maxPage = 1;
this.maxRowCount = 0;
this.rowsPerPage = ROWS_PER_PAGE;
}

/**
* <p>
* 设置当前分页页面要显示的数据对象列表
* </p>
*
* <p>
* 该对象可以是一个实现了 List 接口的任意列表
* </p>
*
* @param list -
* 实现了 List 接口的任意列表
*/
public void setList(List list) {
this.list = list;
}

/**
* 获取要在当前分页页面显示的数据对象列表
*
* @return 要显示在前台页面的数据对象列表
*/
public List getList() {
return this.list;
}

/**
* 设置记录的总行数(即所有满足条件的纪录总数)
*
* @param maxRowCount -
* 记录的总行数
*/
public void setMaxRowCount(int maxRowCount) {
this.maxRowCount = maxRowCount;
}

/**
* 获取记录的最大行数
*
* @return - 满足条件的所有记录条数
*/
public int getMaxRowCount() {
return this.maxRowCount;
}

/**
* 设置当前页数(即要显示在前台的当前页数)
*
* @param curPage -
* 当前页数
*/
public void setCurPage(int curPage) {
this.curPage = curPage;
}

/**
* 返回在前台显示的当前页数
*
* @return - 当前页数
*/
public int getCurPage() {
return this.curPage;
}

/**
* <p>
* 设置每页显示的记录条数
* </p>
* <p>
* 注意:如果每页显示的记录条数小于等于 0 ,则每页显示的记录条数将置为默认值
* </p>
*
* @param rows -
* 每页显示的记录条数
*/
public void setRowsPerPage(int rows) {
if (rows > 0) {
this.rowsPerPage = rows;
} else {
this.rowsPerPage = ROWS_PER_PAGE;
}
}

/**
* 设置页面提交表单的名称,默认为 pageForm,在一般情况下,使用默认值就能正常使用
*
* @param formName -
* 提交表单的名称
*/
public void setFormName(String formName) {
this.formName = formName;
}

/**
* 设置显示分页的前台页面路径名称
*
* @param target -
* 分页页面路径名称
*/
public void setTarget(String target) {
this.target = target;
}

/**
* 获取每页显示的记录条数
*
* @return - 每页显示的记录条数
*/
public int getRowsPerPage() {
return this.rowsPerPage;
}

/**
* 根据记录总数和每页显示的记录条数,计算总共有多少页
*
*/
public void setMaxPage() {
if (this.maxRowCount % this.rowsPerPage == 0) {
this.maxPage = this.maxRowCount / this.rowsPerPage;
} else {
this.maxPage = this.maxRowCount / this.rowsPerPage + 1;
}
}

/**
* 获取根据记录总数和每页显示的记录数计算得出的总页数
*
* @return - 记录总页数
*/
public int getMaxPage() {
return this.maxPage;
}

/**
* 获取前台分页页面提交表单的名称
*
* @return - 提交表单的名称
*/
public String getFormName() {
return this.formName;
}

/**
* 获取前台分页页面的路径名称
*
* @return - 前台分页页面的路径名称
*/
public String getTarget() {
return this.target;
}

/**
* 获取默认每页显示的记录条数
*
* @return - 默认每页显示的记录条数
*/
public int getDefaultRowsPerPage() {
return ROWS_PER_PAGE;
}

DiscussQuestions 2008-10-19
  • 打赏
  • 举报
回复
在楼主的问题来看!~!
楼主还没有学习Hibernate吧!~!
没有关系!~!分页还是一样的可以实现!~!
1.你写一个PageBean的实体类!@~!包括(当前页、总页数、总行数、每页显示多少行、List)。这个List就是你要查询的实体的集合,把查询的信息都保存到这个list中,
2.就只用去创建一个存储过程!~!用来查询不同页数的记录!~
3.在数据访问层就直接用那个存储过程,sql = "{call 存储过程名字(参数)}";把查询的结果集保存到PageBean的List中
最后直接返回这个PageBean的对象就可以了!~!
4.直接从Servlet中获取PageBean、或者从JSP中获取这个就可以了!~!
tiyuzhongxin789 2008-10-19
  • 打赏
  • 举报
回复
如果你学了Hibernate就好了,那里面有分页功能
但不论你实用什么分页,你都要写一个分页的Bean
microns 2008-10-19
  • 打赏
  • 举报
回复
分数,按劳分配
microns 2008-10-19
  • 打赏
  • 举报
回复
终于完成了....
谢谢楼上的回答...

我写了一个分页的PageBean,然后有个数据操作的DataBean,一个控制跳转的servlet,前台jsp显示
整理好了发到blob,欢迎大家评价(现在我有两种方式的分页,一个是前端时间写在servlet中,现在把他分出来了)
wtuihpl 2008-10-19
  • 打赏
  • 举报
回复
我的思路是这样的。。

首先在 servlet 取得页面上的当前页数
如: Integer pageIndex = request.getParameter("pageIndex");
当前也可以取显示多少页,简单化不写了。

然后在 DAO 提供一个方法 , 第一个是当前页数,第二个是取得多少数据
如: List getList(int pageIndex,int pageSize){
// sql 语句大概就这样
sql = "select top pageSize from tb where id not in (select top pageIndex from tb)";
}

servlet 根据界面来传入相应的参数进行调整调用 DAO 返回给 界面就 OK 了:
如: 表示每页显示 15 行
request.setParameter(DAO.getList(pageIndex,15 )) ;

页面显示就不用写了吧。
tfsict2008 2008-10-19
  • 打赏
  • 举报
回复
jdbc 做的话,用recordset的游标,要传入要显示的页数和每页的大小
lov1986 2008-10-19
  • 打赏
  • 举报
回复
邮件已发出,查收下
yanjie_gao 2008-10-19
  • 打赏
  • 举报
回复
解决没有,要是没有,我的资源里面有个例子!
microns 2008-10-19
  • 打赏
  • 举报
回复
谢谢lov1986
328074337@qq.com
加载更多回复(10)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧