版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9讲,数据库数据分页处理 文件上传下载,2,纲要,数据库数据分页处理 文件的上传 文件的下载,3,1.数据库数据分页处理,分页处理的重要性 分页处理是web开发中的最常用技术之一,是动态网站的必需功能,尤其在输出数据库数据时,常用有大量数据要显示,分页处理就成为了一个重要选项。,(2) 分页策略 每次只取出一页数据进行显示,翻页时重新访问数据库,取出当页数据。优点:能访问最新数据 缺点:数据访问太频繁; 一次从数据库中取出全部数据,存储到session或其它域,然后将当前数据送到页面显示,以后每次翻页时不必访问数据库,而从session或其它域中获取。优点:访问数据库次数少 缺点:占用内存资
2、源多; 折中策略:每次从数据库中取出一定的数据,当要访问的数据已在取出的数据时就不必访问数据库,否则,再取出数据库的下一段数据。,4,(3) 分页处理方法举例 指标与功能:总页数、首页、末页、上一页、下一页,并具有随意跳到任一页的功能 分页策略:从数据库中取出全部数据,存到集合对象中 使用JavaBean来实现分页查询功能 其具体分析如下:,5,?假设有100条记录,每页显示20条,那么总页数为几页?,5,?假设有90条记录,每页显示20条,那么总页数为几页?,5,?假设有101条记录,每页显示20条,那么总页数为几页?,6,问题1:如何计算出总页数?,6,推断总页数的算法为: 假设总记录数为
3、m,每页显示数量是n,那么总页数是: 1)若m被n整除,则总页数:m/n 2)若m不能被n整除,则总页数:m/n + 1 也可用下列形式描述: 总页数=(m%n)= =0?(m/n):(m/n+1),7,问题2:如何定位到第P页的记录?,?假设有105条记录,每页显示20条,那么总页数为6页,第1页的记录如何定位?,1-20,?假设有105条记录,每页显示20条,那么总页数为6页,第2页的记录如何定位?,21-40,?假设有105条记录,每页显示20条,那么总页数为6页,第6页的记录如何定位?,101-105,8,推断显示第P页记录的算法为: 假设总记录数为m,每页显示数量是n,那么总页数是S
4、: 1)若显示第P页的内容,应当把游标移动到第几条记录?,(P-1)*n+1,2) 若第P页是不是最后一页S,则显示的记录为: 起始游标: 显示记录数:,(P-1)*n+1,n,9,2) 若第P页是是最后一页S,则显示的记录为: 起始游标: 显示记录数:,(P-1)*n+1,m-(P-1)*n+1,10,图书管理页面-分页技术,分页的基本步骤 1)初始化,如设定每页显示数据记录行数 int pageSize=10; /每页显示的记录行数 int rowCount; /总记录行数 int pageCount; /总页数 int currPage; /当前页,11,图书管理页面-分页技术,分页的基
5、本步骤 从数据库提取要显示的数据 Connection con = DriverManager.getConnection(); String strsql = select * from bookname ; Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs = stmt.executeQuery(strsql);,12,图书管理页面-分页技术,分页的基本步骤 确定总页数 将游标定位到最后,然后用getRow方法取得总
6、记录数。 rs.last(); rowCount=rs.getRow(); pageCount=(rowCount%pageSize=0)?(rowCount/pageSize):(rowCount/pageSize+1);,13,图书管理页面-分页技术,分页的基本步骤 4) 确定要显示的当前页为第几页 String str=request.getParameter(pageid); currPage=(str=null)?1:Integer.parseInt(str); if(currPagepageCount) currPage=pageCount; ,14,图书管理页面-分页技术,分页的
7、基本步骤 5) 定位数据集到要显示页 数据集的absolute方法可以用来定位游标,定位代码如下: rs.absolute(currPage-1)*pageSize+1);,15,图书管理页面-分页技术,分页的基本步骤 6) 循环显示当前页的所有记录 for(int num=1;num); out.print(+rs.getInt(bookID)+); out.print(+rs.getString(ISBN)+); out.print(+rs.getString(bookname)+); out.print(+rs.getString(author)+); out.print(+rs.get
8、String(price)+); out.print(); if(!rs.next() break; ,16,图书管理页面-分页技术,分页的基本步骤 7) 输出导航信息,即显示首页、末页、上一页、下一页链接等信息。 首页 上一页 ,17,分页的基本步骤 7) 输出导航信息,即显示首页、末页、上一页、下一页链接等信息。 下一页 尾页 共页,图书管理页面-分页技术,18,2. 文件的上传,(1)基于表单的文件上传格式 文件上传是一种常用操作,早期的表单没有提供文件上传功能。1995年11月发布的RFC1867规范扩展了这方面功能,增加了表单元素()、multipart/form-data编码方式,
9、格式如下:, ,19,若指明了enctype值为multipart/form-data,则进行文件上传。其数据格式具体如下:,-7da1a51f1680438 Content-Disposition: form-data; name=boy; filename=C:Documents and SettingsAdministrator桌面实验3referexp_31.jsp Content-Type: application/octet-stream 上传内容 -7da1a51f1680438 Content-Disposition: form-data; name=g 提交 -7da1a51
10、f1680438-,20,实例1:简单的上传文件upload1.jsp 实例2:对上传文件进行分离表单域和非表单域的内容,从而得到上传的文件upload2.jsp,21,虽然可以自己编写程序从客户端上传给服务器端的数据来获取上传文件内容,但要分离表单域和非表单域的内容有一定难度。现在,有一些关于文件上传的免费软件可供下载,下面主要介绍SmartUpload组件。,(2) 使用SmartUpload组件上传文件 优点:书写代码少(只需几行),还能控制允许上传文件的类型、大小,使用方便 下载:或其它网站 操作步骤:将下载得到的jspsmartupload.jar包放入应用程序的WEB-INFlib
11、中 说明: 包含五个类:File(不是java.io.File)、Files、Request、SmartUpload和SmartUploadException类,22,SmartUpload类实现上传功能,其主要方法有: void initialize(javax.servlet.jsp.PageContext pageContext):用JSP的隐式对象进行初始化,最先执行 void setMaxFileSize(long maxFileSize):设置文件的最大长度 void setTotalMaxFileSize(long totalMaxFileSize):设置上传文件的最大总长度 v
12、oid setAllowedFilesList(java.lang.String allowedFilesList):设置允许上传文件的类型(通过扩展名来限制) void setDeniedFilesList(java.lang.String deniedFilesList):设置禁止上传文件的类型(通过扩展名来限制) void upload():从表单中上传数据,23,SmartUpload类的主要方法(续) int save(String destPathName, int option):将上传文件保存在目录路径。其中的参数option的值有三个可选值:SAVEAS_PHYSICAL(以
13、操作系统的根目录为根另存)、SAVEAS_VIRTUAL(以web应用程序的根目录为根另存)、SAVEAS_AUTO(由系统决定) Files getFiles():返回上传文件的集合,返回类型为Files Files类的主要方法(续) int getCount():返回集合中文件的数目 File getFile(int index):得到索引值index对应的文件 long getSize():文件集合中所有文件的大小,24,File类的主要方法 int getFileName():返回文件的名字 int getSize():返回文件大小 boolean isMissing():文件是否存在,下面例子使用了SmartUpload、Files和File三个类进行文件上传,25,具体代码见:upload3.jsp和action_upload.jsp 编程思路:先创建SmartUpload类的实例,再初始化、设置上传文件大小、类型,然后上传文件,并设置存放的目录;从SmartUpload实例获得上传文件集合(即Files类型),利用循环得到每一个文件(File类型)的名字、大小。,程序运行结果:,26,3. 文件的下载,使用超链接实现文件下载 例如,实例download1.jsp 缺点:中文文件名不能下载。,27,(2) 使用输入输出流方式下载 步骤: 设置r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国统计信息服务中心(国家统计局社情民意调查中心)招聘10人备考题库附参考答案详解(预热题)
- 2026太平洋财险安庆中支招聘2人备考题库及完整答案详解【考点梳理】
- 2026浙江宁波逸东豪生大酒店招聘7人备考题库及参考答案详解(研优卷)
- 2026重庆市铜梁区维新镇敬老院招聘1人备考题库含完整答案详解(易错题)
- 2026中国农业科学院饲料研究所新兽药与免疫调控创新团队科研助理招聘2人备考题库附答案详解(综合卷)
- 2026中国电信福建公司春季校园招聘备考题库(b卷)附答案详解
- 2026山东德州市宁津县招聘教师23人备考题库及参考答案详解【a卷】
- 2026北京市政路桥股份有限公司招聘26人备考题库及答案详解(全优)
- 2026湖北黄石市大冶市事业单位统一招聘118人备考题库及答案详解(名师系列)
- 2026中国电信福建公司春季校园招聘备考题库附答案详解【综合卷】
- 缺血性肠病课件
- 违纪违法反面典型案例剖析材料汇编3篇
- 黄金冶炼项目可行性研究报告
- 胆囊癌完整版本
- 第15课《十月革命与苏联社会主义建设》中职高一下学期高教版(2023)世界历史全一册
- 十期牛黄清心丸
- 缠论-简单就是美
- JT-T-798-2019路用废胎胶粉橡胶沥青
- 手术室应对特殊感染手术的应急预案
- 2.1科学探究感应电流的方向课件-高二物理(2019选择性)
- (正式版)JBT 14793-2024 内燃机质量评价规范
评论
0/150
提交评论