上传

preparation

本节摘要:本节主要介绍上传文件到指定目录。

引入:

文件上传是开发中常用的功能,本节主要介绍用commons-fileupload-1.1.jar包实现基本的文件上传功能,即上传文件到指定的目录中,同时介绍上传过程中使用到的相关类及其方法。

下载插件:

准备需要的jar包

* commons-fileupload-1.1.jar 文件上传jar包(必须导入) 
* commons-io-1.2.jar (必须导入)如果不导入的程序编译时不会报错,但是发布后运行时会报错 
* log4j-1.2.8.jar 强烈建议导入,但在本类中不是必须的,后面的上传文件到数据库中的类中会使用 
* classes12.jar 连接oracle数据库的jar包,后面的上传文件到数据库中时必须导入

开发环境:

System:xp    JDK:1.5(开发的JDK版本)  Tomcat:5.X  Myeclipse:6.5

注意:编译的JDK版本用JDK1.4(如果用JDK1.5编译,会报”Unsupported major.minor version 49.0”错误)

项目环境:

1

文件上传目录介绍:

在D盘根目录新建一个test文件夹,然后在test文件夹中新建以下两个文件夹 
* temp:存放超过设置大小的文件(>2M的文件) 
* uploadfile:上传文件的存放目录(<=2M的文件)

class&method:

 *DiskFileItemFactory
 * 实现了FileItemFactory接口
 * 主要方法有:
 * public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)
 * setRepository(File repository);设置缓存路径 也有相应的get方法
 * setSizeThreshold(int sizeThreshold);设置上传文件内存缓冲区的大小 也有相应的get方法
 * 
 * ServletFileUpload
 * 从FileUpload继承,而FileUpload又从FileUploadBase继承
 * ServletFileUpload(FileItemFactory fileItemFactory);传入一个fileItemFactory对象,构造ServletFileUpload对象
 * List parseRequest(HttpServletRequest request);从request中获得文件请求列表
 * void setSizeMax(long sizeMax);//设置允许上传文件大小 也有相应的get方法
 * setHeaderEncoding(String encoding);//设置上传文件名编码的格式 也有相应的get方法
 * 
 * Pattern
 * 正则表达式的编译表示形式,指定为字符串的正则表达式必须首先被编译为此类的实例。
 * 然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配
 * static Pattern compile(String regex);将给定的正则表达式编译到模式中
 * Matcher matcher(CharSequence input);创建匹配给定输入与此模式的匹配器,返回此模式的新匹配器
 * 
 * FileItem
 * 抽象接口,继承Serializable
 * boolean isFormField();判断FileItem类对象封装的数据是否属于一个普通表单字段,
 *                      还是属于一个文件表单字段,如果是普通表单字段则返回true,否则返回false
 * String getName();用于获得文件上传字段中的文件名
 * String getFieldName();用于返回表单字段元素的name属性值
 * long getSize();获得上传文件的大小 单位:字节
 * getContentType();用于获得上传文件的类型
 * void write(File paramFile);用于将FileItem对象中保存的主体内容保存到某个指定的文件中
 * 
 * Matcher
 * 通过解释 Pattern 对 character sequence 执行匹配操作的引擎。 
 * 通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
 * matches方法尝试将整个输入序列与该模式匹配。 
 * lookingAt 尝试将输入序列从头开始与该模式匹配。 
 * find 方法扫描输入序列以查找与该模式匹配的下一个子序列。 
 * String group(int group)返回在以前匹配操作期间由给定组捕获的输入子序列 
 * 
 * String
 *  boolean endsWith(String suffix)测试此字符串是否以指定的后缀结束。

start

1.新建web项目UpDown,导入上面介绍的4个jar包

2.新建upload.html文件,用于上传的前台的UI界面

upload.html

3.新建servlet文件Upload.java文件,用于对上传的文件进行处理

upload.java

4.配置web.xml文件

web.xml

5.发布项目

result

访问的URL如下:

http://localhost:8080/UpDown/upload.html

upload.html页面如下:

image

上传完成后跳转显示的页面如下:

image

检查指定的上传目录:

image

检查文件大小限制(上传一个大于2M的文件,然后点击”开始上传”,界面显示如下):

image

检查文件后缀名过滤(上传一个exe文件,然后点击”开始上传”,界面显示如下):

image

遗留&拓展部分:

 * 1.中文乱码问题  IE界面显示乱码、上传目录乱码
 * 2.上传目录和程序不在同一台主机上的处理方式  
 * 2.文件缓存问题
 * 3.文件的端点续传功能
 * 4.上传滚动条问题

answer

1.关于中文乱码问题的解决方法

