制作环境:
Eclipse3.1.1 、 MyEclipse4.1 、 Tomcat5.5.x
步骤:
新建工程 upload
添加 Struts 框架,使用 Struts1.2 版本
新建 一个 jsp + action 这里将使用动态的 ActionForm
在新建表单对像时使用一个文件名和一个文件对像进行提交
修改动态 From 的类型为 org.apache.struts.upload.FormFile
< form-bean name = "upfileForm" type = "org.apache.struts.action.DynaActionForm" >
< form-property name = "filename" type = "java.lang.String" />
< form-property name = "filedata" type = "java.lang.String" />
</ form-bean >
改为
< form-bean name = "upfileForm" type = "org.apache.struts.action.DynaActionForm" >
< form-property name = "filename" type = "java.lang.String" />
< form-property name = "filedata" type = " org.apache.struts.upload.FormFile " />
</ form-bean >
修改 upfile.jsp 文件,在<Form> 中加入 enctype = "multipart/form-data" ,这样才可以提交二进制类型的文件
修改文件第一行代码
<%@ page language = "java" %>
改为
<%@ page contentType = "text/html;charset=UTF-8" language = "java" %>
这里将使用 UTF-8 的编码格式
修改 upfileAction.java 文件,修改后的内容如下:
package com.test.struts.action;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.upload.FormFile;
/**
* MyEclipse Struts
* Creation date: 07-05-2006
*
* XDoclet definition:
* @struts.action path="/upfile" name="upfileForm" input="/upfile.jsp" scope="request" validate="true"
*/
public class UpfileAction extends Action {
// --------------------------------------------------------- Instance Variables
// --------------------------------------------------------- Methods
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaActionForm upfileForm = (DynaActionForm) form;
// 声明并获取对像
String filename = upfileForm.getString("filename");
// 输出文件名
System.out.println(filename);
FormFile filedata = (FormFile) upfileForm.get("filedata");
// 取当前系统路径
String filePath = request.getRealPath("/");
try {
// 转换文件为数据流
InputStream stream = filedata.getInputStream();
// 建立输出流
OutputStream bos = new FileOutputStream(filePath + "/" +
filedata.getFileName());
// 将文件写入网站根目录下
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
stream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 返回到提交页面
return mapping.getInputForward();
}
}
现在可以进行测试了
这时将会发现,提交的文件及文件名称都是乱码!下面将解决乱码
增加一个过滤器,过滤器的代码请查看包中的具体文件
在 web.xml 文件中加入以下配置内容,过滤器的编码设置为 UTF-8
< filter >
< filter-name > Set Character Encoding </ filter-name >
< filter-class > com.test.SetCharacterEncodingFilter </ filter-class >
< init-param >
< param-name > encoding </ param-name >
< param-value > UTF-8 </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > Set Character Encoding </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< filter-mapping >
< filter-name > Set Character Encoding </ filter-name >
< servlet-name > action </ servlet-name >
</ filter-mapping >
配置 Tomcat 的 server.xml 文件,文件在 Tomcat_Home/conf 中
分享到:
相关推荐
8. **Struts2与Spring集成**:Struts2可以与Spring框架无缝集成,实现依赖注入,提高应用的可测试性。通过配置,Action类可以从Spring容器中获取服务实例。 9. **异常处理**:Struts2提供了一套完善的异常处理机制...
通过学习和理解这个例子,开发者可以掌握在Struts应用中实现文件上传的基本步骤,并在此基础上进行扩展和优化,例如添加文件类型检查、大小限制、错误处理等功能。同时,这个例子也展示了MVC模式在实际开发中的应用...
在"struts2上传例子"中,我们将深入探讨Struts2如何处理文件上传功能,同时解决可能出现的编码问题以及实现中文国际化。 首先,让我们来看看文件上传的基本概念。在Web应用中,用户可能需要上传图片、文档等文件,...
实践这个例子,你可以了解到如何设置一个简单的Struts2应用,从而为进一步学习更复杂的特性如国际化、文件上传、异常处理等奠定基础。 总之,Struts2是一个强大的MVC框架,它的核心在于`struts.xml`配置文件,通过...
在这个例子中,我们将探讨如何在Struts中实现文件上传,并了解一些基本的页面标签用法。 首先,文件上传在Struts中通常涉及到两个主要部分:前端HTML表单和后端Action类。在前端,我们需要一个`<input type="file">...
用到的common.xxx等jar 请自行去下载~
这个"struts上传下载例子"展示了如何在Struts中实现文件上传和下载的功能,这对于任何处理用户数据交互的Web应用都是必不可少的。下面我们将深入探讨相关知识点。 首先,我们来理解MVC模式。在MVC架构中,模型...
在“struts2文件上传例子.rar”这个项目中,开发者已经使用Struts2.0框架实现了一个简单的文件上传功能。MyEclipse 6.6是一个集成开发环境,支持Java EE项目开发,可以直接导入该项目进行运行和调试。 首先,我们...
对于使用Struts框架进行开发的项目而言,掌握如何利用Struts实现文件上传是非常必要的技能之一。本文将通过一个具体的示例——基于Struts 1.2的图片上传应用——来详细介绍其实现过程。 #### 二、环境搭建与配置 ...
在这个“struts2的实现文件上传的例子”中,我们将深入探讨如何利用Struts2框架来实现文件上传功能,并将其与MySQL数据库集成。 首先,我们需要在Struts2项目中配置Action类,这个类将负责处理文件上传请求。在...
Struts2是一个强大的Java web应用程序...此外,这也将有助于你进一步学习Struts2的高级特性和插件,如国际化、文件上传下载、Ajax支持等。不断实践和探索,你将能熟练掌握Struts2框架,为你的职业生涯添加强大的武器。
在Struts2中,通过特定的拦截器和配置,可以方便地实现文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传支持。这通常涉及到添加`<constant>`标签来设置`struts.multipart.parser`属性,...
在提供的"struts2小例子"中,你可能会发现各种应用场景,比如简单的CRUD操作、登录注册功能、文件上传下载、权限控制等。通过这些实例,你可以了解Struts2框架如何处理请求、如何传递数据、如何实现视图跳转,以及...
在这个"struts1.2简单文件上传例子"中,我们将深入探讨Struts1.2框架如何处理文件上传功能。 首先,文件上传在Web应用中是一个常见的需求,例如用户可能需要上传个人头像、文档或者其他类型的数据。在Struts1.2中,...
在这个例子中,我们没有使用JavaScript,而是完全依赖于Struts2框架来处理图片上传。Struts2的拦截器负责解析请求中的文件数据,Action执行文件保存逻辑,最后通过配置好的结果页面反馈给用户。这是一个基础的图片...
Struts1是一个经典的Java Web框架,它为开发者提供了一种结构化的MVC(Model-View-Controller)设计模式实现方式,极大地...通过研究这个例子,你可以更深入地理解Struts1的文件上传机制,并将其应用到自己的项目中。
实例中可能包含简单的登录注册、文件上传下载、用户管理等功能,这些实例可以帮助开发者理解Struts2的工作流程,包括请求的处理、数据的绑定、视图的渲染等。 四、Struts2包 Struts2的包结构通常包括以下部分: - `...
网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...
下面将详细介绍如何在Struts2中实现单文件和多文件的上传。 首先,为了进行文件上传,我们需要在Struts2的配置文件(通常为struts.xml)中启用文件上传拦截器。这可以通过添加以下配置实现: ```xml ...