一:所要的包
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
commons-logging-1.0.4.jar
commons-logging-api-1.1.jar
freemarker-2.3.8.jar
jakarta.jar
ognl-2.6.11.jar
struts2-core-2.0.8.jar
xwork-2.0.4.jar
二:上传文件jsp页面 FileUploadMany.jsp
<form action="upload.action" method="post" enctype="multipart/form-data">
文件标题:<input type="text" name="title" /><br>
选择第一个文件:<input type="file" name="upload" /><br>
选择第二个文件:<input type="file" name="upload" /><br>
选择第三个文件:<input type="file" name="upload" /><br>
<input value="上传" type="submit" />
</form>
三:struts.xml配置文件
<action name="upload" class="com.yysoft.uploadfile.FileUploadActionMany">
<interceptor-ref name="fileUpload"> --该拦截器来处理
<param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param> --为图片类型
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
<param name="savePath">/images</param>
<result name="input">/FileUploadMany.jsp</result>
<result>/uploadsuccessMany.jsp</result>
</action>
四:FileUploadActionMany.java action处理类 --一种方法,通过String数组来现实
package com.yysoft.uploadfile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadActionMany extends ActionSupport {
private String title;
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;
private static final int BUFFER_SIZE = 16 * 1024 ;
// 接受依赖注入的属性
private String savePath;
// 接受依赖注入的方法
public void setSavePath(String value)
{
this.savePath = value;
}
private String getSavePath() throws Exception
{
return ServletActionContext.getRequest().getRealPath(savePath);
}
public void setTitle(String title) {
this.title = title;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getTitle() {
return (this.title);
}
public File[] getUpload() {
return (this.upload);
}
public String[] getUploadContentType() {
return (this.uploadContentType);
}
public String[] getUploadFileName() {
return (this.uploadFileName);
}
public String execute() throws Exception{
File[] files = getUpload();
FileOutputStream fos=null;
FileInputStream fis=null;
System.out.println("files:"+files);
for (int i = 0 ; i < files.length ; i++){
// 以服务器的文件保存地址和原文件名建立上传文件输出流
System.out.println("getSavePath():"+getSavePath());
System.out.println("getUploadFileName().get(i):"+getUploadFileName()[i]);
System.out.println("files.get(i):"+files[i]);
System.out.println("uploadContentType[i]"+uploadContentType[i]);
fos= new FileOutputStream(getSavePath() + "//" + getUploadFileName()[i]);
fis= new FileInputStream(files[i]);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0){
fos.write(buffer , 0 , len);
}
fos.close();
fos=null;
fis.close();
fis=null;
}
return SUCCESS;
}
}
五LFileUploadActionMany1.java 另一种方法,action处理类,通过List集合来操作
package com.yysoft.uploadfile;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadActionMany1 extends ActionSupport {
private static final int BUFFER_SIZE = 16 * 1024 ;
private List <File> uploads = new ArrayList <File> ();
private List <String> uploadFileNames = new ArrayList <String>();
private List <String> uploadContentTypes = new ArrayList <String>();
public List<File> getUploads() {
return uploads;
}
public void setUploads(List<File> uploads) {
this.uploads = uploads;
}
public List<String> getUploadsFileName(){
return this.uploadFileNames;
}
public void setUploadsFileName(List<String> uploadFileName){
this.uploadFileNames = uploadFileName;
}
private static void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try {
in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);
}
} finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getExtention(String fileName) {
int pos = fileName.lastIndexOf( "." );
return fileName.substring(pos);
}
@Override
public String execute(){
System.out.println("uploads"+uploads.size());
System.out.println("uploadFileNames"+uploadFileNames.size());
for(int i=0;i<uploads.size();i++){
System.out.println("上传来了....................");
System.out.println("myFile======="+uploads.get(i));
System.out.println("fileName========="+uploadFileNames.get(i));
String imageFileName = new Date().getTime()+ i + getExtention(uploadFileNames.get(i));
System.out.println("imageFileName:"+imageFileName);
File imageFile = new File(ServletActionContext.getServletContext().getRealPath( "/images" ) + "/" + imageFileName);
System.out.println(uploads.get(i));
System.out.println(imageFile);
copy(uploads.get(i), imageFile);
}
return SUCCESS;
}
}
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
commons-logging-1.0.4.jar
commons-logging-api-1.1.jar
freemarker-2.3.8.jar
jakarta.jar
ognl-2.6.11.jar
struts2-core-2.0.8.jar
xwork-2.0.4.jar
二:上传文件jsp页面 FileUploadMany.jsp
<form action="upload.action" method="post" enctype="multipart/form-data">
文件标题:<input type="text" name="title" /><br>
选择第一个文件:<input type="file" name="upload" /><br>
选择第二个文件:<input type="file" name="upload" /><br>
选择第三个文件:<input type="file" name="upload" /><br>
<input value="上传" type="submit" />
</form>
三:struts.xml配置文件
<action name="upload" class="com.yysoft.uploadfile.FileUploadActionMany">
<interceptor-ref name="fileUpload"> --该拦截器来处理
<param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param> --为图片类型
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
<param name="savePath">/images</param>
<result name="input">/FileUploadMany.jsp</result>
<result>/uploadsuccessMany.jsp</result>
</action>
四:FileUploadActionMany.java action处理类 --一种方法,通过String数组来现实
package com.yysoft.uploadfile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadActionMany extends ActionSupport {
private String title;
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;
private static final int BUFFER_SIZE = 16 * 1024 ;
// 接受依赖注入的属性
private String savePath;
// 接受依赖注入的方法
public void setSavePath(String value)
{
this.savePath = value;
}
private String getSavePath() throws Exception
{
return ServletActionContext.getRequest().getRealPath(savePath);
}
public void setTitle(String title) {
this.title = title;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getTitle() {
return (this.title);
}
public File[] getUpload() {
return (this.upload);
}
public String[] getUploadContentType() {
return (this.uploadContentType);
}
public String[] getUploadFileName() {
return (this.uploadFileName);
}
public String execute() throws Exception{
File[] files = getUpload();
FileOutputStream fos=null;
FileInputStream fis=null;
System.out.println("files:"+files);
for (int i = 0 ; i < files.length ; i++){
// 以服务器的文件保存地址和原文件名建立上传文件输出流
System.out.println("getSavePath():"+getSavePath());
System.out.println("getUploadFileName().get(i):"+getUploadFileName()[i]);
System.out.println("files.get(i):"+files[i]);
System.out.println("uploadContentType[i]"+uploadContentType[i]);
fos= new FileOutputStream(getSavePath() + "//" + getUploadFileName()[i]);
fis= new FileInputStream(files[i]);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0){
fos.write(buffer , 0 , len);
}
fos.close();
fos=null;
fis.close();
fis=null;
}
return SUCCESS;
}
}
五LFileUploadActionMany1.java 另一种方法,action处理类,通过List集合来操作
package com.yysoft.uploadfile;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadActionMany1 extends ActionSupport {
private static final int BUFFER_SIZE = 16 * 1024 ;
private List <File> uploads = new ArrayList <File> ();
private List <String> uploadFileNames = new ArrayList <String>();
private List <String> uploadContentTypes = new ArrayList <String>();
public List<File> getUploads() {
return uploads;
}
public void setUploads(List<File> uploads) {
this.uploads = uploads;
}
public List<String> getUploadsFileName(){
return this.uploadFileNames;
}
public void setUploadsFileName(List<String> uploadFileName){
this.uploadFileNames = uploadFileName;
}
private static void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try {
in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);
}
} finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getExtention(String fileName) {
int pos = fileName.lastIndexOf( "." );
return fileName.substring(pos);
}
@Override
public String execute(){
System.out.println("uploads"+uploads.size());
System.out.println("uploadFileNames"+uploadFileNames.size());
for(int i=0;i<uploads.size();i++){
System.out.println("上传来了....................");
System.out.println("myFile======="+uploads.get(i));
System.out.println("fileName========="+uploadFileNames.get(i));
String imageFileName = new Date().getTime()+ i + getExtention(uploadFileNames.get(i));
System.out.println("imageFileName:"+imageFileName);
File imageFile = new File(ServletActionContext.getServletContext().getRealPath( "/images" ) + "/" + imageFileName);
System.out.println(uploads.get(i));
System.out.println(imageFile);
copy(uploads.get(i), imageFile);
}
return SUCCESS;
}
}
发表评论
-
jquery动态调用struts中的action
2011-08-25 14:02 885------------------------------- ... -
Queue队列实例
2011-08-25 13:57 914import java.util.Queue; impor ... -
struts2.0多文件上传(我自己用,好用,中文也可以上传)
2011-08-16 20:33 858这个页面是点一个添加就出一个浏览上传的 <%@ pag ... -
Struts2.0 文件上传与下载全解析
2011-08-16 20:31 773struts的上传封装的已经非常完美了,首先我们来看一下页面 ... -
jquery数据列表(需要json.jar)
2011-08-15 23:17 1244public Map getDsrPwdList(String ... -
copy文件
2011-08-15 22:23 722import java.io.BufferedInputStr ...
相关推荐
Struts2.0是一个强大的Java Web开发框架,它极大地简化了MVC(Model-View-Controller)应用的构建。在Struts2中,标签库是其核心特性之一,提供了丰富的标签来帮助开发者更加便捷地创建动态网页。本文将深入探讨...
5. `<s:checkbox>` 和 `<s:checkboxlist>`:用于创建复选框,单个复选框可以设置value和label,复选框列表则可以展示多个选项供用户选择。 6. `<s:radio>` 和 `<s:radiolist>`:类似地,提供单选按钮和一组单选按钮...
Struts 2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web...在"struts2.0常用标签.txt"文件中,你可能会找到更多关于这些标签的详细使用示例和解释,这将有助于进一步学习和掌握Struts 2.0 标签的用法。
3. `s:checkbox` 和 `s:radio`:用于创建复选框和单选按钮,可以进行数组或集合类型的绑定。 4. `s:submit`:定义一个提交按钮,可以触发特定的Action方法。 5. `s:select`:创建下拉列表,可以动态填充选项。 6. `s...
- **第二级缓存**:增强了性能,允许在多个会话间共享数据。 - **对JPA的支持**:Java Persistence API的实现,提供了一种标准的ORM接口。 - **增强的类型系统**:包括日期、时间、数组和集合的处理。 **3. Struts2...
总结来说,Struts2.0的`checkbox`标签是处理复选框输入的重要工具,它的正确使用涉及到Action类的设计、表单提交后的数据处理等多个方面。在开发过程中,我们需要关注值的绑定、默认状态的设定、以及与列表的结合...
Struts 2支持多语言环境,通过资源文件(如`messages.properties`)来实现文本的国际化。 10. **测试与调试**: Struts 2源码包含了大量的单元测试和集成测试,这些测试代码可以帮助我们了解框架的工作方式,同时...
### Struts2.0的标签库详解 #### 引言 Struts2是Apache软件基金会的一个开源项目,作为Struts1的升级版本,它在功能上更为强大且使用起来更加灵活方便。Struts2框架的核心设计思想是MVC(Model-View-Controller)...
### Struts2.0新标签的用法 ...以上介绍了Struts2.0中几个常用的新标签的使用方法,包括如何创建URL、复选框列表以及下拉列表框。这些标签的灵活运用可以大大提高Web应用程序的开发效率和用户体验。
### Struts2.0框架详解:标签与表达式语言 #### 概述 Struts2是基于MVC设计模式的Web应用框架,它提供了一系列强大的功能来简化Web应用程序的开发。Struts2不仅继承了Struts1的优点,还引入了许多新特性,如支持...
通过学习"jstl指导手册jsp2.0",开发者能够更好地理解和应用JSTL,从而提升Web应用的开发效率和代码质量。手册中应包含详细的标签介绍、实例演示以及在不同场景下的最佳实践,对于理解和掌握JSTL非常有帮助。
**OGNL (Object Graph Navigation Language)** 是一种强大的表达式语言,允许开发者通过简单的语法来读取和设置 Java 对象的属性值,调用对象的方法,遍历整个对象的结构图,并实现字段类型转换等功能。 OGNL 的...
<%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-----超链接,类似于html里的<a></a> 3. ...
* 精通 Struts2.0、Hibernate、Spring 框架,并熟练运用于项目之中 * 熟悉 MVC 开发模式 * 能熟练编写 Html、Jsp 页面,并灵活运用 Css、Jstl、Java Script、Ajax、JQuery、Ognl、XML 等技术 项目经验 * 参与了...
Struts框架是Java Web开发中的一个经典选择,它提供了一种模型-视图-控制器(MVC)架构来组织应用程序。在Struts中,eXtreme Components(简称EC)是一组强大的标签库,用于增强用户界面的交互性和美观性。这些标签...
### HP上机题—2011:云计算面试知识点概览 ...通过以上分析,可以看出HP上机题不仅考察了基础的编程技能,还覆盖了数据处理、算法设计、Web开发和数据库操作等多个方面,是对IT专业人员综合能力的一次全面检验。
通过这个文档,开发者可以了解到如何使用内置的类和方法,如集合框架、IO流、多线程等。掌握API的使用是成为熟练Java程序员的关键步骤。 Struts是一个开源的MVC(Model-View-Controller)框架,用于构建基于Java EE...
8. **同步实现**:Java中同步可以通过`synchronized`关键字、Lock接口(如ReentrantLock)、`wait()`和`notify()`方法来实现。同步机制保证了并发访问共享资源的安全。 9. **异常处理**:Java的异常机制用于捕获和...
- 实现复杂:状态模式需要定义多个类来表示不同的状态,这可能导致代码量增大,维护成本提高。 - 性能问题:频繁的状态转换可能会导致性能下降。 - 设计模式的滥用:在不恰当的情况下使用状态模式可能会使问题变...
Java正则表达式 批量上传--采集 (多个文件夹) The Agile Way hibernate mapping文件中的标记详解:关系标记 ANT 安装使用及build.xml文档模板 inverse和cascade在关联更新中的作用 hibernate ...