经过测试以下语句设置为utf-8即可解决,设置为gbk或gb2312都无法解决中文乱码问题

sevletFileUpload.setHeaderEncoding("utf-8");


摘要: 本节摘要:上节解决了上传文件到本机指定目录,本节主要是在上节的基础上对前台显示的html页面做一下修改,实现动态的增加文件输入框s。新建upload2.html(放在和upload.html文件的同一个目录下)代码如下:upload2.html 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 <html> 3 <head> 4 <title>upload2.html</title> 5 6 <meta http-equiv阅读全文
posted @ 2012-02-20 23:12 月月鸟0820 阅读(891) | 评论 (0) 编辑
 
摘要: preparation本节摘要:本节主要介绍上传文件到指定目录。引入:文件上传是开发中常用的功能,本节主要介绍用commons-fileupload-1.1.jar包实现基本的文件上传功能,即上传文件到指定的目录中,同时介绍上传过程中使用到的相关类及其方法。下载插件:准备需要的jar包* commons-fileupload-1.1.jar 文件上传jar包(必须导入) * commons-io-1.2.jar (必须导入)如果不导入的程序编译时不会报错,但是发布后运行时会报错 * log4j-1.2.8.jar 强烈建议导入,但在本类中不是必须的,后面的上传文件到数据库中的类中会使用 * c阅读全文
posted @ 2012-02-17 20:26 月月鸟0820 阅读(757) | 评论 (0) 编辑

摘要: 本节摘要:本节主要是简单的介绍ECS在HTML中的应用preparation引入:Jakarta Element Construction Set(ECS)是一个使用 Java 语言和面向对象方法创建标记语言文档的开放源代码项目 ECS 是一组类,它们可用于生成以 HTML、XML、VioceXML 和其他标记语言编写的文档。目前,ECS 支持 HTML 和 XML, 但是它可以扩展为支持其他不同的标记语言。有了 ECS,就可以创建一个使用面向对象方法生成这种文档的应用程序, 这简化了应用程序的开发和维护。ECS提供了用 Java 对象生成标记语言的更易管理的技术。下载插件:开发环境:Syst阅读全文
posted @ 2012-01-08 17:51 月月鸟0820 阅读(859) | 评论 (2) 编辑
 
摘要: 本节摘要:本节主要介绍用dom4j解析xml字符串preparation引言: 项目中系统之间的交互,常用的就是xml的方式,一个系统拼装xml字符串,调用webservice发送给另外一个系统(之前在前面介绍过一种拼装xml字符串的方式,即object to xml),那么收到xml的系统当然要对xml字符串进行解析,判断必须字段的值是否存在,字段格式是否正确等。xml的解析方式有很多种,要我来总结我还真不能很明白的讲清楚,项目中常用的是dom4j的解析方式,那么为了巩固和加强用到的知识,本节只介绍dom4j这种解析xml的方式。下载dom4j.jar包:请从百度中下载,由于网络不方便,就不阅读全文
摘要: 本节摘要:今天是2011年的最后一天,留下点什么有意义的事情也不错,之前在介绍jfreechart的时候,有个园友提到了highcharts用来做图表的功能更加的方便和强大,今天在这个特殊的日子,咱就把highcharts拿来做个简单的介绍,希望更多的朋友可以用到这个用来做图表的js插件。preparationHighchartsHighcharts是一个制作图表的纯Javascript类库,主要特性如下:兼容性:兼容当今所有的浏览器,包括iPhone、IE和火狐等等;对个人用户完全免费;纯JS,无BS;支持大部分的图表类型:直线图,曲线图、区域图、区域曲线图、柱状图、饼装图、散布图;跨语言:阅读全文
posted @ 2011-12-31 22:22 月月鸟0820 阅读(1200) | 评论 (15) 编辑
 
摘要: 摘要:前面几节介绍用jfreechart来制作条形图、饼图、曲线图,有个哥们提了下highcharts比jfreechart好用,在这里提一下,后期的博客中会对这个做一个简单的介绍,本节主要介绍用jxl如何读和取excle中的数据。preparationsample introduction通过java操作excel表格的工具类库支持Excel 95-2000的所有版本生成Excel 2000标准格式支持字体、数字、日期操作能够修饰单元格属性支持图像和图表 应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样.阅读全文
posted @ 2011-12-21 00:14 月月鸟0820 阅读(924) | 评论 (3) 编辑
 
