黑马程序员技术交流社区

标题: Struts2实现单文件上传 [打印本页]

作者: HM代景康    时间: 2013-10-5 15:32
标题: Struts2实现单文件上传
用Struts2实现单文件上传我们先来看下如何配置吧!

  先配置一下web.xml

  [html]

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

  <web-app xmlns:xsi="www.w3.org/2001/XMLSchema-instance"

  xmlns="java.sun.com/xml/ns/javaee" xmlns:web="java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

  xsi:schemaLocation="java.sun.com/xml/ns/javaee java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

  id="WebApp_ID" version="2.5">

  <filter>

  <filter-name>struts2</filter-name>

  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

  <init-param>

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

  <param-value>struts-default.xml,struts-plugin.xml,/struts.xml</param-value>

  </init-param>

  </filter>

  <filter-mapping>

  <filter-name>struts2</filter-name>

  <url-pattern>/*</url-pattern>

  </filter-mapping>

  </web-app>

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

  <web-app xmlns:xsi="www.w3.org/2001/XMLSchema-instance"

  xmlns="java.sun.com/xml/ns/javaee" xmlns:web="java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

  xsi:schemaLocation="java.sun.com/xml/ns/javaee java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

  id="WebApp_ID" version="2.5">

  <filter>

  <filter-name>struts2</filter-name>

  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

  <init-param>

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

  <param-value>struts-default.xml,struts-plugin.xml,/struts.xml</param-value>

  </init-param>

  </filter>

  <filter-mapping>

  <filter-name>struts2</filter-name>

  <url-pattern>/*</url-pattern>

  </filter-mapping>

  </web-app>

  新建一个上传页面:upload.jsp

  [html

  <%@ page language="java" contentType="text/html; charset=UTF-8"

  pageEncoding="UTF-8"%>

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd">

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title></title>

  </head>

  <body>

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

  file:<input type="file" name="file" /><br>

  <input type="submit" value="submit"/>

  </form>

  </body>

  </html>

  <%@ page language="java" contentType="text/html; charset=UTF-8"

  pageEncoding="UTF-8"%>

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd">

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title></title>

  </head>

  <body>

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

  file:<input type="file" name="file" /><br>

  <input type="submit" value="submit"/>

  </form>

  </body>

  </html>

  UploadAction.java:

  [java]

  package com.struts2.action;

  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 static final long serialVersionUID = 1L;

  /** 文件 */

  private File file;

  /** 文件名 */

  private String fileFileName;

  /** 文件类型 */

  private String fileContentType;

  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 {

  String uploadPath = ServletActionContext.getServletContext()

  .getRealPath("/upload");

  InputStream is = new FileInputStream(file);

  OutputStream os = new FileOutputStream(new File(uploadPath,

  this.fileFileName));

  int length = 0;

  byte[] buffer = new byte[1024];

  while (-1 != (length = is.read(buffer))) {

  os.write(buffer, 0, length);

  }

is.close();

  os.close();

  return SUCCESS;

  }

  }

  package com.struts2.action;

  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 static final long serialVersionUID = 1L;

  /** 文件 */

  private File file;

  /** 文件名 */

  private String fileFileName;

  /** 文件类型 */

  private String fileContentType;

  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 {

  String uploadPath = ServletActionContext.getServletContext()

  .getRealPath("/upload");

  InputStream is = new FileInputStream(file);

  OutputStream os = new FileOutputStream(new File(uploadPath,

  this.fileFileName));

  int length = 0;

  byte[] buffer = new byte[1024];

  while (-1 != (length = is.read(buffer))) {

  os.write(buffer, 0, length);

  }

  is.close();

  os.close();

  return SUCCESS;

  }

  }

  上传成功后的页面uploadResult.jsp:

  [html]

  <%@ page language="java" contentType="text/html; charset=UTF-8"

  pageEncoding="UTF-8"%>

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd">

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title></title>

  </head>

  <body>

  upload successfully!

  </body>

  </html>

  <%@ page language="java" contentType="text/html; charset=UTF-8"

  pageEncoding="UTF-8"%>

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3.org/TR/html4/loose.dtd">

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title></title>

  </head>

  <body>

  upload successfully!

  </body>

  </html>

  最后配置一下struts.xml

  [html]

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

  <!DOCTYPE struts PUBLIC

  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

  "struts.apache.org/dtds/struts-2.0.dtd">

  <struts>

  <constant name="struts.i18n.encoding" value="UTF-8" />

  <constant name="struts.multipart.maxSize" value="104857600" />

  <package name="struts2" extends="struts-default">

  <!-- 单文件上传 -->

  <action name="upload" class="com.struts2.action.UploadAction">

  <result name="success">/uploadResult.jsp</result>

  </action>

  </package>

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

  <!DOCTYPE struts PUBLIC

  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

  "struts.apache.org/dtds/struts-2.0.dtd">

  <struts>

  <constant name="struts.i18n.encoding" value="UTF-8" />

  <constant name="struts.multipart.maxSize" value="104857600" />

  <package name="struts2" extends="struts-default">

  <!-- 单文件上传 -->

  <action name="upload" class="com.struts2.action.UploadAction">

  <result name="success">/uploadResult.jsp</result>

  </action>

  </package>






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2