JSP 实现数据的分页显示
- 格式:doc
- 大小:86.50 KB
- 文档页数:5
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"/>表的记录将被分页显示。
为什么需要分页?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时,如何计算起始页号。
分页的实现原理:1.获得需要显示的总的记录数rowCount—》从数据库中取2.设定每页最多显示的记录数size—》103.指定显示的页码:num 作为参数得到4.根据rowCount,size,num可计算出其余的元素:a)本页面从多少行记录开始:startRow = (this.num-1) * size ;b)共有多少页:pageCount = (int) Math.ceil((double)rowCount/size);c)下一页:next=Math.min( this.pageCount, this.num+1)d)上一页:prev = Math.max(1 , this.num-1)e)页号控制元素:numCount:每页最多显示多少页号。
(一共显示numCount+1个页号)start = Math.max(this.num-numCount/2, first); //本页显示页号从多少页开始end = Math.min(start+numCount, last); //本页显示页号在多少页结束页号控制:if(end-start < numCount){ //当本页总显示的页号数不够numCount时,如何计算起始页号。
start = Math.max(end-numCount, 1);}分页实现步骤:1.将Page类引入。
需要自己修改的可自行修改。
package com.puckasoft.video.util;public class Page {private int num; //当前页号, 采用自然数计数 1,2,3,...private int size; //页面大小:一个页面显示多少个数据private int rowCount;//数据总数:一共有多少个数据private int pageCount; // 页面总数private int startRow;//当前页面开始行, 第一行是0行private int first = 1;//第一页页号private int last;//最后页页号private int next;//下一页页号private int prev;//前页页号private int start;//页号式导航, 起始页号private int end;//页号式导航, 结束页号private int numCount = 10;//页号式导航, 最多显示页号数量为numCount+1;这里显示11页。
最简单的方法用sql实现:select * from table limit start,pageNum说明:start:取数据的定位点[开始是从0开始]pageNum:每次取多少比如:start=0|ageNum=5那么就是说,取1-6 条数据,通过程序实现:jdbc2.0可以通过指针定位List resultlist=new Vector();Connection conn = null;Statement ps = null;ResultSet rs=null;conn=ds.getConnection();ps=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ ONL Y);rs=ps.executeQuery(sql);if(Start > 0)rs.absolute(Start);//定位Address address;for(int recCount = 0; recCount++ < resultPage && rs.next();resultlist.add(address)){//从定位开始,取resultPage数据,先放在一个对象中,然后放在一个list中,这个对象可以是一个hashtable也可以是一个普通的javabean,用来存储数据}JSP+Servlet分页2009-06-12 15:33 JSP+Servlet分页1) 建立一个pojo类,用来向JSP页面传递数据,使用该类的Getter方法获得相应的属性值。
---------------------------------------------------------------------------------public class UserInfo extends BasePojo {private Long userid;private String usertype;private String userurl;private String userdetail;private String username;private String contact;public Long getUserid() {return userid;}public void setUserid(Long userid) {erid = userid;}public String getusertype() {return usertype;}public void setUsertype(String usertype) {ertype = usertype;}public String getUserurl() {return userurl;}public void setUserurl(String userurl) {erurl = userurl;}public String getUserdetail() {return userdetail;}public void setUserdetail(String userdetail) {erdetail = userdetail;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getContact() {return contact;}public void setContact(String contact) {this.contact = contact;}}---------------------------------------------------------------------------------2) 通过查询获得所有对象,然后把每个对象依次赋给一个pojo类,通过循环吧每个pojo类添加到一个list里面。
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.实体⼯具类/*** 分页⼯具类.泛型类*/public class PageUtil<T> {//属性private int pageNumber;//总记录数private int pageCount;//总页数private int pageIndex;//当前页private int pageSize;//每页⼤⼩private List<T> list;//当前页的数据public int getPageNumber() {return pageNumber;}public int getPageCount() {return pageCount;}public int getPageIndex() {return pageIndex;}public int getPageSize() {return pageSize;}public List<T> getList() {return list;}public void setPageNumber(int pageNumber) {this.pageNumber = pageNumber;}public void setPageCount(int pageCount) {this.pageCount = pageCount;}public void setPageIndex(int pageIndex) {this.pageIndex = pageIndex;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public void setList(List<T> list) {this.list = list;}}2.分页显⽰controller// 分页显⽰列表@RequestMapping("list")public ModelAndView list(HttpServletRequest request, Model model,HttpSession session,@RequestParam(value="name",required=false) String name) { System.out.println("--------------------+"+name+"++------------------------");session.setAttribute("name", name);int pageIndex = 1;// 设置初始的当前页,页⾯显⽰的都是第⼀页int pageSize = 5;// 设置每⼀页显⽰⼏条数据,⽤于计算总页数,此处设置的值必须与sql语句的limit最后的数值⼀样System.out.println("员⼯列表");PageUtil<Member> pageUtil = new PageUtil<Member>();// 初始化⼯具类if (request.getParameter("pageIndex") != null) {pageIndex = Integer.parseInt(request.getParameter("pageIndex"));} // 对页⾯上的分页标签传的值,进⾏获取,也是就点击'上⼀页或者下⼀页'传过来的pageindexpageUtil.setPageIndex(pageIndex);// 保存⾄⼯具类,当前页数int number = memberBiz.getRowCount();// 调⽤service层⽅法计算出总数据量,就是多少条数据.//System.out.println("------------------------------"+number);pageUtil.setPageNumber(number);// 保存⾄⼯具类,总记录数pageUtil.setPageSize(pageSize);// 保存⾄⼯具类,⼀页⼏条pageUtil.setPageCount((int) Math.ceil((double) (pageUtil.getPageNumber() / pageUtil.getPageSize())) + 1);// 计算出总页数,并封装到⼯具类int index = (pageIndex - 1) * pageSize;// 计算出每⼀页从数据库中第⼏条数据开始取值,也就是limit后⾯的第⼀个数字List<Member> list = memberBiz.findAllMember(name, index);// 调⽤service层的⽅法,取得数据库中的值pageUtil.setList(list);// 保存到⼯具类中的集合model.addAttribute("pageUtil", pageUtil);// 传递到页⾯,存⼊值栈中model.addAttribute("members", list);//System.out.println("-------------------------");//System.out.println(list);return new ModelAndView("memberlist");// 跳转的相关页⾯}3.前端jsp页⾯<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ taglib prefix="fmt" uri="/jsp/jstl/fmt"%><%pageContext.setAttribute("APP_PATH", request.getContextPath());%><html><head><meta charset="utf-8"><title>管理员查看</title><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><link rel="stylesheet" type="text/css" href="${APP_PATH }/css/bootstrap.min.css"><link rel="stylesheet" type="text/css" href="${APP_PATH }/css/bootstrapValidator.css"><style>.table_div{ width:90%; margin:0 auto;}</style><script type="text/javascript">function delete_alert(){alert("您确定删除?")}</script></head><body class="table-responsive"><!-- style="margin: 30px" --><!--⾯包屑导航--><div><ul class="breadcrumb"><li><a href="${pageContext.request.contextPath}/adminholle.jsp">⾸页</a></li><li class="active">⽤户管理</li></ul></div><div class="row search"><div class="col-md-6"><form action="${pageContext.request.contextPath}/member/list.do" method="post"><div class="input-group" style="width: 300px"><input type="text" class="form-control" name="name" value="${name}" placeholder="请输⼊要查询的⽤户名..."><span class="input-group-btn"><button class="btn btn-default" type="submit"><span class="glyphicon glyphicon-search"></span> 查询</button> </span></div></form></div><div class="text-right" style="width: 87%;height: 30px;"><a class="btn btn-success active btn-xs" id="add_btn" href="${pageContext.request.contextPath}/memberadd.jsp">添加</a> </div></div><%-- <div class="text-right" style="width: 87%;height: 30px;"><a class="btn btn-success active btn-xs" id="add_btn" href="${pageContext.request.contextPath}/adminsave.jsp">添加</a> </div> --%><!--table表单层--><div class="table_div"><table class="table table-striped table-bordered table-hover" width="1200px"><thead><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><th align="center">移动电话</th><th align="center">Email</th><th align="center">住址</th><th align="center">操作</th></tr></thead><tbody><tr><c:forEach var="members" items="${members}"><tr><td align="center">${members.id}</td><td align="center">${ername}</td><td align="center">${members.password}</td><td align="center">${}</td><td align="center">${members.sex}</td><td align="center">${members.idNumber}</td><td align="center">${members.phone}</td><td align="center">${members.email}</td><td align="center">${members.address}</td><td align="center"> <a class="btn btn-danger active btn-xs" onclick="delete_alert()" href="${pageContext.request.contextPath}/member/delete.do?id=${members.id}">删除</a><a class="btn btn-info active btn-xs" href="${pageContext.request.contextPath}/member/updateselect.do?id=${members.id}">修改</a></td></tr></c:forEach></tr></tbody></table><div style="width: 79%;height:2px;"><!--页数显⽰-->共<font size="3" color="red">${pageUtil.pageNumber}</font>条,当前第<font size="3" color="red">${pageUtil.pageIndex}</font>页</div><!--分页--><div style="width: 93%;" class="text-right"><ul class="pagination"><li><a href="${APP_PATH }/member/list.do?pageIndex=1">⾸页</a></li><li><a href="${APP_PATH }/member/list.do?pageIndex=${pageUtil.pageIndex>1?pageUtil.pageIndex-1:1}" class='pre'>上⼀页</a></li><c:forEach begin="1" end="${pageUtil.pageCount}" var="i"><li><a href="${APP_PATH }/member/list.do?pageIndex=${i}" style="text-decoration: none;">${i}</a></li></c:forEach><li><a href="${APP_PATH }/member/list.do?pageIndex=${pageUtil.pageIndex<pageUtil.pageCount?pageUtil.pageIndex+1:pageUtil.pageCount}" class='next'>下⼀页</a></li> <li><a href="${APP_PATH }/member/list.do?pageIndex=${pageUtil.pageCount}" class='last' >末页</a></li></ul></div></div><script type="text/javascript" src="${APP_PATH }/js/jquery-3.2.1.min.js"></script><script type="text/javascript" src="${APP_PATH }/js/bootstrap.min.js"></script></body></html>4.数据库 dao层 service 省略。
JS代码实现table数据分页效果第⼀个:实现的很常见很简单的显⽰页数翻页 效果图:•这是HTML代码,很简单滴(我好像看到了被嫌弃的⼩眼神)<!DOCTYPE html><html><head lang="en"><meta charset="UTF-"><script src="js/jquery-...js"></script><script src="js/demo.js"></script><link rel="stylesheet" href="js/demo.css"/><title></title></head><body><table width="" border=""><thead><tr><th>姓名</th><th>性别</th><th>编号</th><th>年龄</th></tr></thead><tbody><tr><td>张三</td><td>男</td><td></td><td></td></tr><tr><td>tom</td><td>男</td><td></td><td></td></tr><tr><td>李四</td><td>男</td><td></td><td></td></tr><tr><td>⼆蛋</td><td>男</td><td></td><td></td></tr><tr><td>⼆丫</td><td>⼥</td><td></td><td></td></tr></tbody></table></body></html>•下⾯就是JS代码了$(function(){var $table=$('table');//获取表格对象var currentPage=;//设置当前页默认值为var pageSize=;//设置每⼀页要显⽰的数⽬$table.bind('paging', function () {$table.find('tbody tr').hide().slice(currentPage*pageSize,(currentPage+)*pageSize).show();//先将tbody中所有的⾏隐藏,再通过slice结合当前页数和页⾯显⽰的数⽬展现数据});var sumRows=$table.find('tbody tr').length;//获取数据总⾏数var sumPages=Math.ceil(sumRows/pageSize);//得到总页数var $pager=$('<div class="page"></div>');for(var pageIndex=;pageIndex<sumPages;pageIndex++){$('<a href="#"><span>'+(pageIndex+)+'</span></a>').bind("click",{"newPage":pageIndex},function(event){ currentPage=event.data["newPage"];$table.trigger("paging");//为每⼀个要显⽰的页数上添加触发分页函数}).appendTo($pager);$pager.append(" ");}$pager.insertAfter($table);$table.trigger("paging");});第⼆个:实现前进页和后退页 效果图:•这是全部代码,⽤得原⽣JS,依然还是很简单滴(好像对原⽣js有种莫名的喜爱,有⽊有)<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-" /><title>table分页</title></head><body><style type="text/css">.tablebox{border:solid px #ddd;}.tablebox td{text-align:center;border:solid px #ddd;padding:px;}</style><div style="width:px;margin: auto;"><table class="tablebox" width="" border="" cellpadding="" cellspacing=""><tbody id="table"><tr><td></td><td> </td><td> </td><td> </td><td> </td></tr><tr><td></td><td> </td><td> </td><td> </td><td> </td></tr><tr><td></td><td> </td><td> </td><td> </td><td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td> </tr><tr><td></td><td> </td> <td> </td> <td> </td> <td> </td><td> </td><td> </td><td> </td><td> </td></tr></tbody></table><div style="height:px;margin:px ;"><span id="spanFirst">第⼀页</span><span id="spanPre">上⼀页</span><span id="spanNext">下⼀页</span><span id="spanLast">最后⼀页</span>第<span id="spanPageNum"></span>页/共<span id="spanTotalPage"></span>页</div></div><script type="text/javascript">var theTable = document.getElementById("table");var totalPage = document.getElementById("spanTotalPage"); var pageNum = document.getElementById("spanPageNum"); var spanPre = document.getElementById("spanPre");var spanNext = document.getElementById("spanNext");var spanFirst = document.getElementById("spanFirst");var spanLast = document.getElementById("spanLast");var numberRowsInTable = theTable.rows.length;var pageSize = ;var page = ;//下⼀页function next() {hideTable();currentRow = pageSize * page;maxRow = currentRow + pageSize;if ( maxRow > numberRowsInTable )maxRow = numberRowsInTable;for ( var i = currentRow; i< maxRow; i++ ) {theTable.rows[i].style.display = '';}page++;if ( maxRow == numberRowsInTable ){nextText();lastText();}showPage();preLink();firstLink();}//上⼀页function pre() {hideTable();page--;currentRow = pageSize * page;maxRow = currentRow - pageSize;if ( currentRow > numberRowsInTable )currentRow = numberRowsInTable;for ( var i = maxRow; i< currentRow; i++ ) {theTable.rows[i].style.display = '';}if ( maxRow == ) {preText();firstText();}showPage();nextLink();lastLink();}//第⼀页function first() {hideTable();page = ;for ( var i = ; i<pageSize; i++ ) {theTable.rows[i].style.display = '';}showPage();preText();}//最后⼀页function last() {hideTable();page = pageCount();currentRow = pageSize * (page - );for ( var i = currentRow; i<numberRowsInTable; i++ ) {theTable.rows[i].style.display = '';}showPage();preLink();nextText();firstLink();}function hideTable() {for ( var i = ; i<numberRowsInTable; i++ ) {theTable.rows[i].style.display = 'none';}}function showPage() {pageNum.innerHTML = page;}//总共页数function pageCount() {var count = ;if ( numberRowsInTable%pageSize != ) count = ;return parseInt(numberRowsInTable/pageSize) + count;}//显⽰链接function preLink() { spanPre.innerHTML = "<a href='javascript:pre();'>上⼀页</a>"; }function preText() { spanPre.innerHTML = "上⼀页"; }function nextLink() { spanNext.innerHTML = "<a href='javascript:next();'>下⼀页</a>"; }function nextText() { spanNext.innerHTML = "下⼀页"; }function firstLink() { spanFirst.innerHTML = "<a href='javascript:first();'>第⼀页</a>"; }function firstText() { spanFirst.innerHTML = "第⼀页"; }function lastLink() { spanLast.innerHTML = "<a href='javascript:last();'>最后⼀页</a>"; }function lastText() { spanLast.innerHTML = "最后⼀页"; }//隐藏表格function hide() {for ( var i = pageSize; i<numberRowsInTable; i++ ) {theTable.rows[i].style.display = 'none';}totalPage.innerHTML = pageCount();pageNum.innerHTML = '';nextLink();lastLink();}hide();</script></body></html>以上内容是⼩编给⼤家介绍的JS代码实现table数据分页效果,希望对⼤家有所帮助,如果⼤家还有任何问题欢迎给我留⾔,⼩编会及时回复⼤家的,在此也⾮常感谢⼤家对⽹站的⽀持!。
Java--mysql实现分页查询--分页显⽰ 当数据库中数据条数过多时,⼀个页⾯就不能显⽰,这是要设置分页查询,⾸先要使⽤的是数据库sql语句的limit条件实现分组查询sql语句⼤概形式为: select * from table limit 开始索引,显⽰条数 ⽤该语句就会实现分块查询,并且每页显⽰固定条数。
(由于limit是mysql特有的,如果是Oracle数据库的话就需要通过rownum来限制⽐如:select * from table where rownum >=开始索引。
如果是sql sever数据库的话可以⽤到top关键字,如取m到n条数据:select top (n-m+1) id from table where id not in (select top m-1 id from table))⾸先要实现后台分页,我们需要知道它有多少页,每页有多少⾏,这就需要知道⼀共多少⾏,调⽤sql语句时还需要知道每⼀页的开始索引,开始索引是根据当前页数算出来的,所以还需要知道当前页数,查询后会返回⼀个列表存储当前页数据。
将这些属性及获取设置的⽅法封装成⼀个类就有了下⾯的page类:1public class Page<T> {2private List<T> data;//数据列表3private int pagenum;//当前页数4private int pagesize;//当前页显⽰条数5private int rows;//总⾏数6public Page(int rows,int pagenum, int pagesize) {7super();8 data=new ArrayList<>();9this.rows=rows;10this.setPagesize(pagesize);11this.setPagenum(pagenum);12 }13public Page() {14super();15 }16public int getPagenum() {17return pagenum;18 }19public void setPagenum(int pagenum) {20if(pagenum>getTotalpage())21 {22this.pagenum=getTotalpage();23 }24else {25this.pagenum = pagenum;26 }27if(pagenum<1)28 {29this.pagenum=1;30 }31 }32public int getPagesize() {33return pagesize;34 }35public void setPagesize(int pagesize) {36this.pagesize = pagesize;37 }38public int getTotalpage() {39//计算总页数40if(rows%pagesize==0)41 {42return rows/pagesize;43 }44else {45return rows/pagesize+1;46 }47 }48public int getRows() {49return rows;50 }51public void setRows(int rows) {52this.rows = rows;53 }54public int getIndexnum() {55//获取索引值56return pagesize*(pagenum-1);57 }58public List<T> getData() {59return data;60 }61public void setData(List<T> data) {62this.data = data;63 }64 }Page类初始化时我们只需要获得数据总条数,页数及每页显⽰条数。
JSP 分页显示记录通过Web进行查询时,有时候由于得到的结果集太大,如果一次性全部通过网络传输过来,不仅浪费网络资源,还会导致客户端的响应时间很长,因此有必要把得到的结果集分页传递给客户端。
数据库分页显示信息是Web应用程序中经常遇到的问题,当用户的数据查询结果太多而超过计算机屏幕显示的范围时,为了方便用户的访问,往往采用数据库分页显示的方式。
对于Web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此需要对分页显示的原理和实现方法进行介绍。
所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:●每页多少条记录($PageSize)●当前是第几页($CurrentPageID)现在只要再给一个结果集,就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
首先获取记录集中记录的数目,假设总记录数为m,每页显示数量是n,那么总页数的计算公式是:如果m/n的余数大于0,总页数=m/n的商+1;如果m/n的余数等于0,总页数=m/n的商。
即:如果要显示第P页的内容,应当把游标移动到第(P-1)*n+1条记录处。
下面还是以图书信息表bookInfo为例,来实现一个数据库分页显示的案例。
在这之前需要向表bookInfo添加多条记录(具体如何添加,读者可以参考前面所学的将上述保存到Tomcat服务器运行目录下。
打开IE浏览器,在地址栏中输入ht tp://localhost:8080/JSPExample/MySQLFen.jsp,单击【转到】,会显示如图6-18所示窗口:图6-18 分页显示数据。
如何在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.在滚动事件中判断页面是否滚动到底部,如果是则加载更多数据。
Ext Js分页显示示例原理详解前几天我们项目组讨论给**公司关于**产品做一个功能展示的用例。
讨论到view层时,用那种框架。
最终选中了大名鼎鼎的EXT JS 框架来做view。
这里的view涉及的不是很复杂。
因为它仅仅是个Demo。
最常用的就是分页显示数据了。
目前extjs仅仅支持xml和json两种格式的数据展现。
就性能而言。
Extjs不可能用于较大的项目。
性能确实不敢恭维。
这里我们仅仅简单的介绍一下它的分页原理。
其实他的源码中提供了大量的例子。
可以参考一下。
该例子就是基于它的官方例子实现的。
目前,市场是比较流行的数据关于extjs就是“深入浅出extjs“了,该书编写的却是不怎么样。
如果想学习extjs,最好研究研究它的源码的例子就行了。
Jar包如下:其中json-lib-2.2.1-jdk1.5.jar xstream-1.3.jar是转换集合类型转换json类型的主要jar包。
测试工程的包路径如下:该示例是用strus2做的mvc。
action类:package action;import bean.Bean;import com.opensymphony.xwork2.ActionSupport;import java.util.ArrayList;import java.util.List;import javax.servlet.http.*;import mons.logging.Log;import mons.logging.LogFactory;import org.apache.struts2.ServletActionContext;import util.ExtHelper;public class DisplayAction extends ActionSupport{private static final Log log=LogFactory.getLog(DisplayAction.class);private static final long serialV ersionUID = 1L;private HttpServletResponse response;private HttpServletRequest request;private int start;private int limit;//表示数据库中数据总条数,用户分页显示private static final long totalResult=100;public String display() throws Exception{List list=new ArrayList();for(int i=0;i<5;i++){bean.Bean bean=new Bean();bean.setId(i);bean.setDetail("detil"+i);bean.setTitle("title"+i);list.add(bean);}String json = ExtHelper.getJsonFromList(totalResult,list);("list转换成json格式的数据开始");(json);response = ServletActionContext.getResponse();response.setContentType("application/xml;charset=UTF-8");response.getWriter().write(json);return null;}}Po类:package bean;public class Bean {private int id;private String title;private String detail;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) { this.title = title;}public String getDetail() {return detail;}public void setDetail(String detail) {this.detail = detail;}}ExtHelper类:package util;import java.util.ArrayList;import java.util.List;import net.sf.json.JSONObject;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.xml.DomDriver;public class ExtHelper {/***list转换成xml*/public static String getXmlFromList(long recordTotal , List beanList) { Total total = new Total();total.setResults(recordTotal);List resultlist = new ArrayList();resultlist.add(total);XStream sm = new XStream(new DomDriver());for (int i = 0; i < resultlist.size(); i++) {Class c = resultlist.get(i).getClass();String b = c.getName();String[] temp = b.split("\\.");sm.alias(temp[temp.length - 1], c);}String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + sm.toXML(resultlist);System.out.println("**********************************"+xml);return xml;}/***list转换成json*/public static String getJsonFromList(long recordTotal , List ListbeanList){TotalJson total = new TotalJson();total.setResults(recordTotal);JSONObject JsonObject = JSONObject.fromObject(total);return JsonObject.toString();}}TotalJson类:package util;import java.util.List;public class TotalJson {private long results;private List items;public List getItems() {return items;}public void setItems(List items) {this.items = items;}public long getResults() {return results;}public void setResults(long results) {this.results = results;}}Struts.xml<!DOCTYPE struts PUBLIC '-//Apache Software Foundation//DTD Struts Configuration 2.0//EN''/dtds/struts-2.0.dtd'><struts><constant name="struts.i18n.encoding" value="UTF-8"/><package name="ext_fenye" extends="struts-default"><action name="getDataList" class="action.DisplayAction" method="display"></action></package></struts>JSP:<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><html><head><title>ExtJs-FenY e</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/pagesExt/ext-2.2.1/resources/css/ext-all.css" /><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/pagesExt/css/style.css" /><script type="text/javascript"src="${pageContext.request.contextPath}/pagesExt/ext-2.2.1/adapter/ext/ext-base.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/pagesExt/ext-2.2.1/ext-all.js"></script><script type="text/javascript" src=""${pageContext.request.contextPath}/pagesExt/ext-2.2.1/ext-all-debug.js"> </script></head><script type="text/javascript">Ext.onReady(function(){//定义数据集对象var typeStore = new Ext.data.Store({//配置分组数据集autoLoad :{params : {start:0,limit : 6}},//默认加载参数:start=0,limit=6reader: new Ext.data.JsonReader({totalProperty: "results",root: "items",//和action的list的名称一致。
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 目录中。
《JSP应用开发》课程标准课程代码:B0502520 课程类别:专业核心课授课系(部):信息工程系学分学时:6学分104学时一、课程定位与作用1.课程的定位课程是软件技术专业的专业核心课程。
2.课程的作用通过学习,让学生掌握JSP知识;掌握Web应用系统的设计思想和方法,具有设计基于B/S模式的应用系统的能力,具有Java软件开发能力和适应岗位需要的职业能力和素质。
3.与其他课程的关系前导课程:《Java程序设计》、《数据库技术与应用》、《网页编程》;后续课程:《J2EE企业级应用开发》、《基于J2EE框架技术的应用开发》。
二、课程目标通过《JSP应用开发》课程的学习,使学生具备Web应用系统开发的基本能力,建立起基于B/S 模式的设计思想,能使用MVC设计模式设计Web应用程序,为学习和掌握专业知识和职业技能打下基础。
4.知识目标(1)了解B/S开发的基本概念;(2)掌握集合的常用接口和类;(3)掌握JDBC的工作原理及使用;(4)掌握JSP的基本语法;(5)掌握JSP页面的运行过程和常见调错;(6)掌握JSP的基本内置对象;(7)掌握Servlet;(8)理解MVC设计模式。
5.能力目标(1)会使用JSP开发Web项目;(2)会运用MVC模式设计B/S结构的web应用程序;(3)具备调试B/S系统的能力;(4)会使用JDBC技术对数据库进行访问。
6.素质目标(1)具有自我学习的能力;(2)具备规范化、标准化的代码编写习惯,一定速度的代码编写能力;(3)养成忠于职守、认真负责、精益求精的敬业精神;(4)具备良好的沟通能力;(5)具备良好的团队合作精神以及自我展示能力。
三、课程设计1.设计思想课程以“项目贯穿,任务驱动,阶段模块化”为原则,彻底打破原来学科课程链路模式,以能力为本位,采用“螺旋推进式”的方式组织课程内容。
对来源于实际的工程项目进行教学适用化改造,将教学知识点、技能点融入项目。
课程以改造后的新闻发布系统作为教学项目,贯穿基础学习阶段及进阶学习阶段,实现用户管理、信息发布、浏览信息、登录控制、访问人数统计等功能。
实验一JSP运行环境安装与配置实验时间:3月7日实验目的:1、掌握JSP运行环境的安装与配置。
2、熟悉Tomcat服务器的安装与配置。
3、掌握JSP文件的建立与使用。
4、熟悉JSP开发环境实验内容:1、安装J2SDK并设置相关环境变量。
2、安装与启动Tomcat服务器3、设置Web服务目录4、编写测试JSP页面实验步骤(过程):参照教材实验二JSP页面实验时间:3月21日实验目的:1、掌握JSP页面的基本结构及运行原理。
2、掌握怎样声明JSP页面的成员变量和方法3、掌握怎样使用Java程序片和Java表达式。
4、掌握在JSP页面中使用HTML标记。
实验内容:1、编写一个JSP页面,计算出100以内的素数。
2、设计两个JSP页面a.jsp和b.jsp,a.jsp页面使用表单提交数据给b.jsp页面,要求a.jsp通过text方式提交一个字符串给b.jsp,b.jsp页面获取a.jsp提交的字符串,并使用Java表达式显示这个字符串及其长度。
3、请编写JSP页面inputNumber.jsp和getNumber.jsp。
inputNumber.jsp页面使用表单通过text方式提交一个数字给getNumber.jsp页面,getNumber.jsp计算并显示这个数的平方和立方。
实验过程:实验题目1:<%@ page contentType="text/html;charset=GB2312" %><HTML><BODY bgcolor=yellow><P> 100以内的素数有:<BR>int i,j;for( i=1;i<=100;i++){ for( j=2;j<i;j++){ if(i%j==0)break;}if(j==i)out.println("<BR>素数:"+i);}%></BODY> </HTML>实验题目二:a.jsp<%@ page contentType="text/html;Charset=GB2312" %><HTML><BODY bgcolor=cyan><Font size=3><FORM action="b.jsp" method=post name=form><BR>请输入一个字符串:<INPUT type="text" name="name" ></BR><INPUT TYPE="submit" value="提交" name="submit"> </FORM></FONT></BODY></HTML>b.jsp<%@ page contentType="text/html;Charset=GB2312" %><HTML><BODY bgcolor=cyan><Font size=3><% String str=request.getParameter("name");%><P> 您输入的字符串是:<%=str %><P> 字符串的长度为:<%=str.length() %></FONT></BODY></HTML>实验题目3:inputNumber.jsp<%@ page contentType="text/html;Charset=GB2312" %><HTML><BODY bgcolor=cyan><Font size=3><FORM action="getNumber.jsp" method=post name=form><BR>请输入一个数字:<INPUT type="text" name="number" ></BR><INPUT TYPE="submit" value="提交" name="submit"> </FORM></FONT></BODY></HTML>getNumber.jsp<%@ page contentType="text/html;Charset=GB2312" %><HTML><BODY bgcolor=cyan><Font size=3><% String str=request.getParameter("number");double d=Double.parseDouble(str);out.println(d+"的平方为:"+d*d);out.println("<BR>"+d+"的立方为:"+d*d*d);}catch(NumberFormatException exp){out.println("<BR>"+exp);}%></FONT></BODY></HTML>实验三JSP标记实验时间:4月4日实验目的:1、掌握JSP指令标记、动作标记和自定义标记的使用2、掌握Tag文件设计、保存及调用方法。
章题型自定义子题型大小题编号题干"答案(填空数量)" 解析"选项A(填空A)" "选项B(填空B)" "选项C(填空C)" "选项D(填空D)" "选项E(填空E)"1 单项选择题假设已经获得ResultSet对象rs,那么获取第一行数据的准确语句是()。
B rs.hasNext() rs.next() rs.nextRow() rs.hasNextRow()2 单项选择题在Web项目的目录结构时,web.xml文件位于()目录下。
D src目录项目根目录或其子目录MATA-INF目录WEB-INF目录3 单项选择题做动态网页的开发,以下()语言可以作为服务器端脚本语言。
D HTML JSP JavaScript Java4 单项选择题页面中存在两个多选按钮(名称为sex),分别代表男和女,该页面提交后,为了获得用户的选项值,可以使用以下()方法。
Arequest.getParameter("sex"); request.getParameter(sex);request.getParameterValues("sex"); request.getParameterValues(sex);5 单项选择题JSP提供了一个可以在多个请求之间持续有效的内置对象(),该对象与浏览器一一对应。
C request response sessionapplication6 单项选择题表格属性中()可以改变表格的大小,并且使表格的大小随浏览器窗口的大小而自动调整大小。
B 设置其width和height属性为数字值设置其width和height属性为百分数这两种方法均可这两种方法均不可7 单项选择题在JSP中,page指令的()属性用来引入需要的包或类。
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所示。
图10-18 数据的分页显示。