摘要: 摘要:前两节介绍了jfreechart的条形图、饼图,本节主要介绍jfreechart的曲线图。本节主要是用jfreechart包中自带的gui相关的类,实现曲线图GUI的简单效果。preparationclassApplicationFrame类:RefineryUtilities类:ChartPanel类:methodsetContentPane()由于网络原因,用到的类和方法的详细介绍,在后面补充上。start曲线图 1 package line; 2 3 import org.jfree.chart.ChartFactory; 4 import org.jfree.chart...阅读全文
posted @ 2011-12-20 00:13 月月鸟0820 阅读(832) | 评论 (6) 编辑
 
摘要: 摘要:上节主要介绍了用servlet代码来实现条形图,本节主要接着上节介绍用jsp代码来实现饼图。下面分别介绍pie文件夹下的三个jsp文件(web.xml文件是之前的公用部分,不用做任何的更改):pie1.jsp 一个基本的饼图pie1.jsp 1 <%@ page contentType="text/html;charset=GBK"%> 2 3 <%@ page 4 import="org.jfree.chart.*,org.jfree.chart.plot.PiePlot, 5 org.jfree.data.general.Default阅读全文
posted @ 2011-12-18 22:35 月月鸟0820 阅读(263) | 评论 (0) 编辑
 
摘要: 1 preparation1.1 sample introductionJFreeChart是JAVA平台上的一个开放的图表绘制类库。I完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。JFreeChart截止2011年2月22日为止的相当不错的jav阅读全文
摘要: 摘要:本节主要用于介绍使用axis开发webservice,包括服务端的创建、webservice的部署、客户端的调用。preparation:说明:相关的可能要了解SOAP(简单对象访问协议)、WSDL(web服务描述语言)、XML(可扩展标记语言)、axis(阿帕奇可扩展交互系统)等相关知识。1.下载axis的jar包,请到apache官网或者在百度自行下载,然后导入jar包,不清楚的话导入所有的jar包就好了。(本人用的是axis1的版本,因为项目中用的是axis1的版本)2.webservice客户端生成工具genclient.bat(后面会对这个工具做一个简单的说明)之前介绍没有说明阅读全文
posted @ 2011-11-25 00:26 月月鸟0820 阅读(290) | 评论 (0) 编辑
摘要: 摘要:本节主要介绍如何把Object对象转换为XML引言:最近工作中因为工作需要,需要把两个系统之间的传递的报文修改一下(现在系统之间一般都是通过发送xml字符串传数据吧),最开始用的Jdom来实现的,由于jdom实现需要手写的代码太多,并且遇到了点问题,只有另想办法了,最后准备用Object转xml来实现,虽然这个代码不见得少多少,但是get和set方法都是通过工具自动生成,手写的就少很多了。准备工作:下载xstream-1.2.1.jar包,我的是1.2.1的版本,可以直接去百度搜索,下载的链接就不提供了。XStream类:XStream是一个Java对象和XML相互转换的工具。提供了所有阅读全文
posted @ 2011-10-25 22:15 月月鸟0820 阅读(388) | 评论 (0) 编辑
 
摘要: 摘要:本节只是为了做一个记载,实现一个简单的验证是否需要预占下来框有是和否两个值,当选择“是”时,资源预占原因输入框必须输入值,否则不能跳转,当选“否”时,不需要验证资源预占原因输入框。有两个文件a.html和b.html,a.html 即下面的代码,b.html只是为了验证通过时候一个跳转页面,不做任何代码编写因为a.html用的是相对路径,所以要想程序能正常运行,b.html文件必须和a.html放在同一个目录下。下拉框 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h阅读全文
posted @ 2011-10-17 23:23 月月鸟0820 阅读(130) | 评论 (0) 编辑
 
摘要: 摘要:本节主要介绍两点:1.缓存问题 2.中文问题缓存问题:何谓缓存问题?即当浏览器的输入内容相同,即请求的URL相同,这样浏览器就会去读缓存,两次的内容一样,就不会和服务器端进行交互。解决方式:在请求的url中加上时间戳。通过我的测试,IE、360两次用户名输入一致时不会和服务器端交互,firefox即使两次用户名输入的一样,仍然会和服务器端交互。即:firefox的中服务器端返回的temp值会每次加1,IE、360就不会改变。故加上时间戳在这三种浏览器中都不会再有缓存问题。修改的代码:AJAXServer.java 缓存问题1 //缓存问题加的测试代码 输入内容不变...阅读全文
posted @ 2011-10-16 11:29 月月鸟0820 阅读(198) | 评论 (0) 编辑
 
