资源预览内容
第1页 / 共54页
第2页 / 共54页
第3页 / 共54页
第4页 / 共54页
第5页 / 共54页
第6页 / 共54页
第7页 / 共54页
第8页 / 共54页
第9页 / 共54页
第10页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Java Wb开发技术教程,第13章 Java Web开发常用功能,主要内容,文件上传 分页处理 JavaMail 树状菜单,文件上传,在Java的Web开发中没有对文件的上传进行封装,需要自己开发一个Servlet或者JavaBean处理上传或下载的任务。 从HttpServletRequest中获得客户端请求的输入流。 通过输入流中读取指定的文件,将文件保存在指定的位置。,文件上传,jspSmartUpload 组件是一个免费使用的文件上传组件,它的使用简单,功能齐备。 通过该组件,可以获得上传文件的全部信息(包括文件名、大小、类型、扩展名、文件数据等),同时还可以对上传文件的大小、类型等方面进行限制。 在使用时需要把该组件的jar文件放到站点WEB-INF目录的lib中。,文件上传,jspSmartUpload组件中包括File、Files、Request、SmartUpload等类。 File:包括上传文件的所有信息,如:上传的文件名、大小、扩展名、文件数据等。 Files:所有上传文件的集合。从中可以获得上传文件的数目、大小等。 Request:相当与JSP中的request对象,如果在上传的表单中还有其它的表单项的值,必须通过jspSmartUpload组件中的Request对象获取。 SmartUpload:完成文件上传。 。,单元项目1-采用jspSmartUpload 组件上传文件,项目构思:采用jspSmartUpload 组件将客户端的doc和txt文件上传到Web服务器。 项目设计: 创建一个JSP文件用于客户端的文件上传界面。 将jspSmartUpload组件加入到项目中。 创建一个Servlet用于处理上传的文件。,单元项目1-采用jspSmartUpload 组件上传文件,项目实施: 创建一个JSP文件upload.jsp:(主要代码如下) 文件描述: 文件名称: ,注意:form表单中必须添加method=“post“与enctype=“multipart/form-data”属性。,单元项目1-采用jspSmartUpload 组件上传文件,项目实施: 将jsmartcom_zh_CN.jar文件拷贝到项目目录的WEB-INF/lib下。 在Servlet中处理上传文件。,单元项目1-采用jspSmartUpload 组件上传文件,项目实施: 在Servlet中处理上传的文件主要代码: SmartUpload mySmartUpload = new SmartUpload(); int count = 0;/上传文件的数量 try mySmartUpload.initialize(this.getServletConfig(), request, response); / 限制每个上传文件的最大长度。 mySmartUpload.setMaxFileSize(50 * 1024 * 1024); / 设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。 mySmartUpload.setAllowedFilesList(“doc,txt“); mySmartUpload.upload(); /获得上传的文件 File myfile = mySmartUpload.getFiles().getFile(0); /获得上传文件的名字 String fileName = myfile.getFileName(); /保存文件的目录 count = mySmartUpload.save(“/upload“); /获得文件的描述信息 Request re=mySmartUpload.getRequest(); String desc=re.getParameter(“desc“); out.println(count + “ file uploaded.“); out.println(“file description:“+desc); catch (Exception e) out.println(“Unable to upload the file.“); out.println(“Error : “ + e.toString(); ,文件上传,jspSmartUpload组件使用灵活,适合较小文件的传输,如果传输数据较大,则采用commons-fileupload组件。 commons-fileupload组件的下载地址为http:/commons.apache.org/fileupload/。 使用commons-fileupload组件的时候需要将其jar文件放到站点目录WEB-INF/lib下同时还有加入commons IO的jar包。其下载的地址是http:/commons.apache.org/downloads/download_io.cgi(commons-io-1.4.jar)。,文件上传,org.apache.commons.fileupload包中包括了在commons-fileupload组件所有的类。 DiskFileItemFactory:代表本地的磁盘文件。 FileItem:代表每组数据的接口。 ServletFileUpload:获得上传文件。,单元项目2-采用commons-fileupload组件上传文件,项目构思:采用commons-fileupload组件将客户端的doc和txt文件上传到Web服务器。 项目设计: 创建一个JSP文件用于客户端的文件上传界面。 将commons-fileupload组件加入到项目中。 创建一个Servlet用于处理上传的文件。,单元项目2-采用commons-fileupload组件上传文件,项目实施: 创建一个JSP文件fileupload.jsp。 将commons-fileupload-1.2.1.jar和commons-io-1.4.jar文件拷贝到项目目录的WEB-INF/lib下。,单元项目2-采用commons-fileupload组件上传文件,项目实施: 创建一个Servlet实现文件上传。 /实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); / 设置缓冲区大小,这里是4kb ServletFileUpload upload = new ServletFileUpload(factory); /用以上工厂实例化上传组件 upload.setSizeMax(4194304); / 设置最大文件尺寸,这里是4MB String uploadPath = this.getServletContext().getRealPath(“/upload“);/ 设置上传的地址 List items = upload.parseRequest(request); / 得到所有的上传文件 Iterator it = items.iterator(); while (it.hasNext() /逐条处理 FileItem fi = (FileItem) it.next(); /得到当前文件 /检查当前项目是普通表单项目还是上传文件 if (fi.isFormField() /如果是普通表单项目,显示表单内容。 if (“desc“.equals(fi.getFieldName() out.println(“file description:“+fi.getString(); else/获得上传的文件 String path = fi.getName(); / 得到文件的完整路径 String filename = path.substring(path.lastIndexOf(“) + 1); / 得到去除路径的文件名 fi.write(new File(uploadPath, filename); /将文件保存在Web目录的upload文件夹中 out.println(filename + “ file uploaded.“); ,分页处理,在Web开发中,分页处理显示数据是最基本的功能。分页显示是将数据库中的数据依次部分地显示出来。通过分页处理可以提高页面访问速度,美化页面。在实际开发中有很多分页的解决方案,大致可以分为以下两种: 利用结果集(ResultSet)来处理。 采用SQL语句处理。,分页处理,利用结果集(ResultSet)来处理。 通过ResultSet的absolute()方法获得指定行位置的记录。 当用户第一次请求数据查询时,就执行SQL语句查询,获得的ResultSet对象及其要使用的连接对象都保存到其对应的会话对象中。 以后的分页查询都通过第一次执行SQL获得的ResultSet对象定位取得指定行位置的记录。 最后在用户不再进行分页查询时或会话关闭时,释放数据库连接和ResultSet对象等数据库访问资源。 这种方式对数据库的访问资源占用比较大,并且其利用率不是很高。 优点是减少了数据库连接对象的多次分配获取,减少了对数据库的SQL查询执行。,分页处理,采用SQL语句处理。 在用户的分页查询请求中,每次可取得查询请求的行范围的参数。 使用这些参数取得指定行范围的SQL查询语句,并执行SQL查询。 把查询的结果返回给用户,最后释放数据库访问资源。 采用这种方式需要每次请求时都要执行数据库的SQL查询语句;对数据库的访问资源使用完毕就立即释放,不占用数据库访问资源。 其缺点是: 对不同的数据库使用的查询语句是不同的。 每次均执行数据库SQL查询操作。对数据库有一定的影响。,单元项目3-分页功能的实现,项目构思:采用MVC模式实现分页功能。将表中的数据按照分页的方式显示到页面。 项目设计:根据MVC的分层原则,将分页显示的功能分为3个层次。 模型层:用于代表数据表的数据Bean、用于在页面传输数据的PageBean、用于获得分页数据的逻辑Bean 。 控制层:用Servlet完成分页控制操作。 视图层:采用JSP页面显示分页数据。,单元项目3-分页功能的实现,项目实施 : 创建用于在页面中传输数据的PageBean。 public class PageBean private int curPage; /当前页数 private int totalPages; /总页数 private int totalRows; /总行数 private int pageSize; /每页显示行数 private List data; /每页显示的数据 省略get、set方法 PageBean的主要功能是在视图和控制层之间传输数据,里面封装了需要显示的分页信息和分页的数据。,单元项目3-分页功能的实现,项目实施 : 创建数据Bean:Emp。 创建连接工具类:DBUtil 。,单元项目3-分页功能的实现,项目实施 : 创建逻辑Bean EmpDAO,获得分页数据 。 List ary=new ArrayList(); Connection conn=DBUtil.getConnection(); PageBean bean=new PageBean(); /创建PageBean bean.setPageSize(2); /设置每页显示行数 bean.setCurPage(page); /获得当前的页数 bean.setTotalRows(getEmpRows(); /获得总行数 int off
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号