纯jsp页面的分页和查询
JSP分页显示代码
ShowRecordByPage.javapackage database.operation;import java.sql.*;import com.sun.rowset.*;public class ShowRecordByPage{ int pageSize=10; //每页显示的记录数int pageAllCount=0; //分页后的总页数int showPage=1 ; //当前显示页StringBuffer presentPageResult; //显示当前页内容CachedRowSetImpl rowSet; //用于存储ResultSet对象String databaseName="user"; //数据库名称String tableName="user_tab"; //表的名字String user="sa" ; //用户String password="123" ; //密码String 字段[]=new String[100] ;int 字段个数=0;public ShowRecordByPage(){ presentPageResult=new StringBuffer();try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newIns tance();}catch(Exception e){}}public void setPageSize(int size){ pageSize=size;字段个数=0;Stringuri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+databaseName;try{ Connectioncon=DriverManager.getConnection(uri,user,password);DatabaseMetaData metadata=con.getMetaData();ResultSet rs1=metadata.getColumns(null,null,tableName,null);int k=0;while(rs1.next()){ 字段个数++;字段[k]=rs1.getString(4); //获取字段的名字k++;}Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);ResultSet rs=sql.executeQuery("SELECT * FROM"+tableName);rowSet=new CachedRowSetImpl(); //创建行集对象rowSet.populate(rs);con.close(); //关闭连接st();int m=rowSet.getRow(); //总行数int n=pageSize;pageAllCount=((m%n)==0)?(m/n):(m/n+1);}catch(Exception exp){}}public int getPageSize(){ return pageSize;}public int getPageAllCount(){ return pageAllCount;}public void setShowPage(int n){ showPage=n;}public int getShowPage(){ return showPage;}public StringBuffer getPresentPageResult(){ if(showPage>pageAllCount)showPage=1;if(showPage<=0)showPage=pageAllCount;presentPageResult=show(showPage);return presentPageResult;}public StringBuffer show(int page){ StringBuffer str=new StringBuffer();str.append("<table border=1>");str.append("<tr>");for(int i=0;i<字段个数;i++){ str.append("<th>"+字段[i]+"</th>");}str.append("</tr>");try{ rowSet.absolute((page-1)*pageSize+1);for(int i=1;i<=pageSize;i++){ str.append("<tr>");for(int k=1;k<=字段个数;k++){ str.append("<td>"+rowSet.getString(k)+"</td>");}str.append("</tr>");rowSet.next();}}catch(SQLException exp){}str.append("</table>");return str;}public void setDatabaseName(String s){ databaseName=s.trim();}public String getDatabaseName(){ return databaseName;}public void setTableName(String s){ tableName=s.trim();}public String getTableName(){ return tableName;}public void setPassword(String s){ password=s.trim();;}public void setUser(String s){ user=s.trim();}public String getUser(){ return user;}}showByPage.jsp<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><%@ page import="database.operation.*" %><jsp:useBean id="look" class="database.operation.ShowRecordByPage" scope="session" /><jsp:setProperty name="look" property="databaseName" value="factory" /><jsp:setProperty name="look" property="tableName" value="employee" /> <jsp:setProperty name="look" property="user" value="sa" /><jsp:setProperty name="look" property="password" value="sa" /><jsp:setProperty name="look" property="pageSize" value="2" /><HTML><BODY>数据库<jsp:getProperty name= "look" property="databaseName"/>中<jsp:getProperty name= "look" property="tableName"/>表的记录将被分页显示。
jsp的功能
jsp的功能JSP(JavaServer Pages)是一种用来开发动态Web页面的Java技术。
它可以将Java代码嵌入到HTML文档中,以实现更丰富的页面交互和动态数据展示功能。
以下是JSP的一些常见功能。
1. 动态页面生成:JSP可以根据用户请求,动态生成HTML页面,并将页面内容返回给浏览器。
这使得网页内容可以根据不同的条件和参数进行自适应的展示。
开发者可以在JSP中使用Java代码来处理用户请求,调用数据库、调用其他Java对象等。
2. 数据库访问:JSP可以直接连接数据库,并执行数据库操作。
通过使用Java的数据库连接API,JSP可以从数据库中查询、添加、修改和删除数据,然后将结果展示在Web页面上。
这可以实现数据的持久化和动态更新。
3. 表单处理:JSP可以处理用户提交的表单数据。
通过在JSP页面中定义HTML表单元素,并在表单的提交动作中指定JSP的URL,JSP可以接收表单数据,并对数据进行验证、处理和存储。
这些可以用来实现用户注册、登录、数据录入等功能。
4. 条件判断和循环:JSP支持使用Java的条件语句和循环语句。
这使得可以在JSP页面中根据不同的条件展示不同的内容,或者重复展示一段代码块。
通过使用if语句、switch语句和for循环等,可以实现更复杂的页面逻辑。
5. 页面重定向和转发:JSP可以将请求重定向到其他页面,或者将请求转发到另一个JSP或Servlet。
这使得可以在不同的页面之间进行跳转和协作,实现业务流程的分步处理。
6. 用户认证和会话管理:JSP提供了与用户认证和会话管理相关的内置对象。
通过这些对象,可以实现用户登录、注销、用户角色权限控制等功能。
同时,JSP还支持在页面级别和应用程序级别上进行会话管理。
7. 页面模板和复用:JSP支持使用页面模板和标签库进行页面复用。
可以将多个JSP页面中的公共部分抽取出来,形成一个模板文件,然后在其他JSP页面中引用该模板文件。
jsp中用list分页
<%
if (currentNum != PageSum&&PageSum!=0) {
%>
</td>
<td width="46%" valign="middle" class="STYLE1"><div align="right">
<table width="100%" height="20" border="0" cellpadding="0" cellspacing="0">
<a href="score_list_banji.jsp?pn=<%=PageSum%>">尾页</a>
<%
}egt;
<li title="<%=me.getMess() %>">
<div class="cont"><a href="score_banji.jsp?id=<%=rsa.getString("id") %>"><%=me.getMess() %></a>
</div>
<div class="shijian">2012-02-09</div>
JSP 分页查询关键代码
JSP 分页查询关键代码1.连接数据库的基类:package mons;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class GetConnection {protected Connection conn = null;//连接字符串protected PreparedStatement ps = null;//预编译并存储 SQL 指令protected ResultSet rs = null;//查询结果集private static final String DRIVER ="com.microsoft.sqlserver.jdbc.SQLServerDriver";//加载数据库驱动的字符串private static final String URL ="jdbc:sqlserver://localhost:1433;databaseName=BOOKDB";//连接数据库的字符串private static final String USERNAME = "sa";//数据库用户名private static final String PASSWORD = "accp";//数据库用户密码/***获得数据库连接*@return*/public Connection getConn() {Connection conn = null;try {Class.forName(DRIVER);//加载数据库驱动conn =DriverManager.getConnection(URL,USERNAME,PASSWORD);//连接数据库} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}/** 释放资源*/public void closeAll(){try {if(rs != null){rs.close();}if(ps != null){ps.close();}if(conn != null){conn.close();}} catch (SQLException e) {e.printStackTrace();}finally{conn = null;ps = null;rs = null;}}}2.实体类代码:package com.book.entity;public class Book {private int book_id;private String book_name;private String book_num;private String book_author;private double book_price;private String book_synopsis;private String book_publishTime;public String getBook_author() {return book_author;}public void setBook_author(String book_author) { this.book_author = book_author;}public int getBook_id() {return book_id;}public void setBook_id(int book_id) {this.book_id = book_id;}public String getBook_name() {return book_name;}public void setBook_name(String book_name) { this.book_name = book_name;}public String getBook_num() {return book_num;}public void setBook_num(String book_num) { this.book_num = book_num;}public double getBook_price() {return book_price;}public void setBook_price(double book_price) { this.book_price = book_price;}public String getBook_publishTime() {return book_publishTime;}public void setBook_publishTime(String book_publishTime) { this.book_publishTime = book_publishTime;}public String getBook_synopsis() {return book_synopsis;}public void setBook_synopsis(String book_synopsis) { this.book_synopsis = book_synopsis;}}3.分页查询代码:package com.book.pagin;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import mons.GetConnection;import com.book.entity.Book;public class BookPaginQuery extends GetConnection { private final int PAGEROW = 8;//每页显示的行数private int countRow;//总行数private int countPage;//总页数private int currentlyPage;//当前第几页/***得到总页数*@return*/public int getCountPage() {return countPage;}/***设置总页数*@param countPage*/public void setCountPage() {//通过总行数设置总页数if (this.countRow % this.PAGEROW == 0) {//如果总行数除以每页显示的行数余数为零时,总页数等于它们的商this.countPage = this.countRow / this.PAGEROW;} else {//否则,总页数等于它们的商加1this.countPage = this.countRow / this.PAGEROW + 1;}}/***得到总行数*@return*/public int getCountRow() {return countRow;}/***设置总行数*@param countRow*/public void setCountRow() {//通过聚合函数查询 TBL_BOOK 表中一共有多少条数据,并把值存储到 countRow 中String sql = "SELECT COUNT(*) FROM TBL_BOOK";try {PreparedStatement ps =super.getConn().prepareStatement(sql);ResultSet rs = ps.executeQuery();if (rs.next()) {this.countRow = rs.getInt(1);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/***得到当前页数*@return*/public int getCurrentlyPage() {return currentlyPage;}/***设置当前页数*@param currentlyPage*/public void setCurrentlyPage(int currentlyPage) {this.currentlyPage = currentlyPage;}/***分页查询*@param page当前页数*@return*/public List<Book> myBookPaginQuery(int page){List<Book> bookList = new ArrayList<Book>();int num = (page-1) * this.PAGEROW; //要被排除的行数String sql = "SELECT top("+this.PAGEROW+") * FROM TBL_BOOK WHERE book_id NOT IN (SELECT TOP("+num+") book_id FROM TBL_BOOK)";try {PreparedStatement ps =super.getConn().prepareStatement(sql);//预编译 SQL 指令并把预编译好的 SQL 存储在 PreparedStatement 对象中ResultSet rs = ps.executeQuery(); //执行预编译好的 SQL 指令,并把获得的查询结果集存储在 ResultSet 对象中while(rs.next()) {//通过 while 循环迭代出结果集中的所有数据,并把它们存储在 List<Book> 集合中Book book = new Book();book.setBook_id(rs.getInt("book_id"));book.setBook_name(rs.getString("book_name"));book.setBook_num(rs.getString("book_num"));book.setBook_author(rs.getString("book_author"));book.setBook_price(rs.getDouble("book_price"));book.setBook_synopsis(rs.getString("book_synopsis"));book.setBook_publishTime(rs.getString("book_publishTime"));bookList.add(book);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bookList;}}4.JSP 页面代码:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <jsp:directive.page import="com.book.pagin.BookPaginQuery"/><jsp:directive.page import="com.book.entity.Book"/><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><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="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><%request.setCharacterEncoding("UTF-8"); //设置编码集String strPageNum = request.getParameter("pageNum"); //获得当前页数的字符串int pageNum = 1;//把当前页数的字符串转化为数字,如果转化失败,则设置当前页数为 1 ,即首页try{pageNum = Integer.parseInt(strPageNum);} catch (Exception e){pageNum = 1;}BookPaginQuery bookPaginQuery = new BookPaginQuery();//实例化BookPaginQuery 类,得到 bookPaginQuery 对象bookPaginQuery.setCountRow(); //设置总行数bookPaginQuery.setCountPage(); //设置总页数int countPage = bookPaginQuery.getCountPage(); //获得总页数//如果当前页数小于 0 或大于总页数,则把当前页重新设为 1 ,即首页if (pageNum<=0 || pageNum>countPage){pageNum = 1;}bookPaginQuery.setCurrentlyPage(pageNum); //设置当前页int currentlyPage = bookPaginQuery.getCurrentlyPage(); //获得当前页List<Book> bookList = bookPaginQuery.myBookPaginQuery(pageNum); //分页查询if(bookList!=null && bookList.size()>0) {%><table border="1" align="center"><tr><th align="center">图书名称</th><th align="center">图书编号</th><th align="center">作者</th><th align="center">价格</th><th align="center">图书简介</th><th align="center">出版日期</th></tr><%for (int i=0; i<bookList.size(); i++) {Book book = bookList.get(i);%><tr><td width="200"><%=book.getBook_name() %></td><td width="100"><%=book.getBook_num() %></td><td width="50"><%=book.getBook_author() %></td><td width="50"><%=book.getBook_price() %></td><td width="300"><%=book.getBook_synopsis() %></td><tdwidth="100"><%=book.getBook_publishTime().substring(0,10) %></td> </tr>}%><tr><td colspan="6" align="center"><%if(currentlyPage==1){%>共<%=countPage %>页 当前第<%=currentlyPage %>页 首页 上一页 <a href="index.jsp?pageNum=<%=currentlyPage+1 %>">下一页</a> <a href="index.jsp?pageNum=<%=countPage %>">尾页</a> <%}else if(currentlyPage==countPage){%>共<%=countPage %>页 当前第<%=currentlyPage %>页 <a href="index.jsp?pageNum=1">首页</a> <a href="index.jsp?pageNum=<%=currentlyPage-1 %>">上一页</a> 下一页 尾页 <%}else{%>共<%=countPage %>页 当前第<%=currentlyPage %>页 <a href="index.jsp?pageNum=1">首页</a> <a href="index.jsp?pageNum=<%=currentlyPage-1 %>">上一页</a> <a href="index.jsp?pageNum=<%=currentlyPage+1 %>">下一页</a> <a href="index.jsp?pageNum=<%=countPage %>">尾页</a> <%}%></td></tr></table>}else{%><h2 align="center">对不起,没有相应的信息……</h2> <%}%></body></html>最后效果如下图:点击首页:点击下一页:点击尾页:。
JSP 实现数据的分页显示
JSP 实现数据的分页显示在JSP中,数据的分页显示非常实用,它的应用可以使数据表中的多条数据实现分页显示,使数据的显示更加条理清晰。
本扩展练习的目的是:使数据表bookinfo 中的数据实现分页显示,并实现数据的翻页功能。
实例中有两个文件Pagescount.jsp 和Pages.jsp,其中Pagescount.jsp实现数据库的连接并查询数据返回数据集,同时设置每页显示的记录数和计算数据页数。
Pages.jsp实现数据的分页显示。
(1)创建一个命名为Pagescount.jsp的信息查询页面。
【新建】|【JSP (advanced Templates)】命令,弹出【新建JSP页面】对话框,在对话框的文件名称中输入Pagescount.jsp,单击【完成】按钮。
(2)添加JSP文件要用到的Java类包、编码。
查询bookinfo数据表中数据并返回数据集,最后,计算数据集中的记录数并设置显示的页数。
(4)创建一个命名为Pages.jsp的信息查询页面。
【新建】|【JSP (advanced Templates)】命令,弹出【新建JSP页面】对话框,在对话框的文件名称中输入Pages.jsp,单击【完成】按钮。
(5)添加JSP文件要用到的Java类包、编码。
(6)在JSP文件中输出如下内容并保存。
</TD><%}%><TD Width=150><FORM action=Pages.jsp method=POST>到<INPUT type="text" name=ToPage style="HEIGHT: 25px; WIDTH: 40px"value=<%= ShowPage%> > 页</FORM></TD></TR></TABLE></CENTER></BODY></HTML>(7)执行上述代码,结果如图10-18所示。
JSP制作简单登录界面实例
JSP制作简单登录界⾯实例现在很多web项⽬都能⽤到登录界⾯,本⽂介绍⼀下JSP制作简单登录界⾯,分享给⼤家,具体如下:运⾏环境eclipse+tomcat+MySQL 不知道的可以参考项⽬列表这⾥我先把jsp⽂件先放在Web-INF外⾯访问1.需要建⽴的⼏个⽂件在图上.jsp2.还要导⼊MySQL的jar包mysql-5.0.5.jar,导到WEB-INF中的lib⽂件夹就可以不需要Bulid Path3.开始编写代码:代码演⽰:index.jsp就好像⼀般⽹站的⾸页⼀样感觉,将header.jsp和footer.jsp引⼊其中<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>⾸页</title><style>#nav>ul>li{float:left;margin-left:50px;}#login{clear:both;}</style></head><body><!-- 引⼊header.jsp的头部⽂件 --><%@ include file="header.jsp" %><div id="login"><a href="login.jsp" rel="external nofollow" ><button>登陆</button></a></div><!-- 引⼊footer.jsp的脚部⽂件 --><%@include file="footer.jsp" %></body></html>header.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><div id="nav"><ul><li ><a href="">导航1</a></li><li><a href="">导航2</a></li><li><a href="">导航3</a></li><li><a href="">导航4</a></li><li><a href="">导航5</a></li><li><a href="">导航6</a></li></ul></div>footer.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><div><p>xxxxxxxxxxx可以试试|xxxxxxxxxxxx技术有限公司</p><p>京 ICP 证 1234567 号|Copyright © 1999-2017, All Rights Reserved </p></div>页⾯内容展⽰:login.jsp登陆⽤户名密码填写界⾯<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登陆页⾯</title></head><body><%--表单--%><fieldset><legend>登陆界⾯</legend><form action="test.jsp" method="post"><input type="text" name="username"><br><input type="password" name="password"><br><input type="submit" value="登陆"><!-- EL语句,后⾯验证表单时,验证错误反回信息-->${error}</form></fieldset></body></html>内容显⽰:test.jsp 是对表单login.jsp 的提交的内容与数据库中的数据对⽐验证,再相应的跳转<%@page import="java.sql.*"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%//请求获取login.jsp的⽤户名username的值String username=request.getParameter("username");//请求获取login.jsp的密码password的值String password=request.getParameter("password");//数据库MySQL的地址String DBURL="jdbc:mysql://localhost:3306/zhou?useUnicode=true&characterEncoding=utf-8";String DBName="root"; //登⼊⽤户名String DBPwd="123456";//登⼊密码//加载mysql驱动Class.forName("com.mysql.jdbc.Driver");//连接数据库Connection conn=DriverManager.getConnection(DBURL,DBName,DBPwd);//创建Statement对象Statement st=conn.createStatement();//sql语句,搜索这个username和password在数据库是否存在String sql="select * from user where name='"+username+"'and pwd='"+password+"'";//运⾏sql语句,并把得到的结果放⼊结果集ResultSet中ResultSet rs=st.executeQuery(sql);//判断这个结果集是否存在,⼀般username只有⼀个if(rs.next()){//设置⼀个username,将后⾯username其内容赋值给前⾯⼀个username,可以以便下⼀个页⾯使⽤request.setAttribute("username", username);//跳转页⾯到userpage.jsprequest.getRequestDispatcher("userpage.jsp").forward(request, response);}else{//设置⼀个error,将后⾯的字赋给这个error,以便先⼀个跳转页⾯的使⽤,request的作⽤域有限request.setAttribute("error", "⽤户名或密码错误");request.getRequestDispatcher("login.jsp").forward(request, response);}conn.close();rs.close();%>登陆错误显⽰的页⾯内容:userpage.jsp这个页⾯就是登陆成功之后显⽰的页⾯<%@page import="javafx.scene.chart.PieChart.Data"%><%@page import="java.util.Date"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>⽤户界⾯</title></head><body><div><!-- ${username}是获取到test.jsp 中判断中重新设置的username,知道是谁登陆了,这个是谁的页⾯ --> <p>${username},你好,登陆成功!!</p></div><%//session的作⽤域问题,可以记录⼀个⽹站的浏览量。
如何利用前端开发技术实现网站的分页与搜索功能
如何利用前端开发技术实现网站的分页与搜索功能在当今的互联网时代,网站已成为人们获取信息和展示自己的重要渠道之一。
对于一个功能完善的网站来说,除了良好的界面设计和响应速度,更需要提供分页与搜索功能来方便用户的浏览和定位。
本文将介绍如何利用前端开发技术实现网站的分页与搜索功能。
一、分页功能的实现分页功能旨在将大量的数据按照一定的规则划分成多个页面,使用户可以方便地浏览。
实现分页功能可以通过前端技术和后端技术相结合的方式来完成。
1. 前端技术前端技术可以使用HTML、CSS和JavaScript来实现。
在前端页面中,可以通过JavaScript监听用户的操作,比如点击“下一页”按钮或者页码链接,然后通过AJAX技术向服务器请求相应的数据并渲染到页面上。
同时,通过CSS来美化分页的样式,使之更加符合网站整体的风格。
2. 后端技术后端技术主要负责处理前端传递过来的请求,并返回相应的数据。
可以使用服务器端的编程语言,比如PHP、Java或Python来处理分页逻辑,从数据库中获取相应的数据并进行分页处理。
后端还可以通过HTTP头部信息中的相关参数来判断当前页码、每页显示数量等信息,并返回相应的数据给前端。
通过前端和后端的协作,可以实现网站的分页功能。
前端负责监听用户操作并向后端请求数据,后端则负责处理请求并返回数据,前端再将返回的数据渲染到页面上,实现分页效果。
二、搜索功能的实现搜索功能是现代网站的重要组成部分,通过用户输入关键词来定位所需的信息。
实现搜索功能同样可以采用前后端相结合的方式来完成。
1. 前端技术前端技术可以使用HTML、CSS和JavaScript来实现。
在前端页面中,可以通过HTML的表单元素来获取用户输入的关键词,并使用JavaScript监听表单的提交事件。
当用户提交表单时,JavaScript可以获取用户输入的关键词,并将其作为参数通过AJAX技术发送给后端。
2. 后端技术后端技术主要负责处理前端传递过来的请求,并根据用户的关键词进行数据的搜索。
pagehelper 的doselectpage方法
pagehelper 的doselectpage方法
PageHelper的doSelectPage方法是PageHelper插件中的一个核心方法,用于实现数据库分页查询功能。
该方法的作用是根据传入的参数进行查询,并返回查询结果的分页数据。
doSelectPage方法的主要参数包括pageNum、pageSize和count参数。
pageNum 参数表示当前页码,表示要查询的页数;pageSize参数表示每页显示的记录条数;count参数表示是否查询总记录数。
在使用doSelectPage方法时,还需要在方法调用之前使用PageHelper.startPage方法设置相关的分页参数。
使用doSelectPage方法进行分页查询非常简单。
首先,在代码中引入PageHelper插件的依赖,并通过引入的类进行startPage方法的初始化设置。
然后,在执行查询的方法中调用doSelectPage方法,并传入相关的查询条件和分页参数。
最后,通过使用doSelectPage方法返回的Page对象获取查询结果的分页数据。
doSelectPage方法返回的Page对象包含了查询结果的分页数据,比如当前页数据、总记录数、总页数等信息。
可以通过Page对象提供的方法来获取这些数据,并在前端页面进行展示。
PageHelper的doSelectPage方法是开发中常用的一个方法,可以极大地简化数据库分页查询的实现过程。
通过合理使用该方法,可以有效提高查询效率,提升用户体验。
JSP页面的构成
JSP页⾯的构成JSP页⾯就是带有JSP元素的常规Web页⾯,它由静态内容和动态内容构成。
其中,静态内容指HTML元素,动态内容(JSP元素)包括指令元素、脚本元素、动作元素、注释等内容。
1、指令元素指令元素主要⽤于为转换阶段提供JSP页⾯的相关信息,指令不会产⽣任何输出到当前的输出流中,它指定了有关页⾯本⾝的信息,这些信息在请求之间⼀直保持不变。
指令元素语法为<%@ directive{attr="value"}%>。
指令元素有三种:page、include、taglib。
1)page该指令⽤于整个页⾯,定义与页⾯相关的属性,它是JSP页⾯和容器的通信员,⼀般放在JSP页⾯的第⼀⾏。
与page相关的属性如下:属性描述buffer指定out对象使⽤缓冲区的⼤⼩autoFlush控制out对象的缓存区contentType指定当前JSP页⾯的MIME类型和字符编码errorPage指定当JSP页⾯发⽣异常时需要转向的错误处理页⾯isErrorPage指定当前页⾯是否可以作为另⼀个JSP页⾯的错误处理页⾯extends指定servlet从哪⼀个类继承import导⼊要使⽤的Java类info定义JSP页⾯的描述信息isThreadSafe指定对JSP页⾯的访问是否为线程安全language定义JSP页⾯所⽤的脚本语⾔,默认是Javasession指定JSP页⾯是否使⽤sessionisELIgnored指定是否执⾏EL表达式isScriptingEnabled确定脚本元素能否被使⽤a、import="导包列表",可以多次导⼊,也可以⽤逗号分隔开。
b、language=“scriptingLangeuage”,指定在脚本元素使⽤的脚本语⾔,默认是Java。
c、contentType="cinfo",指定HTTP响应的头部的Content-Type值。
如何在JavaScript中实现数据的分页和加载更多
如何在JavaScript中实现数据的分页和加载更多数据分页和加载更多是在Web开发中常见的需求,通过这种方式可以提高页面性能和用户体验。
在JavaScript中,我们可以使用不同的方法来实现数据的分页和加载更多。
一种常见的实现方式是通过分页查询来获取数据。
具体步骤如下:1.设置每页显示的数据条数和当前页数。
```var pageSize = 10; //每页显示的数据条数var currentPage = 1; //当前页数```2.定义一个函数,用于向后台发送请求获取数据。
```function getData(page) {//发送请求获取数据并进行处理// ...}```3.在页面加载完成后,调用getData函数并传入初始的currentPage值来获取第一页的数据。
```window.onload = function() {getData(currentPage);}```4.当用户点击下一页或上一页按钮时,调用getData函数,并传入对应的页数,从而获取相应的数据。
```//下一页按钮点击事件document.getElementById('nextPageBtn').onclick = function() {getData(currentPage + 1);currentPage += 1;}//上一页按钮点击事件document.getElementById('prevPageBtn').onclick = function() {if (currentPage > 1) {getData(currentPage - 1);currentPage -= 1;}}```另一种常见的实现方式是通过滚动加载来实现加载更多的效果。
具体步骤如下:1.监听滚动事件。
```window.onscroll = function() {//判断页面是否滚动到底部// ...}```2.在滚动事件中判断页面是否滚动到底部,如果是则加载更多数据。
JSP 分页查询
JSP 分页查询1.首先创建数据库,以图书信息查询系统为例,在SQL Server 中创建一个名为BOOKDB的数据库,并在其库中创建一个TBL_BOOK 表,存储图书信息。
SQL 脚本如下:/*---设置当前数据库为master ,以便访问sysdatabases 表---*/USE masterGO/*---检测是否已经存在bookDB 数据库:查询master 数据库中的系统表sysdatabases ,如果存在则删除该数据库---*/IF EXISTS(SELECT*FROM sysdatabases WHERE name='BOOKDB') DROP DATABASE BOOKDB --删除数据库GO/*-----创建数据库-----*/CREATE DATABASE BOOKDBON primary(/*--数据文件的具体描述--*/NAME='BOOKDB_data',--主数据文件的逻辑名称FILENAME='D:\BOOKDB_data.mdf',--主数据文件的物理名称SIZE= 5mb,--主数据文件的初始大小MAXSIZE= 80mb,--主数据文件增长的最大值FILEGROWTH= 15%--主数据文件的增长率)LOG ON(/*--日志文件的具体描述--*/NAME='BOOKDB_log',--日志文件的逻辑名称FILENAME='d:\BOOKDB_log.ldf',--日志文件的物理名称SIZE= 3mb,--日志文件的初始大小MAXSIZE= 20mb,--日志文件增长的最大值FILEGROWTH= 2mb --日志文件的增长率)GO/*---设置当前数据库为bookDB ,以便访问bookDB 数据库---*/USE BOOKDBGO/*---检测在bookDB 数据库中是否已经存TBL_BOOK 表:查询系统表sysobjects ,如果存在则删除该表---*/IF EXISTS(SELECT*FROM sysobjects WHERE name='TBL_BOOK') DROP TABLE TBL_BOOK --删除数据库/*-----创建数据库表TBL_BOOK (图书信息)-----*/CREATE TABLE TBL_BOOK(book_id INT IDENTITY(1000,1)PRIMARY KEY,--标识列,自增,主键book_name VARCHAR(50),--图书名称book_num VARCHAR(50)NOT NULL,--图书编号,非空book_author VARCHAR(50)NOT NULL,--图书作者,非空book_price MONEY,--图书价格book_synopsis TEXT,--图书简介book_publishTime DATETIME--图书出版日期)GO/*--添加唯一约束(将bookNum 作为唯一键)--*/ALTER TABLE TBL_BOOKADD CONSTRAINT UQ_book_num UNIQUE(book_num)/*--添加默认约束(如果publishTime 不填,默认当前时间)--*/ALTER TABLE TBL_BOOKADD CONSTRAINT DF_book_publishTime DEFAULT(GETDATE())FORbook_publishTimeGO/*--添加数据--*/INSERT INTO TBL_BOOKSELECT'SQL Server 高级编程','XV001001','张无忌','86','重点讲解T-SQL 编程','2010-08-08'UNIONSELECT'MySQL 高级编程','XV001002','张国荣','36','重点讲解MySQL 的高级运用','2010-08-07'UNIONSELECT'JAVA 高级编程','XV001003','周杰伦','130','零基础学JAVA','2010-02-06'UNIONSELECT'C# 高级编程','XV001004','张三丰','99','c# 从入门到精通','2010-07-07'UNIONSELECT'JSP 高级编程','XV001005','陆逊','65','JSP 新手入门新教材','2010-02-03'UNIONSELECT'PHP 高级编程','XV001006','周瑜','45','好学好用PHP 经典教材','2010-04-07'UNIONSELECT'ASP 高级编程','XV001007','诸葛亮','180','最牛的c# 教程体系','2010-09-08'UNIONSELECT'ASP.ENT 高级编程','XV001008','曹操','250','一看就会的教材','2010-08-23'UNIONSELECT'Oracle 高级编程','XV001009','李白','140','Oracle 新手解惑','2010-08-18'UNIONSELECT'DB2 高级编程','XV001010','孔子','860','db2 程序员的宝典','2010-08-01'UNIONSELECT'MySQL 手册','XV001011','孙子','43','MySQL 编程最佳助手','2010-02-02'UNIONSELECT'SQL 手册','XV001012','老子','100','数据库通用手册,程序员必备','2010-01-07'UNIONSELECT'JAVA API 文档','XV001013','周仓','110','JAVA 程序员必备手册','2010-02-05'UNIONSELECT'C# 完全手册','XV001014','鲁迅','92','c# 程序员的良伴','2010-03-07' UNIONSELECT'C 高级编程','XV001015','和珅','120','一切程序的起点','2010-02-13' UNIONSELECT'C++ 高级编程','XV001016','纪晓岚','145','学会C++,走片天下都不怕','2010-04-27'UNIONSELECT'C++ 完全手册','XV001017','薛宝钗','118','选手册,C++ 完全手册才是好手册','2010-09-18'UNIONSELECT'C 语言入门到精通','XV001018','雷锋','150','不要让程序把你拒之门外','2010-08-21'UNIONSELECT'数据结构与算法C++ 版','XV001019','雄霸','108','最简单的设计思维','2010-08-11'UNIONSELECT'设计模式','XV001020','徐峥','148','最具权威的程序设计书籍','2010-09-21'UNIONSELECT'数据结构与算法JAVA 版','XV001021','李寻欢','240','最好的程序设计书籍','2010-05-18'GO2.在Eclipse 中新建一个项目名为BookPagin ,并在其项目的src 下创建mons (公共包)、com.book.entity(实体包)、com.book.pagin(JavaBean 包) ,然后将SQL Server 的JDBC 驱动包复制到WebRoot 下的WEB-INF 下的lib 目录中。
前端开发技术实现分页功能的方法
前端开发技术实现分页功能的方法现如今,互联网的快速发展使得网页的内容变得越来越丰富和庞大,这就给前端开发带来了很大的挑战。
用户很难一次性加载并浏览完全部的内容。
因此,实现分页功能成为了前端开发过程中必备的技术之一。
分页是一种将数据分割成不同页面进行展示的方式,用户可以通过点击分页器或滚动来浏览内容,从而提升用户体验和性能。
在前端开发中,实现分页功能有以下几种方法。
1. 传统分页最常见的分页方式就是传统的分页方式。
在这种方式下,后端会根据前端传递的页码和每页显示数量,返回对应页码的数据。
前端收到数据后,根据返回的数据进行渲染。
该方式简单易懂,但有一定的性能问题,因为每次加载新的页面都需要向后端请求数据。
2. 懒加载懒加载是一种更加智能和高效的分页方式。
它会根据用户的滚动行为动态加载新的数据,而不是一次性将所有数据加载完毕。
懒加载可以提升整体的页面加载速度,并且减轻了服务器的压力。
在懒加载中,分页功能可以通过监听滚动事件,当用户滚动到页面底部时,自动加载下一页的数据。
这种方式可以利用一些插件或库来实现,如Intersection Observer。
3. 无限滚动无限滚动是一种类似于懒加载的方式,它可以无限地加载数据,用户可以不断滚动浏览新的内容。
在无限滚动中,页面会根据用户的滚动行为自动加载下一页的内容,并在当前内容末尾添加新的数据。
这种方式可以提升用户的浏览体验,并减少页面的跳转次数。
它可以通过监听滚动事件,当用户滚动到页面底部时,自动加载下一页的数据。
同样的,也可以使用一些插件或库来实现。
4. 利用URL参数前端还可以通过URL参数来实现分页功能。
在这种方式下,用户的操作会通过改变URL参数的方式来实现分页。
当用户点击分页器时,会改变URL参数的值,并重新加载页面。
前端可以通过解析URL参数来获取相应的页码,并从后端请求对应页码的数据。
这种方式能够在用户操作后进行前进或后退,方便用户对内容的查看和导航。
一个通用JSP数据库分页例程
关 键 词 : 据 库 分 页 ;S Jv 数 据 库 连 接 数 J P;a a
Ab t a t s r c :Fo u i g n h q s in f m a na i c sn o t e ue to o g n mou d t b s s aaae q e y h s a e p o e i o h c r e d t b s p g n t n u r ,t i p p r r b s nt t e u r nt a a a e a i a i o tc o o M e n h l , tp t o wa d a d i t o u e n d t i a e hn lgy a w i i u s f r r n n r d c s i e a l e
Sr gsro / 数 据 库 连 接 字 符 串 ti t n; / n C
Sr gsrQL / QL 语 句 ti tS ;/ S n itnP gSz;/ 一 页 显 示 的记 录 数 n ta e i i e / itnRo o n ; / 录 总 数 n t wC u t / 记 i n nP gC u t / 页 数 t ta e n ;/ 总 i o
< % @ p g a u ge “a a i p t “a a.q * ”% > a elng a = jv ” m or = jv s l
u ie slp o r m fJ P pa iain. nv ra r g a o S gn t o Ke r : aa a ep gnain;SP;DBC y wo ds d tb s a i to J J
分页的实现步骤
为什么需要分页?1.从客户角度来讲,数据内容过多,查看数据非常不便。
2.从服务器和网络的角度来讲,查这么多数据,传输这么多数据,是一种效率很低的做法。
分页的核心SQL:最简单最原始的分页:分页的简单过程:用户点击第一页传递一个参数:Num=1到后台,服务器获取num=1将该参数传到Dao 中,dao中:select * from tb_article where id>10 limit ?,?;, ps.setint((num-1)*10),返回一个List,传递到jsp中进行显示,发送给客户端。
1.2.3.访问:channel.jsp,然后点击在下面的页号导航即可看到简单的分页效果。
首页上一页1,2,3,4,5,6,7,8,9,10 下一页末页共101页分页的实现原理:1.获得需要显示的总的记录数rowCount—》从数据库中取2.设定每页最多显示的记录数size—》103.指定显示的页码:num →作为参数得到4.所要显示的数据对象→根据startRow和size从数据库中查出!5.根据rowCount,size,num可计算出其余的元素:a)本页面从第几个记录开始:startRow = (this.num-1) * size;b)共有多少页:pageCount = (int) Math.ceil((double)rowCount/size);c)list:包含了所要显示的数据对象的集合d)下一页:next=Math.min( this.pageCount, this.num+1)e)上一页:prev = Math.max(1 , this.num-1)f)页号控制元素:numCount:每页最多显示多少页号。
(一共显示numCount+1个页号)start = Math.max(this.num-numCount/2, first); //本页显示页号从多少页开始end = Math.min(start+numCount, last); //本页显示页号在多少页结束页号控制:if(end-start < numCount){ //当本页总显示的页号数不够numCount时,如何计算起始页号。
如何在JavaScript中实现数据的分页和加载更多
如何在JavaScript中实现数据的分页和加载更多数据分页和加载更多是前端开发中非常常见的功能,特别是在需要展示大量数据的情况下,常常需要将数据进行分页展示,并且提供加载更多的功能来满足用户的浏览需求。
在JavaScript中实现数据分页和加载更多可以通过一些常见的方法和技巧来实现,接下来我们将介绍如何在JavaScript中实现数据的分页和加载更多的功能。
一、数据分页的基本原理数据分页的基本原理是将大量的数据,按照一页显示的数据量,进行分割成多页进行展示。
其中包括两个关键因素,一是数据量的分割,二是页面的展示控制。
在JavaScript中,我们可以通过对数据进行分片和处理,并且通过一些分页插件或者自定义的分页逻辑来进行页面的展示。
二、实现数据分页的步骤要实现数据的分页,我们需要按照以下步骤来进行。
1.获取数据首先,我们需要获取服务器端的数据。
这可以通过Ajax请求,或者使用一些前端模拟数据来模拟实现。
一般来说,我们会得到一个包含所有数据的数组或者对象。
2.分割数据接下来,我们需要将获取到的数据进行分割。
我们可以定义一个固定的页大小,比如每页显示10条数据。
然后将整个数据集按照页大小进行分割,形成一个包含多个小数组的大数组,每个小数组即表示一页的数据。
3.数据展示最后,我们需要将分割后的数据进行展示。
这可以通过动态生成DOM元素,或者使用一些前端框架来进行数据的渲染和展示。
三、加载更多的实现方法加载更多功能是用户在浏览数据时最常用的功能之一。
当用户滚动到页面底部时,自动加载下一页的数据,或者点击按钮来手动加载更多数据。
在JavaScript中,我们可以通过监听滚动事件或者点击事件来实现加载更多功能。
1.监听滚动事件我们可以通过JavaScript监听页面的滚动事件,当页面滚动到底部时,自动加载下一页的数据。
这可以通过监听window对象的scroll 事件来实现。
在scroll事件的回调函数中,我们可以判断页面滚动的位置是否已经到达底部,并且加载下一页的数据。
jsp页面的七个组成部分
jsp页⾯的七个组成部分jsp页⾯的七个组成部分1. 静态内容:前端内容⼀⾏⼀⾏翻译成 out.write(“前端内容”);2. 指令: <%@指令名属性名=”值”%>第⼀个指令是@page@page指令的第⼀个标准⽤法,告诉servlet容器,这是⼀个jsp页⾯pageEncoding 指页⾯⽂本的字符集编码contentType 告诉Browser和Servlet端,要使⽤哪个格式哪个字符集进⾏解析独⽴的@page指令,可以使⽤import属性,导⼊某个package中的类。
@page指令导⼊包,会翻译为:3. 表达式:<%=表达式%>被翻译成 out.print(表达式);4. 代码⽚段: <%java代码%>翻译后,复制到_jspServiet()⽅法中。
5. 声明:<%! 类成员 %>翻译后在外⾯,不在_jspService⽅法⾥⾯,⽤<%! 变量常量⽅法 >声明的属于类级别的,与_jspService同级别,所以不在_jspService⽅法⾥⾯。
6. 注释:<%-- jsp注释内容 --%>Html的注释,会被翻译成 out.write();Jsp注释,不会被翻译到.java的servlet类中代码⽚段中的java注释,还会出现在servlet类中7. 动作:<jsp:动作名></jsp:动作名>项⽬使⽤:@include指令include动作将公共内容部分,放在某个jsp页⾯。
需要引⽤公共内容部时,只要在该页include即可。
8. jsp执⾏过程。
js 数组的分页序号算法
js 数组的分页序号算法数组分页序号算法是指将一个数组按照指定的每页数量进行分页,并计算出每个元素在相应页码下的序号。
这个算法在实际开发中非常实用,特别是在展示大量数据时,可以帮助用户更方便地浏览和使用数据。
下面是一个简单的实现数组分页序号算法的示例代码:```javascriptfunction getPageIndex(pageSize, currentPage, index) {return (currentPage - 1) * pageSize + index + 1;}function paginate(array, pageSize, currentPage) {const startIndex = (currentPage - 1) * pageSize;const endIndex = currentPage * pageSize;return array.slice(startIndex, endIndex).map((item, index) => { const pageIndex = getPageIndex(pageSize, currentPage, index); return {item,pageIndex};});}// 使用示例const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];const pageSize = 3;const currentPage = 2;const paginatedData = paginate(data, pageSize, currentPage); console.log(paginatedData);```在上述示例中,`paginate`函数实现了数组的分页功能。
它接受三个参数:`array`表示需要分页的数组,`pageSize`表示每页显示的数量,`currentPage`表示当前页码。
分页查询测试用例
分页查询测试用例摘要:一、分页查询概述1.分页查询的定义2.分页查询的作用3.分页查询的应用场景二、分页查询测试用例设计1.测试用例一:查询第一页数据2.测试用例二:查询指定页数据3.测试用例三:查询最后一页数据4.测试用例四:查询多页数据5.测试用例五:查询不存在的页数据6.测试用例六:查询特定条件的分页数据三、分页查询测试用例执行与结果分析1.执行测试用例一2.执行测试用例二3.执行测试用例三4.执行测试用例四5.执行测试用例五6.执行测试用例六四、分页查询测试总结1.测试覆盖情况2.发现的问题与解决方法3.对分页查询功能改进的建议正文:一、分页查询概述在数据库和数据处理领域,分页查询是一种常见的数据处理方式。
分页查询是指在查询大量数据时,将数据按照一定规则进行分割,然后返回给用户一部分数据。
这种方法可以有效地提高查询效率,同时避免一次性返回大量数据给用户造成的性能负担。
二、分页查询测试用例设计为了确保分页查询功能的正确性和稳定性,我们需要设计一系列测试用例对其进行验证。
以下是一些常见的分页查询测试用例:1.测试用例一:查询第一页数据在分页查询中,第一页数据往往是基准,我们需要确保查询第一页数据时能够正确返回对应的数据。
2.测试用例二:查询指定页数据查询指定页数据是分页查询的核心功能,我们需要验证在输入正确的页码时,能够正确返回对应页的数据。
3.测试用例三:查询最后一页数据在数据量较小的情况下,查询最后一页数据可能返回空结果。
我们需要验证这种情况下,查询功能能够正常处理。
4.测试用例四:查询多页数据查询多页数据时,我们需要验证查询功能能够正确处理连续的页码,以及跳转的页码。
5.测试用例五:查询不存在的页数据查询不存在的页数据时,我们需要验证查询功能能够返回一个友好的错误提示。
6.测试用例六:查询特定条件的分页数据在某些场景下,我们需要根据特定条件对数据进行分页查询。
我们需要验证这种情况下,查询功能能够正确处理。
分页查询测试用例
分页查询测试用例一、分页查询概述分页查询是一种常见的数据检索方式,通过将大量数据分成若干页,用户提供页码和每页显示的数量,方便用户快速定位和查看所需数据。
在实际应用中,分页查询功能已成为许多系统必备的功能之一。
本文将介绍如何设计分页查询测试用例,以及实战中的应用方法。
二、分页查询测试用例设计方法1.明确测试目标:在设计分页查询测试用例前,首先要明确测试的目标,例如查询速度、数据准确性、分页逻辑等。
2.确定测试数据:根据测试目标,选取具有代表性的数据集。
数据集应包含各种不同类型的数据,如正常数据、异常数据、大量数据等。
3.设计测试用例:根据测试目标和数据,设计一系列针对性的测试用例。
测试用例应涵盖各种场景,如不同页码、不同每页显示数量、不同查询条件等。
4.编写测试脚本:利用自动化测试工具编写测试脚本,模拟用户操作,实现对分页查询功能的自动化测试。
三、分页查询测试用例实战1.测试环境准备:搭建与实际应用场景相似的测试环境,包括服务器、数据库、应用程序等。
2.执行测试用例:按照设计好的测试用例,逐一执行测试,记录测试结果。
3.数据分析:对测试结果进行分析,找出存在的问题,如响应时间过长、数据不准确等。
4.问题定位与修复:根据分析结果,定位问题原因,并与开发团队沟通,共同解决问题。
5.迭代优化:在问题解决后,再次执行测试用例,验证问题是否得到解决,并对分页查询功能进行持续优化。
四、总结与建议分页查询测试用例的设计与实践,对于确保分页查询功能的稳定性和可靠性具有重要意义。
在实际测试过程中,要关注查询速度、数据准确性、分页逻辑等方面,通过不断优化,提升用户体验。
querypage方法
querypage方法querypage方法是一种常见的数据库查询方法,它可以用来获取数据库中指定页数的数据记录。
在实际应用中,我们经常需要从庞大的数据集合中提取出我们所需的数据,这时候就需要使用querypage方法来进行分页查询。
querypage方法主要包括两个参数:第一个参数是页码,第二个参数是每页显示的记录数。
通过这两个参数,我们可以指定要查询的页码和每页显示的记录数量。
同时,在使用querypage方法时还需要指定查询条件和排序方式等信息。
在具体实现上,querypage方法通常包括以下几个步骤:1. 计算总记录数在进行分页查询之前,我们需要先计算出数据库中符合条件的总记录数。
这可以通过执行一条类似于SELECT COUNT(*) FROM table WHERE condition 的SQL语句来实现。
2. 计算总页数根据每页显示的记录数量和总记录数,我们可以计算出总共有多少页。
这可以通过将总记录数除以每页显示的记录数量得到。
3. 查询指定页码的数据根据传入的参数确定要查询哪一页,并执行类似于SELECT * FROM table WHERE condition ORDER BY sort_key LIMIT start, count 的SQL语句来获取该页数据。
4. 返回查询结果将查询结果返回给调用者即可完成整个分页查询过程。
除了以上基本步骤外,在实现querypage方法时还需要考虑一些其他的问题,例如如何处理边界情况(比如查询第一页或最后一页)、如何进行分页缓存等等。
总之,querypage方法是一种非常实用的数据库查询方法,它可以帮助我们从庞大的数据集合中快速地获取所需的数据。
在实际应用中,我们需要根据具体情况灵活运用querypage方法,并结合其他优化技术来提高查询效率和性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
纯jsp分页查询用jsp分页如果有java类来写就简单多了,我现在说的是纯jsp分页和查询的问题。
本人在做纯jsp分页时,如果只做分页显示没有问题,如果只做查询也没有问题,但是如果二者一起写的话就出现问题了。
主要问题就是查询的数据得不到保存,一点击‘下一页’数据就会被初始化。
后来本人使用session来存储查询的数据,这个问题就解决了。
现在跟大家分享一下。
<%@ page language="java" pageEncoding="UTF-8"%><%@page import="java.sql.*"%><%@page import="java.util.*" %><%@page import="entity.Stu"%><script></script><html><title>分页显示(jsp)</title><body><%!int pageSize = 5;//每页显示的记录数int pageCount = 0;//总页数%><%int ageS=0;//开始年龄int ageE=0;//结束年龄if(request.getParameter("ageS")==null){//判断request里是否有ageS,没有:给ageS赋值并把其放到session里ageS=18;session.setAttribute("ageS",ageS);}else{ //有的话,再对session里的进行判断if(!session.getAttribute("ageS").equals(request.getParameter("ageS"))){ //如果session里的值和request里的值不同ageS=Integer.parseInt(request.getParameter("ageS").toString());//那么把request里的值赋值给ageS,并放进session里session.setAttribute("ageS",request.getParameter("ageS"));}else{ageS=Integer.parseInt(session.getAttribute("ageS").toString());//否则ageS直接从session里读取}}if(request.getParameter("ageE")==null){ageE=25;session.setAttribute("ageE",ageE);}else{if(!session.getAttribute("ageE").equals(request.getParameter("ageE"))){ageE=Integer.parseInt(request.getParameter("ageE").toString());session.setAttribute("ageE",request.getParameter("ageE"));}else{ageE=Integer.parseInt(session.getAttribute("ageE").toString());}}Connection conn = null;String driver = "oracle.jdbc.driver.OracleDriver";String url = "jdbc:oracle:thin:@localhost:1521:orcl";try {Class.forName(driver);conn = DriverManager.getConnection(url, "system", "zhu");PreparedStatement st=conn.prepareStatement("select * from stu where age>="+ageS+" and age<= "+ageE+" order by sid",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//可滚动查询数据的结果集ResultSet rs = st.executeQuery();st();//让游标到表中的最后一行int rowCount = rs.getRow();//获取记录总数//out.print("记录总数为:"+rowCount);//总也数的计算公式pageCount = (rowCount % pageSize == 0) ? (rowCount / pageSize): (rowCount / pageSize + 1);int showPage = 1;//当前页%><%//取得用户指定的页String goTOPage = request.getParameter("showPage");if (goTOPage == null) {goTOPage = "1";}try {showPage = Integer.parseInt(goTOPage);} catch (NumberFormatException e) {showPage = 1;}//当页面小于等于第一页。
按第一页算如果大于等于总页数。
按最后一页算if (showPage <= 1) {showPage = 1;} else if (showPage >= pageCount) {showPage = pageCount;}//游标的位置(当前页-1)×每页显示的记录数+1int posion = (showPage - 1) * pageSize + 1;//设置游标的位置rs.absolute(posion);%><form action="" method="get"> 年龄段:<input type="text" value="<%=ageS %>" name="ageS"/>——<input type="text" value="<%=ageE %>" name="ageE"/><input type="submit" value="查询"/><table border="1" cellpadding="0" cellspacing="0"><tr><td>序号</td><td>编号</td><td>姓名</td><td>年龄</td></tr><%int num=showPage*pageSize-4;int i = 0;//循环显示表中的数据pageSize(每页显示的记录)//rs.isAfterLase()游标是否在最后一行之后说明后面已经没有记录while (i < pageSize && !rs.isAfterLast()) {%><tr><td><%=num %></td><td><%=rs.getInt("sid") %></td><td><%=rs.getString("sname") %></td><td><%=rs.getInt("age") %></td></tr><%rs.next();i++;num++;}%></table><table width="1000"><tr style=" vertical-align:middle;"><td><ahref="page1.jsp?ageS=<%=ageS %>&ageE=<%=ageE %>&showPage=1">首页</a></td><td><%if (showPage > 1) {%><ahref="page1.jsp?ageS=<%=ageS %>&ageE=<%=ageE %>&showPage=<%=showPage - 1%>">上一页</a><%}else{%>上一页<%} %></td><td><%if (showPage < pageCount) {%><ahref="page1.jsp?ageS=<%=ageS %>&ageE=<%=ageE %>&showPage=<%=showPage + 1%>">下一页</a><%}else{%>下一页<%} %></td><td><ahref="page1.jsp?ageS=<%=ageS %>&ageE=<%=ageE %>&showPage=<%=pageCount%>">尾页</a></td><td>共<%=pageCount%>页</td><td>第<%=showPage%>页</td></tr></table></form><%conn.close();} catch (ClassNotFoundException e1) {out.print(e1.getMessage());} catch (SQLException e2) {out.print(e2.getMessage());}%></body></html>。