昨天晚上练习代码,遇到个错误,排了一个多小时才排出来。而且错误还十分可笑。今天早上郁闷,向老冯诉苦了下。
老冯告诉我们,这样的情况很正常,在实际开发中就是这样——“20%的时间写代码,80%的时间来排错”! 此话经典,铭记!
今天将的内容比之前两天要容易些,主要讲了web开发中文件的上传和下载,以及国际化。下面就来做今天的总结了。
一. 基于表单的文件上传
文件上传在web站点应用中是非常常见的一个功能,例如我们在邮箱中要上传邮件附件,在校内里上传个人相片等。这些上传功能,我们能看到的页面形式大致如下
上传页面
此形式的上传都是基于表单的文件上传,因此一般要在相关的jsp页面中加入<input type="file" >标签,此外还要设置entype属性为multipart/form-data表示表单以二进制传输数据。
然后便是利用apache公司出品的commons-fileupload 和commons-io组件在相关的servlet程序中实现表单文件上传的功能。
FileUpload组件将页面提交的所有元素(普通form表单域,如text和文件域file)都看作一样的FileItem,这样上传页面提交的 request请求也就是一个FileItem的有序组合,FileUpload
组件可以解析该request,并返回一个一个的FileItem。而对每一个FileItem,FileUpload组件可以判断出它是普通form表单域还是文件file域,从而根据不同的类型,采取不同的操作--如果是
表单域,就读出其值,如果是文件域,就保存文件到服务器硬盘上或者内存中。
二. 文件下载
文件下载有两种方式:一种是直接一个超链接指向工程中的文件即可,这种下载的方式这所以可行,是靠浏览器自带有下载功能。第二种方式是用程序编码实现下载,其在web站点的应用更广泛,而且有如下两个有点:
可以增加安全访问控制,只对经过授权认证的用户提供下载
可以从任意位置提供下载的数据
秀下笔记,看看该程序如何编写
*设置两个报头
当报出错误找不到类的时候,有一种可能是服务器没自动生成class文件的时候,到下面的页面挑上所有选项,让服务器重新找到开发工具。
*获取输入流字节流
*获取输出流
*从输入字节流中读取信息写到输出字节流中