Presentation is loading. Please wait.

Presentation is loading. Please wait.

基于 JSP 搭建 Web 应用程序. 第五章 Web 应用程序优 化 回顾 什么是会话跟踪技术 ? cookie 和 session 的区别是什么 ? 对象的四种作用域范围分别是什么?

Similar presentations


Presentation on theme: "基于 JSP 搭建 Web 应用程序. 第五章 Web 应用程序优 化 回顾 什么是会话跟踪技术 ? cookie 和 session 的区别是什么 ? 对象的四种作用域范围分别是什么?"— Presentation transcript:

1 基于 JSP 搭建 Web 应用程序

2 第五章 Web 应用程序优 化

3 回顾 什么是会话跟踪技术 ? cookie 和 session 的区别是什么 ? 对象的四种作用域范围分别是什么?

4 使用分页技术实现页面的分页显示 使用 SmartUpload 实现文件上传功能 学习内容

5 掌握分页显示的原理及实现步骤 掌握 SmartUpload 组件实现上传功能 能力目标

6 为什么需要数据分页 使用 Google 搜索 “android” 的搜索结果页面 较多数据信息以分页方式显示 大容量数据分页显示

7 以列表方式显示数据的特点 优势 数据能够按照指定格式显示,布局清晰 不受信息数量的限制 不足 当数据量较多,页面显示不完全时,需要用户拖动页面才 能浏览更多信息 大容量数据显示特点 那有没有另一种显示方式,既能显示多条信息, 又不需要拖动页面呢? 采用分页技术实现批量数据的页面显示

8 分页实现的思路 分页显示的步骤 确定每页显示的数据条数 计算出总页数 编写分页查询 SQL 语句及方法

9 确定分页页数 实现步骤 获取总记录数 根据每页显示记录数与总记录数计算总页数 public int getTotalPages(int count, int pageSize){ int totalpages =0; totalpages = (count%pageSize ==0)?(count/pageSize):(count/pageSize+1); return totalpages; } 计算分页页数

10 分页 SQL 语句 分页查询基本思路 : 1. 每页显示数据的开始位置等于 ” 每页显示条数 *( 当前页码 -1)” 2. 每页显示条数在外层 select 语句中使用 top 语句设定 eg: String sql = "select top “+pageSize+” * from table where id not in (select top “+(currentPage-1)*pageSize+” id from table order by id) order by id”;

11 当前页的确认 获取当前页 获取显示页的页码 如果获取的页码为 NULL ,则设置当前页为首页 如果获取的页码不为 NULL ,则该页码即为当前页页 码 // 获取当前页 String currentPage = request.getParameter("pageIndex"); if(currentPage == null){ currentPage = "1"; } int pageIndex = Integer.parseInt(currentPage); 读取页码 判断页码 将当前页码赋值给 变量进行后续的传递 将当前页码赋值给 变量进行后续的传递

12 分页的设置 分页设置的实现 根据已确认的当前页,设置上页和下页 根据总页数设置首页和末页 首页 "> 上一页 "> 下一页 "> 末页 演示示例:读取主题列表分页显示

13 首页和末页的控制 已经设置了首页和末页,为什么还要进行控制? String currentPage = request.getParameter("pageIndex"); if(currentPage == null){ currentPage = "1"; } int pageIndex = Integer.parseInt(currentPage); // 对首页与末页进行控制 if(pageIndex < 1){ pageIndex = 1; }else if(pageIndex > totalpages){ pageIndex = totalpages; } 假设当前页为首页,当用户点击上页链接时,传递 的 pageIndex 参数为当前页减一,此时入部进行控 制将会导致错误的查询。 通过判断 pageIndex 变 量实现首末页的控制 通过判断 pageIndex 变 量实现首末页的控制

14 SmartUpload 组件简介 SmartUpload 组件 专门用于实现文件上传及下载的免费组件 SmartUpload 组件特点 使用简单:编写少量代码,完成上传下载功能 能够控制上传内容 能够控制上传文件的大小、类型 缺点:目前已停止更新服务

15 SmartUpload 组件应用 单文件上传 混合表单上传 多文件上传 控制上传文件的格式 设定文件上传的大

16 SmartUpload 组件应用条件 环境准备 使用 SmartUpload 组件需要在项目中引入 jspsmartupload.jar 文件 需要设置表单的 enctype 属性 将 jspsmartupload.jar 添加到 WEB-INF\lib 目录下 设置了 enctype 属性后, 表单必须以 post 方式提交 设置了 enctype 属性后, 表单必须以 post 方式提交

17 SmartUpload 类及方法 SmartUpload 类 用于实现文件上传和下载的操作 常用方法 属性名称 说 明 public final void initialize(PageContext pageContext) 执行上传和下载的初始化工作,必须实 现 public void upload() 实现文件数据的上传,在 initialize 方法 后执行 public int save(String pathName) 将全部上传文件保存到指定的目录下, 并返回保存的文件个数 public void setAllowFilesList(String ExtList) 指定允许上传的文件扩展名,接收一个 扩展名列表,以逗号分隔 public void setDeniedFilesList ( String fileList) 指定了禁止上传的文件扩展名列表,每 个扩展名之间以逗号分隔 public void setMaxFileSize(long filesize) 设 定每个文件允许上传的最大长度 public void setTotalMaxFileSIze(long totalfilesize) 设定允许上传文件的总长度

18 Files 类及方法 Files 类 封装了所有上传文件的信息集合 常用方法 属性名称 说 明 public int getCount ()取得文件上传的数目 public File getFile ( int index ) 取得指定位置的 File 文 件对象 public long getSize ()取得上传文件的总长度 public Files getFiles () 将所有上传文件对象以 Collection 的形式返回

19 File 类及方法 File 类 封装了单个上传文件所包含的所有信息 常用方法 方法名称 说 明 saveAs(String destFilePathName) 将文件保存,参数 destFilePathName 是保存的 文件名 isMissing( ) 判断用户是否选择了文件,即 对应表单项是否为空,返回值 为 boolean 类型 public String getFiledName( ) 获取表单中当前上传文件所对 应的表单项的名称 public String getFileName( ) 获取上传文件的文件名称,不 包含路径

20 单文件上传的实现 编写上传文件处理页 uploadManage.jsp <% smartUpload su = new SmartUpload(); su.initialize(pageContext); su.setCharset(“GBK”); su.upload(); // 获取单个上传文件 [ 如果要得到文件信息, 则用 file, 如果不需要, 则直接保 // 存 ] com.jspsmart.upload.file file = su.getFiles().getFile(0); // 文件在服务器端保存 file.save(filepath); 导入包 创建 smartupload 对象 上传初始化 上传文件 创建文件读取对象 指定文件保存路径 保存文件 演示示例:实现文件上传

21 混合表单 如果要上传文件,则表单必须设置 enctype 属性 为 multipart/form-data ,一旦这样设置后,其它 普通表单控件也无法通过 request 对象获取,此时 必须通过 SmartUpload 对象的 getRequest() 方法 取得全部请求参数值。 <% // 实例化 SmartUpload 上传组件 SmartUpload smart = new SmartUpload(); // 初始化上传操作 smart.initialize(pageContext); // 设置字符集 smart.setCharset("gbk"); // 准备上传 smart.upload(); Request smartReq =smart.getRequest(); String username = smartReq.getParameter("username"); // 将上传的文件保存到项目根路径下的 uploadfile 目录中 smart.save("uploadfile"); %> 姓名: 使用 request 内置对象获取: 创建 smartupload 对象 上传初始化 创建 Request 对象 获取不到值 演示示例:实现文件上传

22 获取表单数据 SmartUpload 获取表单数据 getRequest() :得到 com.jspsmart.upload.Request 对象 常用方法 属性名称 说 明 getParameter(String name) 获取指定参数之值,等同 JSP 内 置对象 Request 的 getParameter 方法 getParameterValues(String name) 获取一个页面表单组件对应多个 值时的用户的请求数据,等同 JSP 内置对象 Request 的 getParameterValues 方法 上传文件: 文件描述:... com.jspsmart.upload.Request surequest = su.getRequest(); String explanation = surequest.getParameter("explanation"); out.println(explanation) ;... 获取 Request 对象 获取表单提交数据

23 多文件上传 同时上传多个文件 <% // 实例化 SmartUpload 上传组件 SmartUpload smart = new SmartUpload(); // 初始化上传操作 smart.initialize(pageContext); // 设置字符集 smart.setCharset("gbk"); // 准备上传 smart.upload(); // 取得所有上传文件 Files files = smart.getFiles(); // 循环保存各个文件 for(int i=0;i<files.getCount();i++){ smart.save("uploadfile"); } %> 创建 smartupload 对象 上传初始化 获取上传文件 演示示例:实现文件上传 循环保存文件

24 控制上传文件的类型 使用 SmartUpload 组件可以对上传文件的类型进 行限制 setAllowedFilesList(): 允许上传的文件类型 setDeniedFilesList() :禁止上传的文件类型 SmartUpload su = new SmartUpload(); // 初始化 SmartUpload 对象 su.initialize(pageContext); try { // 定义允许上传文件类型 su.setAllowedFilesList("gif,jpg,doc"); // 不允许上传文件类型 su.setDeniedFilesList("jsp,asp,php,aspx,html,htm,exe,bat"); // 执行上传 su.upload(); }catch(Exception e) 多个文件类型之间以 逗号进行分隔 多个文件类型之间以 逗号进行分隔 演示示例:控制文件上传的类型

25 控制上传文件的大小 使用 SmartUpload 组件可以对上传文件的大小进 行限制 setMaxFileSize(): 允许上传的单个文件大小 setTotalMaxFileSize() :允许上传的文件总容量 … // 定义允许上传文件类型 su.setAllowedFilesList("gif,jpg,doc"); // 不允许上传文件类型 su.setDeniedFilesList("jsp,asp,php,aspx,html,htm,exe,bat") ; // 单个文件最大限制 su.setMaxFileSize(20000); // 所有上传文件的总容量限制 su.setTotalMaxFileSize(500000); … 限制可上传文件的容量 演示示例:控制文件上传的大小

26 本章总结 请描述分页显示的 SQL 语句如何实现? 请描述在页面中如何确定上页和下页的页码? SmartUpload 如何实现对上传文件的控制?

27


Download ppt "基于 JSP 搭建 Web 应用程序. 第五章 Web 应用程序优 化 回顾 什么是会话跟踪技术 ? cookie 和 session 的区别是什么 ? 对象的四种作用域范围分别是什么?"

Similar presentations


Ads by Google