- 浏览: 15987 次
- 性别:
- 来自: 广州
最新评论
菜鸟学javaweb,拼凑一个JSP+Servlet+oracle实现分页的实例,其中有明显不足之处,贴在此主要是方便自己记忆。
数据库建表语句:
加上一个javaVO,也如下:
新建一个PageModel类,List是为封装BlogInfo做准备的,还增加了为分页做准备的一些属性和方法:
事务处理的类:
加上一个Servlet
最后就是JSP了。
以上代码有些不合理的地方,暂时没有处理,如pageNo和pageSize赋值应该是放在JSP中可以填写的,这个是Oracle分页的第一种方法。
数据库建表语句:
-- Create table create table BLOGINFO ( ID NUMBER not null, BLOGTITLE VARCHAR2(50) not null, BLOGCONTENT VARCHAR2(4000) not null, AUTHOR VARCHAR2(30) not null, BLOGTIME LONG not null ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64 minextents 1 maxextents unlimited ); -- Add comments to the columns comment on column BLOGINFO.ID is '表id'; comment on column BLOGINFO.BLOGTITLE is '博客标题'; comment on column BLOGINFO.BLOGCONTENT is '博客内容'; comment on column BLOGINFO.AUTHOR is '作者,用户昵称'; -- Create/Recreate primary, unique and foreign key constraints alter table BLOGINFO add constraint BLOGINFO_ID primary key (ID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table BLOGINFO add constraint AUTHOR_NAME foreign key (AUTHOR) references USERINFO (LOGINNAME);
加上一个javaVO,也如下:
package com.dylan.vo; public class BlogInfo { int id; String blogtitle; String blogcontent; String author; long blogtime; String blogtimes; String blogt; public String getBlogtimes() { return blogtimes; } public void setBlogtimes(String blogtimes) { this.blogtimes = blogtimes; } public String getBlogt() { return blogt; } public void setBlogt(String blogt) { this.blogt = blogt; } public BlogInfo() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getBlogtitle() { return blogtitle; } public void setBlogtitle(String blogtitle) { this.blogtitle = blogtitle; } public String getBlogcontent() { return blogcontent; } public void setBlogcontent(String blogcontent) { this.blogcontent = blogcontent; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public long getBlogtime() { return blogtime; } public void setBlogtime(long blogtime) { this.blogtime = blogtime; } }
新建一个PageModel类,List是为封装BlogInfo做准备的,还增加了为分页做准备的一些属性和方法:
package com.dylan.vo; import java.util.List; public class PageModel { // 结果集 private List list; // 查询总记录数 private int totalRecords; // 每页多少条数据 private int pageSize; // 第几页 private int pageNo; /** * 总页数 * * @return */ public int getTotalPages() { return (totalRecords + pageSize - 1) / pageSize; } /** * 取得首页 * * @return */ public int getTopPageNo() { return 1; } /** * 上一页 * * @return */ public int getPreviousPageNo() { if (pageNo <= 1) { return 1; } return pageNo - 1; } /** * 下一页 * * @return */ public int getNextPageNo() { if (pageNo >= getBottomPageNo()) { return getBottomPageNo(); } return pageNo + 1; } /** * 取得尾页 * * @return */ public int getBottomPageNo() { return getTotalPages(); } public List getList() { return list; } public void setList(List list) { this.list = list; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } }
事务处理的类:
package com.dylan.service; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.dylan.util.DBHelper; import com.dylan.util.DateUtil; import com.dylan.vo.BlogInfo; import com.dylan.vo.PageModel; public class BlogInfoQueryService { private static BlogInfoQueryService instance = new BlogInfoQueryService(); private BlogInfoQueryService() { }; public static BlogInfoQueryService getInstance() { return instance; } /** * 查询此用户所拥有的所有博客 * * @param loginname * @return * @throws SQLException */ public PageModel queryBlogInfoForAll(String loginname, int pageNo, int pageSize) throws SQLException { StringBuffer sql = new StringBuffer(); PageModel pageModel = null; sql.append("select * ") .append("from") .append("(") .append("select rownum rn,t.* ") .append("from") .append("(") .append("select * ") .append("from bloginfo where author= ") .append("?") .append(" order by id") .append(") t ") .append("where rownum <= ?") .append(")") .append("where rn > ? "); Connection conn = DBHelper.getConnetion(); PreparedStatement pstm =conn.prepareStatement(sql.toString()); ResultSet rs = null; try { System.out.println(sql); pstm.setString(1, loginname); pstm.setInt(2, pageNo * pageSize); pstm.setInt(3, (pageNo - 1) * pageSize); rs = pstm.executeQuery(); List<BlogInfo> blogInfoList = new ArrayList<BlogInfo>(); while (rs.next()) { BlogInfo blogInfo = new BlogInfo(); blogInfo.setId(rs.getInt(2)); blogInfo.setBlogtitle(rs.getString(3)); blogInfo.setBlogcontent(rs.getString(4)); blogInfo.setAuthor(rs.getString(5)); long l = rs.getLong(6); Date date = new Date(l); DateUtil du = new DateUtil(); blogInfo.setBlogtimes(du.dateToString(date)); blogInfoList.add(blogInfo); } pageModel = new PageModel(); pageModel.setList(blogInfoList); pageModel.setTotalRecords(getTotalRecords(loginname, conn)); pageModel.setPageSize(pageSize); pageModel.setPageNo(pageNo); } catch (Exception e) { e.printStackTrace(); } finally { pstm.close(); conn.close(); } return pageModel; } public int getTotalRecords(String loginname, Connection conn) throws SQLException { String sql = "select count(*) from bloginfo where author = '"+loginname+"'"; Statement pstm = conn.createStatement(); ResultSet rs = null; int count = 0; try { rs = pstm.executeQuery(sql); rs.next(); count = rs.getInt(1); } catch (Exception e) { e.printStackTrace(); } finally { rs.close(); pstm.close(); conn.close(); } return count; } }
加上一个Servlet
package com.dylan.servlet; import java.io.IOException; import java.sql.SQLException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.dylan.service.BlogInfoQueryService; import com.dylan.vo.PageModel; public class QueryBlogInfoServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); String loginname = request.getParameter("loginname"); System.out.println("pageNo="+request.getParameter("pageNo")); System.out.println("pageSize="+request.getParameter("pageSize")); int pageNo =Integer.parseInt(request.getParameter("pageNo")); int pageSize = Integer.parseInt(request.getParameter("pageSize")); System.out.println(pageNo+"--"+pageSize); PageModel pageModel = null; System.out.println(loginname); BlogInfoQueryService biqs = BlogInfoQueryService.getInstance(); try { pageModel = biqs.queryBlogInfoForAll(loginname, pageNo, pageSize); System.out.println("上一页:"+pageModel.getPreviousPageNo()); System.out.println("下一页:"+pageModel.getNextPageNo()); } catch (SQLException e) { e.printStackTrace(); } request.setAttribute("pageModel",pageModel); System.out.println("打印pageModel对象"+request.getAttribute("pageModel")); RequestDispatcher rd = request.getRequestDispatcher("/listblog.jsp"); rd.forward(request, response); } }
最后就是JSP了。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page import="com.dylan.vo.BlogInfo"%> <%@ page import="java.util.List"%> <%@ page import="com.dylan.service.*"%> <%@ page import="com.dylan.vo.*"%> <% 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 'userregeste.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"> <% int pageNo = 1; int pageSize = 3; PageModel pageModel = (PageModel) request.getAttribute("pageModel"); %> <script type="text/javaScript"> function topPage() { window.self.location = "<%=basePath%>queryBlogInfoServlet?loginname=<%=request.getSession().getAttribute("loginname")%>&pageNo=<%=pageModel.getTopPageNo()%>&pageSize=3"; } function previousPage() { window.self.location = "<%=basePath%>queryBlogInfoServlet?loginname=<%=request.getSession().getAttribute("loginname")%>&pageNo=<%=pageModel.getPreviousPageNo()%>&pageSize=3"; } function nextPage() { window.self.location = "<%=basePath%>queryBlogInfoServlet?loginname=<%=request.getSession().getAttribute("loginname")%>&pageNo=<%=pageModel.getNextPageNo()%>&pageSize=3"; } function bottomPage() { window.self.location = "<%=basePath%>queryBlogInfoServlet?loginname=<%=request.getSession().getAttribute("loginname")%>&pageNo=<%=pageModel.getBottomPageNo()%>&pageSize=3"; } </script> </head> <body bgcolor="#abe2d6"> <table width="650"> <tr bgcolor="#ade2d6"> <td width="560"> 我的博文 </td> <td></td> <td></td> <td> <a href="<%=basePath%>writeblog.jsp" shape="rect">写博客</a> </td> </tr> </table> <table width="650"> <hr /> <tr bgcolor="#ade2d6"> <td bgcolor="yellow" width="400"> 博客标题 </td> <td bgcolor="yellow"> 博客作者 </td> <td bgcolor="yellow"> 发表时间 </td> <td bgcolor="yellow"> 更多操作 </td> </tr> <% List<BlogInfo> bloginfolist = pageModel.getList(); //List<BlogInfo> bloginfolist = (List<BlogInfo>)request.getAttribute("bloginfolist"); %> <% for (BlogInfo blogInfo : bloginfolist) { %> <tr> <td width="400"> <a href="<%=basePath%>queryBlogInfoByIdServlet?id=<%=blogInfo.getId()%>"><%=blogInfo.getBlogtitle()%></a> </td> <td><%=blogInfo.getAuthor()%></td> <td><%=blogInfo.getBlogtimes()%></td> <td> 更多操作 </td> </tr> <% } %> <tr> <td colspan="5"> 共 <%=pageModel.getTotalPages()%> 页 当前第 <%=pageModel.getPageNo()%>页 <input type="button" value="首页" onClick="topPage()"> <input type="button" value="上一页" onClick="previousPage()"> <input type="button" value="下一页" onClick="nextPage()"> <input type="button" value="尾页" onClick="bottomPage()"> </td> </tr> </table> </body> </html>
以上代码有些不合理的地方,暂时没有处理,如pageNo和pageSize赋值应该是放在JSP中可以填写的,这个是Oracle分页的第一种方法。
发表评论
-
Oracle数据库不支持脏读
2012-02-08 22:06 1886Oracle目前不支持脏读,对于未提交的数据只能在本进 ... -
Windows7 安装 Oracle 10g 11g 的方法
2012-01-29 21:01 70610g服务器短跟客户端都要下Vista版本的,XP版的不行 服 ... -
玩转Oracle表空间和数据文件(转自百度空间)
2011-12-29 11:26 1194玩转Oracle表空间和数据 ... -
AIX5.3系统中oracle9i的安装、配置
2011-10-13 16:21 1756简介:网上许多在AIX下 ... -
【转】 ORA-01507: database not mounted
2011-10-13 14:24 2439ORA-01102: cannot mount datab ... -
ORA-00257: archiver error. Connect internal only, until freed
2011-08-18 17:23 1545今天登录数据库发现,Oracle报这个错误:ORA-00257 ... -
数据库物理分布设计
2011-07-24 00:43 815转:数据库物理分布设计 概述 我们无论使用哪种数据库,无 ...
相关推荐
项目中的"pagination_4_Oracle"可能包含了Oracle分页的具体实现。 5. MySQL数据库分页:MySQL提供了LIMIT关键字,可以直接配合OFFSET实现分页查询。在Java中,通过调整LIMIT子句的参数即可实现不同页码的数据获取。...
带学员课上做的oracle模仿百度分页样式的例子。比较适合初学者参考,jdbc工具类是自己写的,没有使用第三方分页组件。tomcat是apache-tomcat-7.0.41,myeclipse是MyEclipse 9.0,oracle是11g。例子中用的是海量数据...
网上商城项目是现代电子商务的重要组成部分,本项目采用经典的JSP、Servlet和JavaBean技术进行实现,提供了完整的源码,旨在帮助开发者理解和学习如何构建一个功能完备、界面美观的网上购物平台。下面将对这个项目的...
本教程将详细讲解如何利用JSP(JavaServer Pages)、JavaBean和Servlet技术来实现数据分页功能。我们将讨论以下几个关键知识点: 1. **JSP基础**:JSP是Java的一种动态网页技术,它允许我们在HTML页面中嵌入Java...
综上所述,"java+jsp+servlet+dao+oracle做得分页 增删改查操作"是一个典型的Java Web应用开发流程,涉及了前端展示、后端处理、数据库交互以及分页技术。理解这些技术的原理和协作方式,对于理解和开发类似的Web...
jsp+servlet在线考试系统 考试流程 1. 管理员在后台添加当日考试试卷的题型(判断、单选、多选、简单、编程) .2.学生通过手机号码注册账户,密码MD5加密 登录系统进行考试(题目题库随机抽取) 3.教师后台登录系统...
总结起来,"jsp+servlet+javabean"的Model2模式在"增删改查分页"的应用中,涉及到JavaBean的数据封装,Servlet的控制逻辑,JSP的视图展示,以及数据库操作、请求转发、会话管理和异常处理等多个环节。理解并熟练掌握...
本系统主要实现火车查询售票功能,主要的功能如下: 客户端管理功能: (1)动车基本信息管理模块;...4.本设计采用JSP+Servlet+EJB3.0+Oracle10g工具进行开发,最后通过JDBC进行与数据库的相关的链接。
【JSP成绩管理系统】是一个基于Java Web技术的典型应用,主要采用了MVC(Model-View-Controller)设计模式,结合了JSP、Servlet和JavaBean组件。本系统旨在实现对学生成绩的有效管理,包括成绩录入、查询、统计等...
### JSP+SERVLET+JDBC:数据库操作的核心技术 在现代Web开发中,Java Server Pages (JSP)、Servlets 和 Java Database Connectivity (JDBC) 是构建动态网站及与数据库交互的关键技术。本文将深入探讨如何使用这三种...
7. **查询条件与列表**:userQuery.jsp页面整合查询条件和信息列表,通过JavaScript与后端Servlet配合实现动态分页效果。 总结,本手册详细介绍了基于JSP、Servlet和JavaBean的Web框架搭建过程,从基础架构搭建到...
【初学者写留言本,带分页的java+servlet+oracle!】 在IT行业中,开发一个留言本系统是初学者入门Web开发的经典实践项目。这个项目涵盖了Java、Servlet和Oracle数据库这三个关键组件,它们共同构建了一个功能完善的...
本项目是基于JSP(JavaServer Pages)+MVC(Model-View-Controller)设计模式+Servlet实现的分页功能,这是一套经典的Java Web开发架构。 首先,我们来理解JSP。JSP是Java的一种视图技术,它允许开发者在HTML中嵌入...
5. 查询和分页:Servlet处理查询请求,返回特定条件下的帖子列表,JSP则展示结果,可能涉及分页功能。 6. 错误处理和异常管理:通过Servlet捕获和处理可能出现的错误,提供友好的错误页面。 通过学习和分析这个论坛...
综上所述,"基于jsp+servlet+ajax的图书管理系统"是一个利用Java Web技术实现的、具有高效互动性的图书管理应用,它结合了前后端分离、异步数据交换等现代Web开发理念,为用户提供流畅的使用体验。
【hibernate jsp/servlet +AJAX的文档管理系统(毕业设计)】 本文将深入探讨一个基于Hibernate、JSP/Servlet以及AJAX技术构建的文档管理系统。这个系统旨在提供一个高效、用户友好的平台,用于存储、检索和管理...
【基于jsp+servlet实现的教材征订与发放管理系统】 该系统是使用Java Web技术栈,主要包括JSP(JavaServer Pages)和Servlet,构建的一个教育领域信息化解决方案。它旨在提高教材征订与发放过程的效率,确保教育...
本篇将详细介绍如何在JSP(JavaServer Pages)环境中,结合Oracle数据库实现分页功能,并通过一个名为"jsp分页 oracle 插件demo"的示例来演示具体步骤。 首先,我们需要了解JSP分页的基本原理。在JSP中,分页通常...
在这个系统中,JSP(JavaServer Pages)和Servlet是核心组件,它们协同工作以实现动态网页的生成和后端业务逻辑的处理。 JSP是Java平台上的动态网页技术,它允许开发人员在HTML或XML文档中嵌入Java代码,以实现页面...
【标题】基于Jsp+Servlet实现图书管理系统 这个项目是一个基于Java Web技术的图书管理系统,主要使用了JSP(JavaServer Pages)和Servlet技术来构建前端和后端交互的平台。JSP是一种动态网页开发技术,它允许在HTML...