Java Web程序设计

刘肃平、聂军、王华、李勇波、魏碧晴

目录

  • 1 Java Web概述
    • 1.1 任务导引
    • 1.2 动态网页技术介绍
    • 1.3 JSP的运行环境
    • 1.4 JSP的运行原理
    • 1.5 JSP程序开发模式
    • 1.6 JSP开发工具
    • 1.7 任务实施:JSP开发环境搭建及第一个Hello World程序
  • 2 JSP基本语法
    • 2.1 任务导引
    • 2.2 JSP的基本组成
    • 2.3 脚本元素
    • 2.4 指令元素
    • 2.5 动作元素
    • 2.6 任务实施
  • 3 服务器交互
    • 3.1 任务导引
    • 3.2 JSP内置对象概述
    • 3.3 out对象
    • 3.4 request对象
    • 3.5 response对象
    • 3.6 session对象
    • 3.7 application对象
    • 3.8 其他内置对象
    • 3.9 任务实施:使用JSP内置对象实现登录和注销功能
  • 4 JavaBean技术
    • 4.1 任务引导
    • 4.2 JavaBean概述
    • 4.3 JavaBean的应用
    • 4.4 JavaBean的作用域
    • 4.5 任务实施
    • 4.6 JSP中的文件操作
  • 5 Servlet技术
    • 5.1 任务引导
    • 5.2 Servlet基础
    • 5.3 Servlet开发
    • 5.4 Servlet常用API
    • 5.5 任务实施
  • 6 第6章 过滤器和监听器
    • 6.1 任务导引
    • 6.2 Servlet过滤器
    • 6.3 过滤器创建与配置
    • 6.4 Servlet监听器
    • 6.5 Servlet3.0新特性
    • 6.6 任务实施
  • 7 Java Web的数据库操作
    • 7.1 任务导引
    • 7.2 JDBC技术
    • 7.3 使用JDBC驱动程序访问数据库
    • 7.4 数据库连接的JavaBean
    • 7.5 JDBC对事务的操作
    • 7.6 连接池技术
    • 7.7 任务实施
    • 7.8 扩展阅读
  • 8 JSP高级技术
    • 8.1 任务导引
    • 8.2 EL概述
    • 8.3 JSTL标签库简介
    • 8.4 JSTL核心标签
    • 8.5 JSP与Ajax
    • 8.6 任务实施
    • 8.7 扩展阅读
  • 9 JSP实用组件技术
    • 9.1 任务导引
    • 9.2 上传与下载组件
    • 9.3 发送E-mail
    • 9.4 JSP动态图表
    • 9.5 在线编辑器
    • 9.6 任务实施
上传与下载组件

请同学们先浏览PPT,这是一个任务点哈!完成后有惊喜哟!



1.Commons-FileUpload组件简介

随着Internet的普及,网络共享逐渐成为了广大网民传递信息、共享资源的一种常用方式,不管是社交软件中用户将计算机中或者手机中的文件上传至服务器以便他人浏览、欣赏,还是电商网站/软件中商家上传商品图片,都涉及到文件上传实现文件上传,最底层还是对文件的读写操作,在以前实现起来要编写大量的代码,而且容易引发各式各样的异常。幸运的是现在有好多很实用的上传工具,可以帮助我们实现这些功能,而目前应用的比较多的,就是Commons-FileUpload组件。 

2.应用Commons-FileUpload组件完成文件上传

进行文件上传时,必须首先了解上传表单的enctype属性,该属性用于设置表单提交数据的编码方式。它有以下3个值:

  • application/x-www-form-urlencoded:这是默认值。主要用于处理少量文本数据的传递。在向服务器发送大量的文本包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。

  • multipart/form-data:上传二进制数据,只有使用了multipart/form-data,才能完整的传递文件数据,进行上传的操作。

  • text/plain:这种方式主要用于向服务器传递大量文本数据。比较适用于电子邮件的应用。 


ServletFileUpload类,主要用于解析form表单提交的数据、设置请求信息实体内容的最大允许字节数,常用方法见表: 

                 

 

序号

 
 

方法名称

 
 

方法描述

 
 

1

 
 

void setSizeMax(long sizeMax)

 
 

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

 
 

2

 
 

List  parseRequest(HttpServletRequest request)

 
 

解析form表单提交的数据返回一个FileItem实例的集合

 
 

3

 
 

static final boolean  isMultipartContent(HttpServletRequest   request)

 
 

判断请求提交的方式是否是“multipart/form-data”类型

 
 

4

 
 

void setHeaderEncoding(String encoding) 

 
 

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

 

FileItem接口,用于封装单个表单字段元素的数据,每一个表单字段都对应一个FileItem实例,在应用程序中使用的是其实现类DiskFileItem。FileItem接口提供的常用方法见表       

 

序号

 
 

方法名称

 
 

方法描述

 
 

1

 
 

public boolean  isFormField()

 
 

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

 
 

2

 
 

public String getName()

 
 

获得文件字段中所上传的文件名,普通表单字段调用此方法返回null

 
 

3

 
 

public StringgetFieldName()

 
 

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

 
 

4

 
 

public void  write(File file)

 
 

将FileItem对象中保存的文件数据内容写入到指定的文件中

 
 

5

 
 

public String  getString()

 
 

将FileItem对象中保存的主体内容以一个字符串返回,其有一个重载方法getString(Stringencoding)可指定所采用的编码集

 
 

6

 
 

public long  getSize()

 
 

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

 

FileItemFactory接口与其实现类DiskFileItemFactory,创建ServletFileUpload实例需要依赖FileItemFactory工厂接口,DiskFileItemFactory是此接口的实现类,主要有两个常用方法见表:      

 

序号

 
 

方法名称

 
 

方法描述

 
 

1

 
 

public void setSizeThreshold(intsizeThreshold)

 
 

设置内存缓冲区的大小

 
 

2

 
 

pubic void setRepositoryPath(String  path)

 
 

设置临时文件存放的目录

 


3.文件下载

进行文件下载时首先需要确定该文件在服务器的位置,然后在页面中以链接形式发送下载请求,并在Servlet类中使用I/O流处理下载,将所下载的文件流作为响应返回即可。

(1)创建页面“index.jsp”,该页面给出下载列表,并通过getServletContext().getRealPath()方法得到每个下载文件的路径,同时通过下载链接发送下载

(2)该页面中每个下载链接都发送请求down.do,该请求在web.xml文件中配置:

(3)创建Servlet类Download.java,该类中的doPost方法处理下载请求,并使用输出流输出响应