`

学习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>


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics