`

学习struts2的实例---文件上传

阅读更多
对于文件上传的工程的源代码  附有源代码,本人已经在本地调试通过,做个备份用。

FileUploadAction.java的源代码---实现文件上传的类
package zhenjw.fileupload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;

/**
 * @author zjw
 * @datetime Jan 4, 2009 11:02:50 PM
 */ 
public class FileUploadAction extends ActionSupport {

    private static final long serialVersionUID = 5156288255337069381L;

    private String contentType;
    private File upload;
    private String fileName;
    private String caption;

   //注意方法名的取名规则为 set+File类型的变量名的第一个字母大字后的变量名+FileName
    public String getUploadFileName() {
        return fileName;
    }
    public void setUploadFileName(String fileName) {
        this.fileName = fileName;
    }
    
    public String getUploadContentType() {
        return contentType;
    }
    public void setUploadContentType(String contentType) {
        this.contentType = contentType;
    }
    
    public File getUpload() {
        return upload;
    }
    public void setUpload(File upload) {
        this.upload = upload;
    }


    public String getCaption() {
        return caption;
    }
    public void setCaption(String caption) {
        this.caption = caption;
    }

    public String input() throws Exception {
        return SUCCESS;
    }

    public String upload() throws Exception  {
    	System.out.println();
    	System.out.println();
    	System.out.println();
    	String newfilename=ServletActionContext.getServletContext().getRealPath("/")+System.currentTimeMillis()+this.getExt();
    	this.save(newfilename);
    	
    	System.out.println(upload.getAbsolutePath());
    	System.out.println(upload.getName());
    	System.out.println(contentType);    	
    	System.out.println(fileName);
    	System.out.println();
    	
    	
        return SUCCESS;
    } 
    private String getExt()
    {
    	String result="";
    	if(this.fileName!=null)
    	{
    		int pos=this.fileName.lastIndexOf(".");
    		if(pos>0)
    		{
    		    result=this.fileName.substring(pos);
    		}
    	}
    	return result;
    }
    /** 保存到自已想要保存的地方
     */ 
    private void save(String newfilename) { 
       try { 
           int bytesum = 0; 
           int byteread = 0; 
            
           if (this.upload.exists()) { //文件存在时 
               InputStream inStream = new FileInputStream(this.upload); //读入原文件 
               FileOutputStream fs = new FileOutputStream(newfilename); 
               byte[] buffer = new byte[1024*5]; 
               int length; 
               while ( (byteread = inStream.read(buffer)) != -1) { 
                   bytesum += byteread; //字节数 文件大小 
                   //System.out.println(bytesum); 
                   fs.write(buffer, 0, byteread); 
               } 
               inStream.close(); 
           } 
       } 
       catch (Exception e) { 
           System.out.println("复制单个文件操作出错"); 
           e.printStackTrace(); 

       } 

   } 

}




FileUploadAction-validation.xml---------与FileUploadAction.java要放在同一个包下是FileUploadAction的验证文件

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
   <field name="upload">
		<field-validator type="fieldexpression">
			<param name="expression"><![CDATA[upload.length() >= 0]]></param>
			<message>File cannot be empty</message>
		</field-validator>
	</field>
	<!-- 可以与properties文件相互配合使用
   <field name="caption">
   		<field-validator type="requiredstring" >
       		 <message key="error.caption.required" />
      	</field-validator>
   </field>
    -->
   <field name="caption">
		<field-validator type="requiredstring">
			<message>Caption cannot be empty</message>
		</field-validator>
	</field>
</validators>




struts.xml---struts的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<!--struts2.0的配置文件  -->
<struts>
   <!--struts2.0默认的配置文件-->
   <include file="struts-default.xml"></include>
   <!--与文件上传相关的配置文件-->
   <include file="struts-fileupload.xml"></include>
</struts>




struts-fileupload.xml的源代码
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="fileupload" extends="struts-default" namespace="/fileupload">
        
        <action name="upload" class="zhenjw.fileupload.FileUploadAction" method="input">
			<result>upload.jsp</result>
		</action>

        <action name="doUpload" class="zhenjw.fileupload.FileUploadAction" method="upload">
        	<result name="input">upload.jsp</result>
			<result>upload-success.jsp</result>
		</action> 
    </package>
</struts>

web.xml---的源代码
<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_9" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	 <display-name>test</display-name> 
	 <listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	 <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>        
    </filter> 
	 <filter-mapping>
	   <filter-name>struts</filter-name>
	   <url-pattern>/*</url-pattern>
	 </filter-mapping>   
    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list> 
</web-app>



upload.jsp---的源代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>showcase upload</title>
  </head> 
  <body>
     <h1>FileUpLoad Exmaple</h1>
     <s:actionerror/> 
     <s:fielderror/>
     <!-- 表单 -->
     <s:form action="doUpload" enctype="multipart/form-data">
     	<s:file name="upload" label="File"></s:file>
     	<s:textfield name="caption" label="Caption"></s:textfield>
     	<s:submit></s:submit>
     </s:form>
  	
  </body>
</html> 


upload-success.jsp--文件的源代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>doFileUpload</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  <p>
  <ul>
    <li>ContentType:<s:property value="contentType"></s:property></li>
    <li>UploadFileName:<s:property value="uploadFileName"/></li>
    <li>File:<s:property value="upload" /></li>
    <li>Caption:<s:property value="caption" /></li>
   </ul> 
   
  </body>
</html>



index.jsp---的源代码
 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>首页</title>
   </head>
  
  <body>
   文件上传的实例:
    <a  href="fileupload/upload.action" target="_blank">FileUpload</a>
  </body>
</html>


分享到:
评论

相关推荐

    java struts2入门学习实例--使用struts2快速实现多个文件上传.doc

    ### Java Struts2入门学习实例——使用Struts2快速实现多个文件上传 #### 知识点一:配置Struts2中的错误提示信息 在开发基于Java的Web应用程序时,经常需要处理用户上传文件的需求。而Struts2框架因其灵活性与...

    struts-2.3.33-all.zip

    在"struts-2.3.33-all.zip"压缩包中,"apps"文件夹可能包含了用于演示或测试目的的应用程序实例,这些应用展示了如何在Struts 2框架中实现文件上传。在实际开发中,通常会有一个或多个Action类负责接收和处理文件...

    struts-2.5.12-all

    2. **配置文件**:Struts2的配置文件通常为struts.xml,用于定义Action的映射、结果类型、拦截器等。通过XML或注解方式配置,灵活性高。 3. **拦截器(Interceptors)**:拦截器是Struts2实现AOP(面向切面编程)的...

    struts2实例 自定义过滤器 文件上传下载 登录功能

    本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...

    struts2经典实例

    `struts2-mailreader-2.0.1.war` 是一个模拟邮件阅读器的实例,展示了Struts2处理表单数据、文件上传、用户认证和授权的使用。它可以帮助开发者理解如何在Struts2中实现用户交互和数据管理。 3. **Struts2 Portlet...

    Struts2属性文件详解

    该属性设定了Struts 2文件上传中整个请求内容的最大字节数限制,以防止过大的文件上传导致的问题。 #### struts.custom.properties 指定了Struts 2应用加载的用户自定义属性文件,自定义属性文件中的设置不会覆盖`...

    文件上传实例-JAVA

    这个实例代码提供了一个基本的文件上传解决方案,不依赖于特定的框架如Struts2的文件上传组件。以下是关于这个"文件上传实例-JAVA"的详细解释和相关知识点。 1. **文件上传的基本原理**: 文件上传通常涉及客户端...

    struts2文件上传实例

    1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`&lt;result&gt;`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...

    Struts2多文件上传下载实例

    在实际项目中,文件上传和下载功能是必不可少的,本实例将详细讲解如何在Struts2框架下实现单个文件及多个文件的上传与下载。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相关的Action配置,以便处理文件...

    struts2文件上传所需的全部jar包

    `struts-plugin.xml`中需要引入`struts2-upload-plugin-2.x.x.jar`,该插件提供了文件上传的配置和处理逻辑。 4. **配置文件**:在`struts.xml`或`struts-default.xml`中,需要配置`params interceptor`和`...

    STRUTS2站点,STRUTS2学习实例8

    这个"STRUTS2学习实例8"显然旨在深化对Struts2的理解和应用,通过具体的实战项目来教学。让我们深入探讨一下Struts2的关键概念和技术。 首先,Struts2的核心是Model-View-Controller(MVC)设计模式。MVC模式将应用...

    struts2文件上传下载实例

    在“struts2文件上传下载实例”中,我们将探讨如何在Struts2框架下实现文件的上传和下载功能,这对于许多Web应用程序来说是必不可少的特性。 首先,`pom.xml`文件是Maven项目对象模型的配置文件,它定义了项目的...

    struts-2.5.16-all框架

    同时,可以利用Struts 2的插件功能,轻松地添加如文件上传、日期时间处理等复杂功能。 总之,Struts 2.5.16-all框架提供了一套完整的解决方案,帮助Java开发者构建高效、可维护的Web应用。通过深入学习和实践,你将...

    struts2-apps.rar

    - 这个压缩包中的"apps"目录可能包含各种Struts2的示例应用,例如登录注册、CRUD操作、文件上传下载等。 - 通过分析这些示例,学习者可以了解如何实际配置和使用Struts2的各种特性。 8. **学习与实践**: - 分析...

    struts2上传下载实例

    这个"struts2_上传下载"实例可能还包括了错误处理、多文件上传、限制上传大小、文件类型检查等更复杂的情况。通过这些示例,开发者可以学习如何在实际项目中安全、高效地实现文件上传和下载功能。

    struts2实例入门教程

    `lib`目录中的关键JAR文件包括`struts2-core-2.1.6.jar`(核心库)、`freemarker-2.3.13.jar`(用于UI标签的模板引擎)、`commons-logging-1.0.4.jar`(日志处理)、`ognl-2.6.11.jar`(对象图导航语言)、`xwork-...

    struts2上传文件实例

    本实例将详细讲解如何在Struts2中实现文件上传。 首先,理解文件上传的基本概念。在Web应用中,文件上传涉及到客户端(浏览器)和服务器端的交互。用户选择本地文件后,这些文件的数据会被转换成二进制流,封装在...

    struts2实例和详细介绍

    - `commons-fileupload-1.2.1.jar`:文件上传组件,确保能处理用户上传的文件。 3. **Struts2配置文件** - **web.xml**:这是Web应用的部署描述符,用于配置Struts2的过滤器`StrutsPrepareAndExecuteFilter`。...

    struts2 文件上传实例

    在这个实例中,我们将深入探讨如何利用Struts2实现文件上传,并关注其配置细节。 首先,文件上传的核心类是`org.apache.struts2.servlet.multipart.FileUpload`,它是Struts2框架内置的多功能工具,可以处理HTTP...

Global site tag (gtag.js) - Google Analytics