Struts1.x 实现文件上传

来源:互联网 发布:js数据是否为json格式 编辑:程序博客网 时间:2024/05/21 07:54
在Struts1中,提供了较好的文件上传方法。
下面我通过一个简单的例子实现一个简单的文件上传功能:
A.通过MyEclipse新建一个java Web Project,命名为UpLoadWeb
B.为Web工程导入Struts1包(具体怎么操作可以GOOGLE)。
C.新建文件上传Action,UploadAction。
D.新建文件上传Form,UploadForm
E.将UploadAction和UploadForm配置到struts-config.xml中这样的话,整个工程的结构就已经搭建完成,接下来就是实现文件上传的功能了。

F.新建一个类命名为UploadFileClass,实现文件输出的功能。

package com.yourcompany.upload;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import org.apache.struts.upload.FormFile;public class UploadFileClass {// 方法用于上传文件到远程服务器上public UploadFileClass(FormFile formFile, String fileName,String toServerPath) throws Exception {if (formFile != null && toServerPath != null) {InputStream inputStream = formFile.getInputStream();OutputStream outputStream = new FileOutputStream(toServerPath + "/"+ fileName);int bytesRead = 0;byte[] bytesBuf = new byte[formFile.getFileSize()];while ((bytesRead = inputStream.read(bytesBuf)) != -1) {outputStream.write(bytesBuf, 0, bytesRead);}outputStream.write(bytesBuf);outputStream.close();inputStream.close();} else {throw new Exception("This error caused by some parameters is null!");}}}


G.在UploadAction中添加代码如下,调用UploadFileClass中的上传方法:


package com.yourcompany.struts.action;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 com.yourcompany.struts.form.UploadForm;import com.yourcompany.upload.UploadFileClass;public class UploadAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {UploadForm uploadForm = (UploadForm) form;FormFile formFile = uploadForm.getUploadFile();try {String fileName = formFile.getFileName();System.out.println(fileName);String toServerPath = request.getRealPath("/");UploadFileClass uploadFileClass = new UploadFileClass(formFile,fileName, toServerPath);return mapping.findForward("success");} catch (Exception e) {e.printStackTrace();return mapping.findForward("failed");}}}



H.为表单添加验证功能。


package com.yourcompany.struts.form;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionError;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMapping;import org.apache.struts.upload.FormFile;public class UploadForm extends ActionForm {private FormFile uploadFile;public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {ActionErrors errors = new ActionErrors();String fileName = uploadFile.getFileName();if (fileName == null || "".equals(fileName)) {errors.add("uploadFile", new ActionError("noUserFile"));}return errors;}public void reset(ActionMapping mapping, HttpServletRequest request) {}public FormFile getUploadFile() {return uploadFile;}public void setUploadFile(FormFile uploadFile) {this.uploadFile = uploadFile;}}

I.主要页面upload.jsp


<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%><html><head><title>JSP for UploadForm form</title></head><body><html:form action="/upload" enctype="multipart/form-data">uploadFile : <html:file property="uploadFile" /><font color="#FF00"><html:errors property="uploadFile" /></font><br /><html:submit /><html:cancel /></html:form></body></html>

J.上传成功页面

<%@ 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>My JSP 'index.jsp' starting page</title></head><body>文件上传成功!</body></html>

K.上传失败页面

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%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>    <title>My JSP 'failed.jsp' starting page</title>  </head>    <body>  文件上传失败!  </body></html>

L.struts-config.xml配置信息

<?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="uploadForm" type="com.yourcompany.struts.form.UploadForm" /></form-beans><global-exceptions /><global-forwards /><action-mappings><action attribute="uploadForm" input="/upload.jsp" name="uploadForm"path="/upload" scope="request" type="com.yourcompany.struts.action.UploadAction"><set-property property="cancellable" value="true" /><forward name="success" path="/success.jsp"></forward><forward name="failed" path="/failed.jsp"></forward></action></action-mappings><message-resources parameter="com.yourcompany.struts.ApplicationResources" /></struts-config>

M.web.xml配置信息

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.5"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name /><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><welcome-file-list><welcome-file>upload.jsp</welcome-file></welcome-file-list></web-app>

================================OVER============================

工程源码请到地址:

http://download.csdn.net/detail/captaingan/4109944

下载

原创粉丝点击