struts.xml配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.action.extension" value="action,do.org,,"></constant>
<constant name="struts.configuration.xml.reload" value="true"></constant>
<constant name="struts.multipart.maxSize" value="55000000"/>
<package name="default" namespace="/" extends="struts-default">
<!--可以为一个Action写多个方法进行对应,这样可以减少Action类的数量,但是无法减少配置的数量 -->
<!-- <action name="user_addInput" class="com.my.action.UserAction" method="addInput">
<result name="success">/WEB-INF/user/addInput.jsp</result>
</action>
<action name="user_add" class="com.my.action.UserAction" method="add">
<result name="success">/WEB-INF/user/add.jsp</result>
</action>
<action name="user_list" class="com.my.action.UserAction" method="list">
<result name="success">/WEB-INF/user/list.jsp</result>
</action> -->
<!-- 一下方式仅仅写一个Action,之后通过在调用的时候确定方法;
这个方法虽然减少了action的配置,但是依然需要增加大量的结果集进行配置 -->
<!-- <action name="user" class="com.my.action.UserAction">
<result name="addInput">/WEB-INF/user/addInput.jsp</result>
<result name="add">/WEB-INF/user/add.jsp</result>
<result name="list">/WEB-INF/user/list.jsp</result>
</action> -->
<!--基于通配符的方式({n}代表第n哥*) -->
<action name="*_*" class="com.my.action.{1}Action" method="{2}">
<result>/WEB-INF/{1}/{2}.jsp</result>
<result type="redirect" name="re_list">/{1}_list</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize">52428800</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
MessageAction.java:
package com.my.action;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.io.FileUtils;
import com.my.dao.MessageDao;
import com.my.model.Message;
import com.my.model.Point;
import com.opensymphony.xwork2.ModelDriven;
public class MessageAction implements ModelDriven<Message> {
private Message message;
private java.io.File[] photo;
private String[] photoFileName;
private String[] photoContentType;
public Message getMessage() {
return message;
}
public void setMessage(Message message) {
this.message = message;
}
public String[] getPhotoFileName() {
return photoFileName;
}
/**
* 上传的文件名会通过该方法设置
* @param photoFileName
*/
public void setPhotoFileName(String[] photoFileName) {
this.photoFileName = photoFileName;
}
public String[] getPhotoContentType() {
return photoContentType;
}
/**
* 设置文件类型;不论是文件名还是文件格式,所使用的格式是固定的[xxxFileName,xxxContentType]
* @param photoContentType
*/
public void setPhotoContentType(String[] photoContentType) {
this.photoContentType = photoContentType;
}
public java.io.File[] getPhoto() {
return photo;
}
public void setPhoto(java.io.File[] photo) {
this.photo = photo;
}
public String fileInput() {
return "success";
}
public String file() {
System.out.println(this);
// System.out.println(photo.getName());
// System.out.println(photoFileName+", "+photoContentType);
//copy the tmp file to the real file
try {
for(int i=0; i<photo.length; ++i) {
File file=photo[i];
String name="E:\\EclipseWorkspace\\uploadFiles\\"+photoFileName[i];
FileUtils.copyFile(file, new File(name));
}
} catch (IOException e) {
e.printStackTrace();
}
return "success";
}
@Override
public Message getModel() {
if(null==message) message=new Message();
return message;
}
}
fileInput.jsp:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>file Input</title>
</head>
<body>
<h1>Message fileInput</h1>
<form action="Message_file" method="post" enctype="multipart/form-data">
Title:<input type="text" name="title"/><br />
File:<input type="file" name="photo" /><br />
File:<input type="file" name="photo" /><br />
File:<input type="file" name="photo" /><br />
File:<input type="file" name="photo" /><br />
File:<input type="file" name="photo" /><br />
File:<input type="file" name="photo" /><br />
<input type="submit" value="提交"/>
</form>
<s:debug></s:debug>
</body>
</html>