Java Web中第三方控件与分页查询重点总结

CKEditor:

网页中实现所见即所得的编辑器

第三方组件:

第三方组织提供的组件,会用就行

要求:

  1. 会用就行,知道步骤就可以,不用管怎么开发的,不需要理解
  2. 不需要记住,因为可能会有更好的

使用CKEditor步骤:

  1. 下载CKEditor
  2. 解压到项目中
  3. 在页面中加入CKEditor
  4. 使用CKEditor编辑内容
  5. 提交CKEditor编辑的内容

enctype="multipart/form-data" : 这是一个多部分表单数据的提交(有普通的,还有传文件的)

Commons-FileUpload简介:

Commons-FileUpload组件:

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

Commons-FileUpload组件特点:

  1. 使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能
  2. 能够全程控制上传内容
  3. 能够对上传文件的大小、类型进行控制

获取Commons-FileUpload组件的方式:

1. http://commons.apache.org/fileupload下载Commons-FileUpload组件

类库:commons-fileupload-1.2.2.jar

API文档:commons-fileupload-1.2.2\site\apidocs

2. http://commons.apache.org/io下载Commons-IO组件

类库:commons-io-2.4.jar

API文档:commons-io-2.4\docs

Commons-FileUpload组件应用:

环境准备:

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

设置表单的enctype属性:

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

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

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

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

Commons-FileUpload组件的API:

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)

设置临时文件存放的目录

文件上传的实现:

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

1. 创建FileItemFactory对象

2. 创建ServletFileUpload对象 

3. 解析form表单提交的所有表单元素数据

   a. 如果是普通表单元素:

       获取该元素的名和值使用

   b. 如果是文件数据:

       获取文件名的等参数

       保存文件数据到服务器

控制上传文件的属性:

控制上传文件的类型:

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

}

实现分页查询:

先编写分页查询sql语句,再编写分页查询方法,将分页查询分步实现

新闻数据分页展示

计算新闻总条数(1000)

去数据库中分页查询数据(10条10条的查)

都放进NewsService(impl) ---> NewsDao(impl)中

分页工具类中放计算的总页数:1000/10=100页

分页显示的步骤:

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

公用的分页sql:分页后每页显示几条新闻(页面容量)pageSize

从第几条数据开始显示(当前页码pageNo-1)*pageSize

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

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

计算总页数:

public void setTotalPageCountByRs(){

        if(this.totalCount%this.pageSize==0){

               this.totalPageCount = this.totalCount/this.pageSize;

        }else if(this.totalCount%this.pageSize != 0){

               this.totalPageCount = this.totalCount/this.pageSize+1;

        }else{

               this.totalPageCount=0;   }   }

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

SELECT id,title,author,createdate FROM news_detail WHERE 1=1 LIMIT (pageNo-1)*pageSize,pageSize

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

a. 传参数的方法传递页面信息

<% if(pageIndex>1){ %>

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

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

<% }if(pageIndex<totalpage){ %>

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

<a href="newsDetailList.jsp?pageIndex=<%=totalpage %>">最后一页</a>

<% } %>

b. 传标签的方法传递页面信息

<% if(pageIndex>1){ %>

<a href="javaScript:page_nav(document.forms[0],1)">首页</a>

<a href="javaScript:page_nav(document.forms[0],<%=pageIndex-1%>)">上一页</a>

<% }if(pageIndex<totalpage){ %>

<a href="javaScript:page_nav(document.forms[0],<%=pageIndex+1%>)">下一页</a>

<a href="javaScript:page_nav(document.forms[0],<%=totalpage%>)">最后一页</a>

<% } %>

总结:

Java Web中第三方控件与分页查询重点总结