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组件
Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目
Commons-FileUpload组件特点
使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能
能够全程控制上传内容
能够对上传文件的大小、类型进行控制
Commons-FileUpload组件应用
1、环境准备
在项目中引入commons-fileupload-1.2.2.jar和commons-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!"); }