JSP开发业务应用


JSP分页显示数据

分页显示的步骤

1、确定每页显示的数据数量

2、确定分页显示所需的总页数

3、编写SQL查询语句,实现数据查询

4、在JSP页面中进行分页显示设置

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

public class Page {

 

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

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

        private int totalCount;          // 记录总数

        private int totalPageCount; // 总页数

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

 

        …… // 省略getter/setter方法

}

计算显示总页数

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

public void setTotalCount(int totalCount) {

       if (totalCount > 0) {

this.totalCount = totalCount;

//计算总页数	        

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

               (this.totalCount / pageSize) :

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

       }

}

如果记录总数能被每页显示记录数整除,则总页数为两者的商,如果不能被整除,则余出的记录数单独列为一页,所以总页数为两者的商再加一。

使用LIMIT子句

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

3表示每页显示的数据量

0表示起始行的下标

起始行的下标 = (当前页页码 - 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>

%>

页码边界的控制

//通过判断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>

<%   

}

%>   

 

// 获取当前页

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

if (currentPage == null) {

     currentPage = "1";

}    

int pageIndex = Integer.parseInt(currentPage);

Commons-FileUpload组件实现文件上传

Commons-FileUpload简介

Commons-FileUpload组件

CommonsApache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目

Commons-FileUpload组件特点

使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能

能够全程控制上传内容

能够对上传文件的大小、类型进行控制

Commons-FileUpload组件应用

1、环境准备

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

2、设置表单的enctype属性

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

3、在表单中使用File控件选择文件

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

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

ServletFileUpload类的常用方法

方法名称

方法描述

public void setSizeMax (long  sizeMax)

设置请求信息实体内容的最大允许的字节数

public  List  parseRequest (

                        HttpServletRequest  req)

解析form表单中的每个字符的数据,返回一个FileItem对象集合

public static final boolean isMultipartContent(HttpServletRequest req)

判断请求信息中的内容 是否是multipart/form-data类型

public  void  setHeaderEncoding (

                                     String  encoding)

设置转换时所使用的字符集编码

FileItem接口的常用方法

方法名称

方法描述

public  boolean  isFormField( )

判断FileItem对象封装的数据类型(普通表单字段返回true,文件表单字段返回false

public  String  getName( )

获得文件上传字段中的文件名(普通表单字段返回null

public  String  getFieldName( )

返回表单字段元素的name属性值

public  void  write( )

FileItem对象中保存的主体内容保存到指定的文件中

public  String  getString( )

FileItem对象中保存的主体内容以一个字符串返回。其重载方法public  String  getString(String encoding)中的参数用指定的字符集编码方式

public  long  getSize( )

返回单个上传文件的字节数

FileItemFactory接口

实现类:DiskFileItemFactory

方法名称

方法描述

public void  setSizeThreshold(int sizeThreshold)

设置内存缓冲区的大小

public void  setRepositoryPath(String path)

设置临时文件存放的目录

Commons-FileUpload组件的应用

编辑处理页面

例如:

<%

request.setCharacterEncoding("utf-8");

String uploadFileName = ""; //上传的文件名

String fieldName = "";  //表单字段元素的name属性值

//请求信息中的内容是否是multipart类型

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

//上传文件的存储路径(服务器文件系统上的绝对文件路径)

String uploadFilePath = request.getSession().getServletContext().getRealPath("upload/" );

if (isMultipart) {

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

//解析form表单中所有文件

List<FileItem> items = upload.parseRequest(request);

Iterator<FileItem> iter = items.iterator();

while (iter.hasNext()) {   //依次处理每个文件

FileItem item = (FileItem) iter.next();

if (item.isFormField()){  //普通表单字段

fieldName = item.getFieldName();   //表单字段的name属性值

if (fieldName.equals("user")){

//输出表单字段的值

out.print(item.getString("UTF-8")+"上传了文件。<br/>");

}

}else{  //文件表单字段

String fileName = item.getName();

if (fileName != null && !fileName.equals("")) {

File fullFile = new File(item.getName());

File saveFile = new File(uploadFilePath, fullFile.getName());

item.write(saveFile);

uploadFileName = fullFile.getName();

out.print("上传成功后的文件名是:"+uploadFileName);

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

%>

Commons-FileUpload组件控件文件上传

控制文件上传的类型

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!");

}

猜你喜欢

转载自blog.csdn.net/weixin_40544803/article/details/80611944