jsp/struts1.2/struts2 中文件上传

刚刚做了三个文件上传的Demo
a.
jsp中简单利用Commons-fileupload组件实现
b.
struts1.2中实现
c.
sturts2中实现
现在把Code与大家分享一下..
:此为三个简单Demo,仅供练习用,并没有做太多上传限制
如有兴趣可以自行查看相关文档说明

.JSP环境中利用Commons-fileupload组件实现文件上传
1.
页面upload.jsp清单如下:

Java代码

  1. <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
  2. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
  3. <html>
  4. <head>
  5. <title>TheFileUploadDemo</title>
  6. </head>
  7. <body>
  8. <formaction="UploadFile"method="post"enctype="multipart/form-data">
  9. <p><inputtype="text"name="fileinfo"value="">文件介绍</p>
  10. <p><inputtype="file"name="myfile"value="浏览文件"></p>
  11. <p><inputtype="submit"value=""></p>
  12. </form>
  13. </body>
  14. </html>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>The FileUpload Demo</title>

</head>

<body>

<form action="UploadFile" method="post" enctype="multipart/form-data">

<p><input type="text" name="fileinfo" value="">文件介绍</p>

<p><input type="file" name="myfile" value="浏览文件"></p>

<p><input type="submit" value="上 传"></p>

</form>

</body>

</html>


注意:在上传表单中,既有普通文本域也有文件上传域

2.FileUplaodServlet.java
清单如下:

Java代码

  1. packageorg.chris.fileupload;
  2. importjava.io.File;
  3. importjava.io.IOException;
  4. importjava.util.Iterator;
  5. importjava.util.List;
  6. importjavax.servlet.ServletException;
  7. importjavax.servlet.http.*;
  8. importorg.apache.commons.fileupload.FileItem;
  9. importorg.apache.commons.fileupload.FileItemFactory;
  10. importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
  11. importorg.apache.commons.fileupload.servlet.ServletFileUpload;
  12. publicclassFileUplaodServletextendsHttpServlet{
  13. protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
  14. doPost(request,response);
  15. }
  16. protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
  17. request.setCharacterEncoding("UTF-8");
  18. //文件的上传部分
  19. booleanisMultipart=ServletFileUpload.isMultipartContent(request);
  20. if(isMultipart)
  21. {
  22. try{
  23. FileItemFactoryfactory=newDiskFileItemFactory();
  24. ServletFileUploadfileload=newServletFileUpload(factory);
  25. //设置最大文件尺寸,这里是4MB
  26. fileload.setSizeMax(4194304);
  27. List<FileItem>files=fileload.parseRequest(request);
  28. Iterator<FileItem>iterator=files.iterator();
  29. while(iterator.hasNext())
  30. {
  31. FileItemitem=iterator.next();
  32. if(item.isFormField())
  33. {
  34. Stringname=item.getFieldName();
  35. Stringvalue=item.getString();
  36. System.out.println("表单域名为:"+name+"值为:"+value);
  37. }else
  38. {
  39. //获得获得文件名,此文件名包括路径
  40. Stringfilename=item.getName();
  41. if(filename!=null)
  42. {
  43. Filefile=newFile(filename);
  44. //如果此文件存在
  45. if(file.exists()){
  46. Filefiletoserver=newFile("d://upload//",file.getName());
  47. item.write(filetoserver);
  48. System.out.println("文件"+filetoserver.getName()+"上传成功!!");
  49. }
  50. }
  51. }
  52. }
  53. }catch(Exceptione){
  54. System.out.println(e.getStackTrace());
  55. }
  56. }
  57. }
  58. }

package org.chris.fileupload;

import java.io.File;

import java.io.IOException;

import java.util.Iterator;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.*;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileItemFactory;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class FileUplaodServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");

//文件的上传部分

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

if(isMultipart)

{

try {

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload fileload = new ServletFileUpload(factory);

// 设置最大文件尺寸,这里是4MB

fileload.setSizeMax(4194304);

List<FileItem> files = fileload.parseRequest(request);

Iterator<FileItem> iterator = files.iterator();

while(iterator.hasNext())

{

FileItem item = iterator.next();

if(item.isFormField())

{

String name = item.getFieldName();

String value = item.getString();

System.out.println("表单域名为: " + name + "值为: " + value);

}else

{

//获得获得文件名,此文件名包括路径

String filename = item.getName();

if(filename != null)

{

File file = new File(filename);

//如果此文件存在

if(file.exists()){

File filetoserver = new File("d://upload//",file.getName());

item.write(filetoserver);

System.out.println("文件 " + filetoserver.getName() + " 上传成功!!");

}

}

}

}

} catch (Exception e) {

System.out.println(e.getStackTrace());

}

}

}

}


