8.JSP开发业务应用

  1. 大容量的数据显示
    1. 当数量较多时,用户需要拖动页面才能浏览更多信息
    2. 数据定位不便

  1. 分页实现的思路

分页显示的步骤

 

  1. 封装Page类

将有关分页的数据封装到Page类

public class Page {

 

        private int currPageNo = 1; // 当前页码

        private int pageSize = 15;    // 页面大小,即每页显示记录数

        private int totalCount;          // 记录总数

        private int totalPageCount; // 总页数

扫描二维码关注公众号,回复: 8984393 查看本文章

        List<News> newsList;         // 每页新闻集合

 

        …… // 省略getter/setter方法

}

  1. 计算显示的总页数

获取总记录数

select count(1) from 表名   效率高于

select count(*) from 表名

 

根据每页显示记录数计算出总页数

public void setTotalCount(int totalCount) {

       if (totalCount > 0) {

this.totalCount = totalCount;

//计算总页数         

              totalPageCount = (this.totalCount % pageSize == 0) ?

                                             (this.totalCount / pageSize) :

                                             ((this.totalCount / pageSize) + 1);

       }

}

 

  1. 分页SQL语句

使用HTML子句

 

SELECT `nid`, `ntitle`, `ncreateDate` FROM `news` LIMIT 0, 3

0 --起始行的下标 = (当前页页码 - 1) * 每页显示的数据量

3 --每页显示的数据量

  1. 获取分页信息

获取分页信息

  1. 页面的设置

根据已经确认的当前页码设置参数

 

<%  

   <a href="pageControl.jsp?pageIndex=1">首页</a>

   <a href="pageControl.jsp?pageIndex=<%=pageIndex - 1%>">上一页</a>

   <a href="pageControl.jsp?pageIndex=<%=pageIndex + 1%>">下一页</a>

   <a href="pageControl.jsp?pageIndex=<%=totalPages%>">末页</a>

%>

 

  1. 页码边界的控制

// 获取当前页

String currentPage = request.getParameter("pageIndex");

if (currentPage == null) {

     currentPage = "1";

}    

int pageIndex = Integer.parseInt(currentPage);

 

通过判断pageIndex变量实现边界控制

当前页数:[<%=pageIndex%>/<%=totalpages%>]

<%

if (pageIndex > 1) { // 控制页面显示风格

%>   

   <a href="pageControl.jsp?pageIndex=1">首页</a>

   <a href="pageControl.jsp?pageIndex=<%=pageIndex-1%>">上一页</a>

<%

} if (pageIndex < totalPages) { // 控制页面显示风格

%>

   <a href="pageControl.jsp?pageIndex=<%=pageIndex+1%>">下一页</a>

   <a href="pageControl.jsp?pageIndex=<%=totalPages%>">末页</a>

<%   

}

%>   

 

  1. Commons-FileUpload简介
    1. Commons-FileUpload组件
      • Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目
    2. Commons-FileUpload组件特点
      • 使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能
      • 能够全程控制上传内容
      • 能够对上传文件的大小、类型进行控制
  2. Commons-FileUpload简介
    1. 获取Commons-FileUpload组件的方式
      • http://commons.apache.org/fileupload下载Commons-FileUpload组件
        1. 类库:commons-fileupload-1.2.2.jar
        2. API文档:commons-fileupload-1.2.2\site\apidocs
      • http://commons.apache.org/io下载Commons-IO组件
        1. 类库:commons-io-2.4.jar
        2. API文档:commons-io-2.4\docs
  3. Commons-FileUpload组件应用
    1. 环境准备

在项目中引入commons-fileupload-1.2.2.jar和commons-io-2.4.jar文件

    1. 设置表单的enctype属性

<form enctype="multipart/form-data" method="post">

    1. 在表单中使用File控件选择文件

<input type="file" name="nfile" />

注意:

上传文件时form标签的method属性必须设置为“post”,不能设置为“get”     

 

  1. Commons-FileUpload组件的API -1

ServletFileUpload类的常用方法

 

  1. Commons-FileUpload组件的API 3-2

FileItem接口的常用方法

  1. Commons-FileUpload组件的API 3-3

FileItemFactory接口

实现类:DiskFileItemFactory

 

  1. 文件上传的实现

编写上传文件处理页的实现步骤

    1. 创建FileItemFactory对象
    2. 创建ServletFileUpload对象
    3. 解析form表单提交的所有表单元素数据
      • 如果是普通表单元素
        1. 获取该元素的名和值使用
      • 如果是文件数据
        1. 获取文件名的等参数
        2. 保存文件数据到服务器
  1. 控制上传文件的属性2-1

控制上传文件的类型

List<String> fileType = Arrays.asList("gif", "bmp", "jpg");

String ext = fileName.substring(fileName.lastIndexOf(".") + 1);

if (! fileType.contains(ext)) {  // 判断文件类型是否在允许范围内

    out.print("上传失败,文件类型只能是gif、bmp、jpg");

} else {

    //上传文件

}

 

控制上传文件的类型

List<String> fileType = Arrays.asList("gif", "bmp", "jpg");

String ext = fileName.substring(fileName.lastIndexOf(".") + 1);

if (! fileType.contains(ext)) {  // 判断文件类型是否在允许范围内

    out.print("上传失败,文件类型只能是gif、bmp、jpg");

} else {

    //上传文件

}

 

控制上传文件的大小

ServletFileUpload upload = new ServletFileUpload(factory);

// 设置一个完整请求的最大限制

upload.setSizeMax(1024 * 30);

try {

    // ……省略上传代码

} catch (FileUploadBase.SizeLimitExceededException ex) {

    out.print("上传失败,文件太大,全部文件的最大限制是:" +

    upload.getSizeMax() + "bytes!");

}

 

  1. 总结

发布了65 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/kxindouhao5491/article/details/83475037
今日推荐