摘要: 摘要:ajax学习1中介绍了使用jquery封装的ajax来接收服务器端的文本数据以及使用XMLHttpReques对象来接收服务器端的文本数据ajax学习2中介绍了使用XMLHttpReques来接收服务器的端XML数据,本节主要介绍使用jqery封装的ajax使用XML格式接收服务器端的数据。 由于很多知识都已经做了详细介绍,本节只介绍需要修改的代码,使用jqery封装的ajax使用XML格式接收服务器端的数据,web.xml、后台的servet都不用改,只是ajax.html中调用的方法名称修改一下,改为新增加的javascript方法。用到的主要的一个方法介绍:jQuery.ajax(阅读全文
posted @ 2011-10-16 10:55 月月鸟0820 阅读(144) | 评论 (0) 编辑
 
摘要: 摘要:本节补充ajax学习笔记1中第二种方式:使用XMLHttpRequest对象的responseXML的方式来接受XML数据对象的DOM对象在ajax学习笔记1中已经对准备工作和需要用到的知识做了比较详细的介绍,本节主要介绍需要修改的代码以及新增的代码1.新增一个servlet类AJAXXMLServer.javaAJAXXMLServer .java 1 import javax.servlet.http.HttpServlet; 2 import javax.servlet.http.HttpServletRequest; 3 import javax.servlet.http.Htt阅读全文
posted @ 2011-10-15 23:50 月月鸟0820 阅读(45) | 评论 (0) 编辑
 
摘要: 摘要:本节主要是为了介绍ajaxAJAX简单介绍: AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML),是指一种创建交互式网页应用的网页开发技术。通过 AJAX,JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您JavaScript 可在不重载页面的情况与 Web 服务器交换数据。 jQuery是一种javascript框架,是对javascript的一种轻量级的封装,容易理解。 Ajax是一种由xml+javascript组合起来的一种异步请求技术阅读全文
posted @ 2011-10-15 21:45 月月鸟0820 阅读(217) | 评论 (2) 编辑
 
摘要: 摘要:本节主要介绍用dtree来实现树形的菜单准备工作:请从dtree官网http://www.destroydrop.com/javascripts/tree/下载dtree.zip文件dtree.zip压缩包介绍:dtree是一个由JavaScript编写成的简单的树形菜单组件,目前免费并且开源。目前有很多的树形菜单组件(比如ext),dtree是一种简单易懂的js组件,不需要复杂的操作即可生产,同时支持动态从数据库引入数据解压后有以下几部分:img文件夹: 包含树形菜单显示需要的图标api.html : 作者写的dtree帮助文档 dtree.css: 树形菜单的样式dtree.js..阅读全文
posted @ 2011-10-14 22:50 月月鸟0820 阅读(272) | 评论 (6) 编辑
 
摘要: 故事背景:在第一篇中提到过可以通过Jacob操作office,自己就花了一些时间看了一下Jacob的相关介绍,由于工作比较忙,加上目前个人的高度有限,只对Jacob做一个很简单的介绍,以后在工作中如果有用到Jacob的时候,再做详细的介绍,此篇一是记录生活的点滴,二是给自己和有缘的朋友起一个抛砖引玉的作用,如有错请不吝赐教。故事简介:JACOB--JAVA-COM Bridge 提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的。使用之前:1 导入jar包,可以从http://sourceforge.net下载2 把dll文件拷贝到C:\阅读全文
posted @ 2011-10-12 12:57 月月鸟0820 阅读(193) | 评论 (0) 编辑
 
摘要: 今天花了一些时间看了一些javascript的知识,遇到了map标签和area标签,这个今天第一次遇到笨人总有笨办法,呵呵,晚上回来了,赶紧百度去吧,经过一番百度,总算知道是干嘛的呢这就把搜索后整理的结果贴出来标签作用:图像映射标签介绍:以下三个标签必须同时使用:<img>标签:插入一张图片主要属性:src 图片的路径,可以是相对路径,也可以是绝对路径alt 定义图片区域的替换文本usermap 可引用 <map> 中的 id 或 name 属性(取决于浏览器),所以我们应同时向 <map> 添加 id 和 name 属性,并且值必须一样,只是usermap阅读全文
posted @ 2011-10-12 12:54 月月鸟0820 阅读(136) | 评论 (0) 编辑
 
摘要: 今天在博客网申请了博客,一直要动手开始写博客,直到今天才开始写博客。写博客不是为了显摆什么,只是为了记录自己成长的一点历程,当回首时可以看到生活的一点点痕迹。最近做了一个用POI设计excel2003的样式的东东,拿出来晒晒,欢迎看到的朋友多多指教。废话不多说了,现在咱就进入正题。---------------先做一点说明:文档中XXX表示可以根据需要自己选择的属性-------------------------1.jar包介绍poi-2.5.1-final-20040804.jar,请从google或百度上下载2.几个重要类及方法的介绍HSSFWorkbook:创建一个工作薄用到的类常用方阅读全文


原文地址:https://www.cnblogs.com/Leo_wl/p/2361926.html