3.web.xml
清单如下:

Java代码

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appversion="2.4"
  3. xmlns="http://java.sun.com/xml/ns/j2ee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  7. <servlet>
  8. <servlet-name>UploadFileServlet</servlet-name>
  9. <servlet-class>
  10. org.chris.fileupload.FileUplaodServlet
  11. </servlet-class>
  12. </servlet>
  13. <servlet-mapping>
  14. <servlet-name>UploadFileServlet</servlet-name>
  15. <url-pattern>/UploadFile</url-pattern>
  16. </servlet-mapping>
  17. <welcome-file-list>
  18. <welcome-file>/Index.jsp</welcome-file>
  19. </welcome-file-list>
  20. </web-app>

<?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">

<servlet>

<servlet-name>UploadFileServlet</servlet-name>

<servlet-class>

org.chris.fileupload.FileUplaodServlet

</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>UploadFileServlet</servlet-name>

<url-pattern>/UploadFile</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>/Index.jsp</welcome-file>

</welcome-file-list>

</web-app>



.strut1.2中实现
1.
上传页面file.jsp 清单如下:

Java代码

  1. <%@pagelanguage="java"pageEncoding="ISO-8859-1"%>
  2. <%@tagliburi="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%>
  3. <%@tagliburi="http://jakarta.apache.org/struts/tags-html"prefix="html"%>
  4. <html>
  5. <head>
  6. <title>JSPforFileFormform</title>
  7. </head>
  8. <body>
  9. <html:formaction="/file"enctype="multipart/form-data">
  10. <html:fileproperty="file1"></html:file>
  11. <html:submit/><html:cancel/>
  12. </html:form>
  13. </body>
  14. </html>

<%@ page language="java" pageEncoding="ISO-8859-1"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

<html>

<head>

<title>JSP for FileForm form</title>

</head>

<body>

<html:form action="/file" enctype="multipart/form-data">

<html:file property="file1"></html:file>

<html:submit/><html:cancel/>

</html:form>

</body>

</html>



2.FileAtion.java
的清单如下:

Java代码

  1. /*
  2. *GeneratedbyMyEclipseStruts
  3. *Templatepath:templates/java/JavaClass.vtl
  4. */
  5. packageaction;
  6. importjava.io.*;
  7. importjavax.servlet.http.HttpServletRequest;
  8. importjavax.servlet.http.HttpServletResponse;
  9. importorg.apache.struts.action.Action;
  10. importorg.apache.struts.action.ActionForm;
  11. importorg.apache.struts.action.ActionForward;
  12. importorg.apache.struts.action.ActionMapping;
  13. importorg.apache.struts.upload.FormFile;
  14. importform.FileForm;
  15. /**
  16. *@authorChris
  17. *Creationdate:6-27-2008
  18. *
  19. *XDocletdefinition:
  20. *@struts.actionpath="/file"name="fileForm"input="/file.jsp"
  21. */
  22. publicclassFileActionextendsAction{
  23. /*
  24. *GeneratedMethods
  25. */
  26. /**
  27. *Methodexecute
  28. *@parammapping
  29. *@paramform
  30. *@paramrequest
  31. *@paramresponse
  32. *@returnActionForward
  33. */
  34. publicActionForwardexecute(ActionMappingmapping,ActionFormform,
  35. HttpServletRequestrequest,HttpServletResponseresponse){
  36. FileFormfileForm=(FileForm)form;
  37. FormFilefile1=fileForm.getFile1();
  38. if(file1!=null){
  39. //上传路径
  40. Stringdir=request.getSession(true).getServletContext().getRealPath("/upload");
  41. OutputStreamfos=null;
  42. try{
  43. fos=newFileOutputStream(dir+"/"+file1.getFileName());
  44. fos.write(file1.getFileData(),0,file1.getFileSize());
  45. fos.flush();
  46. }catch(Exceptione){
  47. //TODOAuto-generatedcatchblock
  48. e.printStackTrace();
  49. }finally{
  50. try{
  51. fos.close();
  52. }catch(Exceptione){}
  53. }
  54. }
  55. //页面跳转
  56. returnmapping.findForward("success");
  57. }
  58. }

/*

* Generated by MyEclipse Struts

* Template path: templates/java/JavaClass.vtl

*/

