`
liuyinhuan
  • 浏览: 27343 次
  • 性别: Icon_minigender_1
  • 来自: 广东中山
文章分类
社区版块
存档分类
最新评论

初识Struts(七)----Struts文件上传

阅读更多

<!----><!----><!----> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1318531534; mso-list-type:hybrid; mso-list-template-ids:1234214414 225203862 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-text:%1、; mso-level-tab-stop:18.0pt; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --> <!---->

 

 

采用 Struts 可以很方便的实现文件上传工作

 

<!---->1、 <!---->上传的页面, upload.jsp

   <li>测试struts文件上传</li><br>
   <form action="upload.do" method="post" enctype="multipart/form-data">
        文件名:<input type="text" name="title"><br>
        文件:<input type="file" name="myfile"><br>
        <input type="submit" value="上传">
   </form>

enctype="multipart/form-data" 就是把你表单的所有信息以流方式提交,页面上的所有信息已经都转换为了文件流,为的是能让服务端得到你上传的文件的文件流。 文件项的 type 必须为 file

 

2 、建立 ActionForm( 注意:必须要用 FormFile 来接收上传的文件 ) UploadActionForm.java

package cn.huan.struts;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

/**
 * 文件上传ActionForm
 * @author 刘银环
 *
 */
public class UploadActionForm extends ActionForm {
	//文件名
	private String title;
	
	//必须要用FormFile
	private FormFile myfile;

	/**
	 * @return the title
	 */
	public String getTitle() {
		return title;
	}

	/**
	 * @param title the title to set
	 */
	public void setTitle(String title) {
		this.title = title;
	}

	/**
	 * @return the myfile
	 */
	public FormFile getMyfile() {
		return myfile;
	}

	/**
	 * @param myfile the myfile to set
	 */
	public void setMyfile(FormFile myfile) {
		this.myfile = myfile;
	}

}

 

3 Action 中调用 FormFile 中的数据,采用流输出, UploadTestAction.java

package cn.huan.struts;

import java.io.FileOutputStream;

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;

/**
 * 文件上传Action
 * @author 刘银环
 *
 */
public class UploadTestAction extends Action {

	/* (non-Javadoc)
	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		UploadActionForm uaf = (UploadActionForm) form;
		String title = uaf.getTitle();
		FormFile myFile = uaf.getMyfile();
		
		FileOutputStream fos = new FileOutputStream("G:\\" + myFile.getFileName());
		fos.write(myFile.getFileData());
		fos.flush();
		fos.close();
		
		return mapping.findForward("success");
	}

}
 

4 、将 ActionForm Action 配到 struts-config.xml 文件中:

<struts-config>

      <form-beans>
        <form-bean name="uploadForm" type="cn.huan.struts.UploadActionForm"/>
      </form-beans>

      <action-mappings>  
         <action path="/upload"
                 type="cn.huan.struts.UploadTestAction"
                 name="uploadForm"
                 scope="request"
         >
           <forward name="success" path="/upload_success.jsp"/>
         </action>
      </action-mappings>
</struts-config>
 

 

5 、还可在 struts-config.xml 文件中配置上传的参数,如设置上传的文件大小最大为 50M

  <controller maxFileSize="50M"/>

 

到此, struts 文件上传工程建立完毕。

 

另:上面的 ActionForm 当然也可以采用 DynaActionForm 来完成,从而不用建 ActionForm 类, UploadTestAction 中相应代码改为:

		DynaActionForm daf = (DynaActionForm) form;
		String title = daf.getString("title");
		FormFile myFile = (FormFile) daf.get("myfile");
		System.out.println("Title:"+title);
		
		FileOutputStream fos = new FileOutputStream("G:\\" + myFile.getFileName());
		fos.write(myFile.getFileData());
		fos.flush();
		fos.close();
		
		return mapping.findForward("success");

struts-config.xml 文件中关于 ActionForm Action 的配置相应改为:

<struts-config>

      <form-beans>
        <!--  DynaActionForm for the upload -->
        <form-bean name="dynaForm2" type="org.apache.struts.action.DynaActionForm">
               <form-property name="title" type="java.lang.String"/>
               <form-property name="myfile" type="org.apache.struts.upload.FormFile"/>
        </form-bean>
      </form-beans>

      <action-mappings>
         <action path="/upload"
                 type="cn.huan.struts.UploadTestAction"
                 name="dynaForm2"
                 scope="request"
         >
           <forward name="success" path="/upload_success.jsp"/>
         </action>
      </action-mappings>
      
      <controller maxFileSize="50M"/>
</struts-config>

 。。。。。。。。。

1
0
分享到:
评论

相关推荐

    初识 Struts2 第一节

    本节我们将初识Struts2,了解其核心概念、工作原理以及如何开始使用。 **1. Struts2 概述** Struts2是Apache软件基金会下的开源项目,它是Struts1的升级版,弥补了Struts1在功能和灵活性上的不足。Struts2提供了...

    struts2学习笔记

    #### 二、初识Struts2配置文件 **1. web.xml文件** - 主要配置StrutsPrepareAndExecuteFilter,这是一个过滤器,负责初始化整个Struts框架并处理所有请求。 - 可以通过初始化参数来指定加载额外的XML配置文件,...

    struts2超详细笔记

    #### 二、初识struts2配置文件 struts2的配置主要包括以下几个文件: **(1)web.xml文件** - **StrutsPrepareAndExecuteFilter**:负责初始化整个struts框架,并处理所有请求。可以设置初始化参数,如指定加载...

    Struts2之模型驱动及分层架构初识案例struts004

    本案例“Struts2之模型驱动及分层架构初识”将深入探讨Struts2中的模型驱动模式和分层架构的概念及其应用。通过实践案例struts004,我们可以更直观地理解这些关键概念。 首先,让我们来了解**模型驱动**。在Struts2...

    Struts2之Servlet API及单元测试初识案例struts005

    在这个“Struts2之Servlet API及单元测试初识案例struts005”中,我们将探讨Struts2如何与Servlet API结合使用,以及如何进行单元测试。 Servlet API是Java EE平台的核心部分,用于构建动态Web应用程序。Struts2...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    5. **插件架构**:Struts2.0具有丰富的插件支持,如文件上传、日期时间选择等,这些插件可以轻松地扩展框架功能。 SSH集成步骤: 1. **Spring**:Spring提供依赖注入(DI)和面向切面编程(AOP),负责管理和协调...

    Struts2入门教程(全新完整版)

    3.初识struts2配置文件 4 (1).web.xml文件 4 (2).struts.xml文件 4 (3).struts.properties(参default.properties) 4 (4)struts-default.xml 4 (5)其它配置文件 4 4.让MyEclipse提示xml信息 4 5.如何...

    初识Java EE经典MVC框架Struts.rar

    这个压缩包“初识Java EE经典MVC框架Struts.rar”很可能是为了帮助初学者理解Struts框架的基本概念、架构以及如何在实际项目中应用。 首先,让我们来深入了解一下Struts框架的核心概念: 1. **模型(Model)**:模型...

    struts2初体验(附视频)

    本篇文章将带你初识Struts2,并通过实际操作来体验其工作原理和基本用法。提供的压缩包文件"teststruts2"可能包含了示例代码或配置文件,用于辅助学习。 首先,我们了解Struts2的核心概念: 1. **Action类**:在...

    Struts教程大全

    这个“Struts教程大全”压缩包包含了一系列的学习资源,旨在帮助开发者从初识到精通Struts技术和相关API。 首先,我们看到有两个版本的Struts API文档:Struts 1.1 API.chm和Struts 2.0 API.chm。这些CHM文件是...

    学习JSP的Struts的第一步:登录界面

    **Struts与JSP结合学习:初识登录界面** 在Web开发中,Struts框架是一个广泛应用的MVC(Model-View-Controller)架构,它帮助开发者有效地组织和管理应用程序的结构。而JSP(JavaServer Pages)则是一种用于创建...

    Struts2 in action中文版

    第2章 初识Struts 2 16 2.1 声明性架构 16 2.1.1 两种配置 16 2.1.2 声明架构的两种方式 17 2.1.3 智能默认值 20 2.2 简单的HelloWorld示例 20 2.2.1 部署示例应用程序 20 2.2.2 探索HelloWorld应用程序 24 2.3 使用...

    Struts2学习笔记

    4. **上传多个文件(二十八).txt**:这部分内容可能讲解了如何使用Struts2处理多文件上传,涉及到Action类的配置、接收文件的JavaBean以及前端表单的构造。 5. **设定上传文件类型和大小(二十九).txt**:在...

    深入浅出Struts2(附源码)

    第2章初识Struts 14 2.1 Struts的优点 14 2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例 26 2.5.1 ...

Global site tag (gtag.js) - Google Analytics