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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值