package action;

import java.io.*;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.upload.FormFile;

import form.FileForm;

/**

* @author Chris

* Creation date: 6-27-2008

*

* XDoclet definition:

* @struts.action path="/file" name="fileForm" input="/file.jsp"

*/

public class FileAction extends Action {

/*

* Generated Methods

*/

/**

* Method execute

* @param mapping

* @param form

* @param request

* @param response

* @return ActionForward

*/

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

FileForm fileForm = (FileForm) form;

FormFile file1=fileForm.getFile1();

if(file1!=null){

//上传路径

String dir=request.getSession(true).getServletContext().getRealPath("/upload");

OutputStream fos=null;

try {

fos=new FileOutputStream(dir+"/"+file1.getFileName());

fos.write(file1.getFileData(),0,file1.getFileSize());

fos.flush();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try{

fos.close();

}catch(Exception e){}

}

}

//页面跳转

return mapping.findForward("success");

}

}



3.FileForm.java
的清单如下:

Java代码

  1. packageform;
  2. importjavax.servlet.http.HttpServletRequest;
  3. importorg.apache.struts.action.ActionErrors;
  4. importorg.apache.struts.action.ActionForm;
  5. importorg.apache.struts.action.ActionMapping;
  6. importorg.apache.struts.upload.FormFile;
  7. /**
  8. *@authorChris
  9. *Creationdate:6-27-2008
  10. *
  11. *XDocletdefinition:
  12. *@struts.formname="fileForm"
  13. */
  14. publicclassFileFormextendsActionForm{
  15. /*
  16. *GeneratedMethods
  17. */
  18. privateFormFilefile1;
  19. /**
  20. *Methodvalidate
  21. *@parammapping
  22. *@paramrequest
  23. *@returnActionErrors
  24. */
  25. publicActionErrorsvalidate(ActionMappingmapping,
  26. HttpServletRequestrequest){
  27. //TODOAuto-generatedmethodstub
  28. returnnull;
  29. }
  30. /**
  31. *Methodreset
  32. *@parammapping
  33. *@paramrequest
  34. */
  35. publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){
  36. //TODOAuto-generatedmethodstub
  37. }
  38. publicFormFilegetFile1(){
  39. returnfile1;
  40. }
  41. publicvoidsetFile1(FormFilefile1){
  42. this.file1=file1;
  43. }
  44. }

package form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.upload.FormFile;

/**

* @author Chris

* Creation date: 6-27-2008

*

* XDoclet definition:

* @struts.form name="fileForm"

*/

public class FileForm extends ActionForm {

/*

* Generated Methods

*/

private FormFile file1;

/**

* Method validate

* @param mapping

* @param request

* @return ActionErrors

*/

public ActionErrors validate(ActionMapping mapping,

HttpServletRequest request) {

// TODO Auto-generated method stub

return null;

}

/**

* Method reset

* @param mapping

* @param request

*/

public void reset(ActionMapping mapping, HttpServletRequest request) {

// TODO Auto-generated method stub

}

public FormFile getFile1() {

return file1;

}

public void setFile1(FormFile file1) {

this.file1 = file1;

}

}


4.struts-config.xml
的清单如下:

Java代码

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.2//EN""http://struts.apache.org/dtds/struts-config_1_2.dtd">
  3. <struts-config>
  4. <data-sources/>
  5. <form-beans>
  6. <form-beanname="fileForm"type="form.FileForm"/>
  7. </form-beans>
  8. <global-exceptions/>
  9. <global-forwards/>
  10. <action-mappings>
  11. <action
  12. attribute="fileForm"
  13. input="/file.jsp"
  14. name="fileForm"
  15. path="/file"
  16. type="action.FileAction"
  17. validate="false">
  18. <forwardname="success"path="/file.jsp"></forward>
  19. </action>
  20. </action-mappings>
  21. <message-resourcesparameter="ApplicationResources"/>
  22. </struts-config>

<?xml version="1.0" encoding="UTF-8"?>

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

<struts-config>

<data-sources />

<form-beans >

<form-bean name="fileForm" type="form.FileForm" />

</form-beans>

<global-exceptions />

<global-forwards />

<action-mappings >

<action

attribute="fileForm"

input="/file.jsp"

name="fileForm"

path="/file"

type="action.FileAction"

validate="false">

<forward name="success" path="/file.jsp"></forward>

</action>

</action-mappings>

<message-resources parameter="ApplicationResources" />

</struts-config>


5.web.xml
代码清单如下:

