`

struts实现上传的例子

阅读更多
制作环境:
    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 中
 
分享到:
评论

相关推荐

    struts2完整例子

    8. **Struts2与Spring集成**:Struts2可以与Spring框架无缝集成,实现依赖注入,提高应用的可测试性。通过配置,Action类可以从Spring容器中获取服务实例。 9. **异常处理**:Struts2提供了一套完善的异常处理机制...

    struts文件上传例子

    通过学习和理解这个例子,开发者可以掌握在Struts应用中实现文件上传的基本步骤,并在此基础上进行扩展和优化,例如添加文件类型检查、大小限制、错误处理等功能。同时,这个例子也展示了MVC模式在实际开发中的应用...

    struts2上传例子

    在"struts2上传例子"中,我们将深入探讨Struts2如何处理文件上传功能,同时解决可能出现的编码问题以及实现中文国际化。 首先,让我们来看看文件上传的基本概念。在Web应用中,用户可能需要上传图片、文档等文件,...

    struts2入门例子

    实践这个例子,你可以了解到如何设置一个简单的Struts2应用,从而为进一步学习更复杂的特性如国际化、文件上传、异常处理等奠定基础。 总之,Struts2是一个强大的MVC框架,它的核心在于`struts.xml`配置文件,通过...

    struts文件上传例子及页面基本标签用法

    在这个例子中,我们将探讨如何在Struts中实现文件上传,并了解一些基本的页面标签用法。 首先,文件上传在Struts中通常涉及到两个主要部分:前端HTML表单和后端Action类。在前端,我们需要一个`&lt;input type="file"&gt;...

    JAVA struts2 上传简单例子

    用到的common.xxx等jar 请自行去下载~

    struts上传下载例子

    这个"struts上传下载例子"展示了如何在Struts中实现文件上传和下载的功能,这对于任何处理用户数据交互的Web应用都是必不可少的。下面我们将深入探讨相关知识点。 首先,我们来理解MVC模式。在MVC架构中,模型...

    struts2文件上传例子.rar

    在“struts2文件上传例子.rar”这个项目中,开发者已经使用Struts2.0框架实现了一个简单的文件上传功能。MyEclipse 6.6是一个集成开发环境,支持Java EE项目开发,可以直接导入该项目进行运行和调试。 首先,我们...

    struts1.2上传图片例子

    对于使用Struts框架进行开发的项目而言,掌握如何利用Struts实现文件上传是非常必要的技能之一。本文将通过一个具体的示例——基于Struts 1.2的图片上传应用——来详细介绍其实现过程。 #### 二、环境搭建与配置 ...

    struts2的实现文件上传的例子

    在这个“struts2的实现文件上传的例子”中,我们将深入探讨如何利用Struts2框架来实现文件上传功能,并将其与MySQL数据库集成。 首先,我们需要在Struts2项目中配置Action类,这个类将负责处理文件上传请求。在...

    struts2官方自带的四个例子

    Struts2是一个强大的Java web应用程序...此外,这也将有助于你进一步学习Struts2的高级特性和插件,如国际化、文件上传下载、Ajax支持等。不断实践和探索,你将能熟练掌握Struts2框架,为你的职业生涯添加强大的武器。

    Struts2.0实现文件上传例子

    在Struts2中,通过特定的拦截器和配置,可以方便地实现文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传支持。这通常涉及到添加`&lt;constant&gt;`标签来设置`struts.multipart.parser`属性,...

    struts2小例子

    在提供的"struts2小例子"中,你可能会发现各种应用场景,比如简单的CRUD操作、登录注册功能、文件上传下载、权限控制等。通过这些实例,你可以了解Struts2框架如何处理请求、如何传递数据、如何实现视图跳转,以及...

    struts1.2 简单文件上传例子

    在这个"struts1.2简单文件上传例子"中,我们将深入探讨Struts1.2框架如何处理文件上传功能。 首先,文件上传在Web应用中是一个常见的需求,例如用户可能需要上传个人头像、文档或者其他类型的数据。在Struts1.2中,...

    struts2实现单个图片上传

    在这个例子中,我们没有使用JavaScript,而是完全依赖于Struts2框架来处理图片上传。Struts2的拦截器负责解析请求中的文件数据,Action执行文件保存逻辑,最后通过配置好的结果页面反馈给用户。这是一个基础的图片...

    Struts1实现文件上传源码

    Struts1是一个经典的Java Web框架,它为开发者提供了一种结构化的MVC(Model-View-Controller)设计模式实现方式,极大地...通过研究这个例子,你可以更深入地理解Struts1的文件上传机制,并将其应用到自己的项目中。

    struts2 例子和包

    实例中可能包含简单的登录注册、文件上传下载、用户管理等功能,这些实例可以帮助开发者理解Struts2的工作流程,包括请求的处理、数据的绑定、视图的渲染等。 四、Struts2包 Struts2的包结构通常包括以下部分: - `...

    struts2实现多文件上传下载

    网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...

    struts2文件上传例子

    下面将详细介绍如何在Struts2中实现单文件和多文件的上传。 首先,为了进行文件上传,我们需要在Struts2的配置文件(通常为struts.xml)中启用文件上传拦截器。这可以通过添加以下配置实现: ```xml ...

Global site tag (gtag.js) - Google Analytics