web.xml <?xml version="1.0" encoding="UTF-8"?><web-app 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"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app> struts.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="struts2" extends="struts-default"> <action name="upload" class="com.xie.struts.upload.UploadAction"> <result name="success">/upload/result.jsp</result> </action> </package></struts> upload.jsp <%...@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><%...@ taglib prefix="s" uri="/struts-tags" %> <html><head><title>upload</title></head><body><s:form action="upload" enctype="multipart/form-data"> <s:textfield name="username" id="username" label="username"/> <s:file name="file" id="file" label="file"/> <s:submit/></s:form></body></html> result.jsp <%...@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><%...@ taglib prefix="s" uri="/struts-tags"%><html> <head> <title>result</title> </head> <body> <s:property value="username" /> <br> <s:property value="fileFileName" /> </body></html> UploadAction.java package com.xie.struts.upload;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport ...{ private String username; private File file; private String fileFileName; // 有属性file+Filename固定组成 private String fileContentType; // 有属性file+ContentType固定组成 public String getUsername() ...{ return username; } public void setUsername(String username) ...{ this.username = username; } public File getFile() ...{ return file; } public void setFile(File file) ...{ this.file = file; } public String getFileFileName() ...{ return fileFileName; } public void setFileFileName(String fileFileName) ...{ this.fileFileName = fileFileName; } public String getFileContentType() ...{ return fileContentType; } public void setFileContentType(String fileContentType) ...{ this.fileContentType = fileContentType; } @Override public String execute() throws Exception ...{ InputStream is = new FileInputStream(file); String root = ServletActionContext.getRequest().getRealPath("/temp"); File destFile = new File(root, this.getFileFileName()); OutputStream os = new FileOutputStream(destFile); byte[] buffer = new byte[400]; int length = 0; while ((length - is.read(buffer)) > 0) ...{ os.write(buffer, 0, length); } is.close(); os.close(); return SUCCESS; }}