Java代码

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.4"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  3. <servlet>
  4. <servlet-name>action</servlet-name>
  5. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  6. <init-param>
  7. <param-name>config</param-name>
  8. <param-value>/WEB-INF/struts-config.xml</param-value>
  9. </init-param>
  10. <init-param>
  11. <param-name>debug</param-name>
  12. <param-value>3</param-value>
  13. </init-param>
  14. <init-param>
  15. <param-name>detail</param-name>
  16. <param-value>3</param-value>
  17. </init-param>
  18. <load-on-startup>0</load-on-startup>
  19. </servlet>
  20. <servlet-mapping>
  21. <servlet-name>action</servlet-name>
  22. <url-pattern>*.do</url-pattern>
  23. </servlet-mapping>
  24. </web-app>

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<init-param>

<param-name>debug</param-name>

<param-value>3</param-value>

</init-param>

<init-param>

<param-name>detail</param-name>

<param-value>3</param-value>

</init-param>

<load-on-startup>0</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>



.struts2中实现(以图片上传为例)
1.FileUpload.jsp
代码清单如下:

Java代码

  1. <%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
  2. <%@taglibprefix="s"uri="/struts-tags"%>
  3. <html>
  4. <head>
  5. <title>TheFileUplaodDemoInStruts2</title>
  6. </head>
  7. <body>
  8. <s:formaction="fileUpload.action"method="POST"enctype="multipart/form-data">
  9. <s:filename="myFile"label="MyFile"></s:file>
  10. <s:textfieldname="caption"label="Caption"></s:textfield>
  11. <s:submitlabel="提交"></s:submit>
  12. </s:form>
  13. </body>
  14. </html>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

<head>

<title>The FileUplaodDemo In Struts2</title>

</head>

<body>

<s:form action="fileUpload.action" method="POST" enctype="multipart/form-data">

<s:file name="myFile" label="MyFile" ></s:file>

<s:textfield name="caption" label="Caption"></s:textfield>

<s:submit label="提交"></s:submit>

</s:form>

</body>

</html>



2.ShowUpload.jsp
的功能清单如下:

Java代码

  1. <%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
  2. <%@taglibprefix="s"uri="/struts-tags"%>
  3. <html>
  4. <head>
  5. <title>ShowUpload</title>
  6. </head>
  7. <body>
  8. <divstyle="padding:3px;border:solid1px#cccccc;text-align:center">
  9. <imgsrc='UploadImages/<s:propertyvalue="imageFileName"/>'/>
  10. <br/>
  11. <s:propertyvalue="caption"/>
  12. </div>
  13. </body>
  14. </html>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

<head>

<title>ShowUpload</title>

</head>

<body>

<div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" >

<img src ='UploadImages/<s:property value ="imageFileName"/> '/>

<br />

<s:property value ="caption"/>

</div >

</body>

</html>



3.FileUploadAction.java
的代码清单如下 :

Java代码

  1. packagecom.chris;
  2. importjava.io.*;
  3. importjava.util.Date;
  4. importorg.apache.struts2.ServletActionContext;
  5. importcom.opensymphony.xwork2.ActionSupport;
  6. publicclassFileUploadActionextendsActionSupport{
  7. privatestaticfinallongserialVersionUID=572146812454l;
  8. privatestaticfinalintBUFFER_SIZE=16*1024;
  9. //注意,文件上传时<s:file/>同时与myFilemyFileContentType,myFileFileName绑定
  10. //所以同时要提供myFileContentType,myFileFileNameset方法
  11. privateFilemyFile;//上传文件
  12. privateStringcontentType;//上传文件类型
  13. privateStringfileName;//上传文件名
  14. privateStringimageFileName;
  15. privateStringcaption;//文件说明,与页面属性绑定
  16. publicvoidsetMyFileContentType(StringcontentType){
  17. System.out.println("contentType:"+contentType);
  18. this.contentType=contentType;
  19. }
  20. publicvoidsetMyFileFileName(StringfileName){
  21. System.out.println("FileName:"+fileName);
  22. this.fileName=fileName;
  23. }
  24. publicvoidsetMyFile(FilemyFile){
  25. this.myFile=myFile;
  26. }
  27. publicStringgetImageFileName(){
  28. returnimageFileName;
  29. }
  30. publicStringgetCaption(){
  31. returncaption;
  32. }
  33. publicvoidsetCaption(Stringcaption){
  34. this.caption=caption;
  35. }
  36. privatestaticvoidcopy(Filesrc,Filedst){
  37. try{
  38. InputStreamin=null;
  39. OutputStreamout=null;
  40. try{
  41. in=newBufferedInputStream(newFileInputStream(src),BUFFER_SIZE);
  42. out=newBufferedOutputStream(newFileOutputStream(dst),BUFFER_SIZE);
  43. byte[]buffer=newbyte[BUFFER_SIZE];
  44. while(in.read(buffer)>0){
  45. out.write(buffer);
  46. }
  47. }finally{
  48. if(null!=in){
  49. in.close();
  50. }
  51. if(null!=out){
  52. out.close();
  53. }
  54. }
  55. }catch(Exceptione){
  56. e.printStackTrace();
  57. }
  58. }
  59. privatestaticStringgetExtention(StringfileName){
  60. intpos=fileName.lastIndexOf(".");
  61. returnfileName.substring(pos);
  62. }
  63. @Override
  64. publicStringexecute(){
  65. imageFileName=newDate().getTime()+getExtention(fileName);
  66. FileimageFile=newFile(ServletActionContext.getServletContext().getRealPath("/UploadImages")+"/"+imageFileName);
  67. copy(myFile,imageFile);
  68. returnSUCCESS;
  69. }
  70. }

package com.chris;

import java.io.*;

import java.util.Date;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport{

private static final long serialVersionUID = 572146812454l ;

private static final int BUFFER_SIZE = 16 * 1024 ;

//注意,文件上传时<s:file/>同时与myFilemyFileContentType,myFileFileName绑定

//所以同时要提供myFileContentType,myFileFileNameset方法

private File myFile; //上传文件

private String contentType;//上传文件类型

private String fileName; //上传文件名

private String imageFileName;

private String caption;//文件说明,与页面属性绑定

public void setMyFileContentType(String contentType) {

System.out.println("contentType : " + contentType);

this .contentType = contentType;

}

public void setMyFileFileName(String fileName) {

System.out.println("FileName : " + fileName);

this .fileName = fileName;

}

public void setMyFile(File myFile) {

this .myFile = myFile;

}

public String getImageFileName() {

return imageFileName;

}

public String getCaption() {

return caption;

}

public void setCaption(String caption) {

this .caption = caption;

}

private static void copy(File src, File dst) {

try {

InputStream in = null ;

OutputStream out = null ;

try {

in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);

out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);

byte [] buffer = new byte [BUFFER_SIZE];

while (in.read(buffer) > 0 ) {

out.write(buffer);

}

} finally {

if ( null != in) {

in.close();

}

if ( null != out) {

out.close();

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

private static String getExtention(String fileName) {

int pos = fileName.lastIndexOf(".");

return fileName.substring(pos);

}

@Override

public String execute() {

imageFileName = new Date().getTime() + getExtention(fileName);

File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/UploadImages" ) + "/" + imageFileName);

copy(myFile, imageFile);

return SUCCESS;

}

}


:此时仅为方便实现Action所以继承ActionSupport,Overrider execute()方法
struts2中任何一个POJO都可以作为Action

4.struts.xml
清单如下:

Java代码

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEstrutsPUBLIC
  3. "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <packagename="example"namespace="/"extends="struts-default">
  7. <actionname="fileUpload"class="com.chris.FileUploadAction">
  8. <interceptor-refname="fileUploadStack"/>
  9. <result>/ShowUpload.jsp</result>
  10. </action>
  11. </package>
  12. </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">

<struts>

<package name="example" namespace="/" extends="struts-default">

<action name="fileUpload" class="com.chris.FileUploadAction">

<interceptor-ref name="fileUploadStack"/>

<result>/ShowUpload.jsp</result>

</action>

</package>

</struts>


5.web.xml
清单如下:

Java代码

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appversion="2.4"
  3. xmlns="http://java.sun.com/xml/ns/j2ee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  7. <filter>
  8. <filter-name>struts-cleanup</filter-name>
  9. <filter-class>
  10. org.apache.struts2.dispatcher.ActionContextCleanUp
  11. </filter-class>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>struts-cleanup</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>
  17. <filter>
  18. <filter-name>struts2</filter-name>
  19. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  20. </filter>
  21. <filter-mapping>
  22. <filter-name>struts2</filter-name>
  23. <url-pattern>/*</url-pattern>
  24. </filter-mapping>
  25. <welcome-file-list>
  26. <welcome-file>Index.jsp</welcome-file>
  27. </welcome-file-list>
  28. </web-app>

你可能感兴趣的:(struts2)