首页 > 代码库 > Struts2文件上传例子
Struts2文件上传例子
一、首先搭建Struts框架
第一步:引入Strusts2所必须的jar包
第二步:创建并配置web.xml文件,在其中配置Struts2的核心过滤器
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Upload</display-name> <!-- Struts2 的框架的核心过滤器的配置 start!! --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- Struts2 end !!--></web-app>
第三步:创建Struts.xml文件
二,编写代码
1.首先编写前台上传的表单界面:设置enctype="multipart/form-data"属性
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>简单的文件上传</title></head><body><s:fielderror/><s:form action="uploadPro" enctype="multipart/form-data"><s:textfield name="title" label="文件标题"/><br/><s:file name="upload" label="选择文件"/><s:submit value="http://www.mamicode.com/上传"/></s:form></body></html>
2.编写Action类来接收前端传过来的数据
package com.cong.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport { private static final long serialVersionUID = 1L; //封装文件标题请求参数的属性 private String title; //封装上传文件域的属性 private File upload; //封装上传文件类型的属性 private String uploadContentType; //封装上传文件名的属性 private String uploadFileName; //直接在struts.xml文件中配置值的方法 private String savePath; //返回文件保存位置 public String getSavePath() { return ServletActionContext.getServletContext() .getRealPath("/"+savePath); //设置上传文件的保存位置 } public void setSavePath(String savePath) { this.savePath = savePath; } //相应setter和getter方法 public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } @Override public String execute() throws Exception { //文件输入流获取上传的二进制 FileInputStream fis = new FileInputStream(getUpload()); //服务器的文件保存地址和源文件名建立上传文件输出流 FileOutputStream fos = new FileOutputStream(getSavePath()+ "\\"+getUploadFileName());byte[] buffer = new byte[1024]; //创建一个缓冲字节数组 int len = 0; while ((len = fis.read(buffer)) > 0){ //循环节读取的的字节数据写到服务器文件夹中 fos.write(buffer, 0, len); } return SUCCESS; } }
3、配置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.custom.il8n.resources" value="mess"></constant> <!-- 设置应用使用的解码集 --> <constant name="struts.il8n.encoding" value="UTF-8"></constant> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="lee" extends="struts-default"> <action name="uploadPro" class="com.cong.action.UploadAction"> <!-- 配置fileUpload拦截器 --> <interceptor-ref name="fileUpload"> <!-- 允许上传的文件类型 ,均为图片类型--> <param name="allowedTypes">image/jpeg,image/png,image/gif</param> <!-- 允许上传的文件大小 --> <param name="maximumSize">1024*1024</param> </interceptor-ref> <!-- 配置默认拦截器 ,切记!! --> <interceptor-ref name="defaultStack"/> <param name="savePath">/images</param> <!--g给savePath属性赋值--> <result name="input">index.jsp</result> <result>/WEB-INF/content/succ.jsp</result> </action> <action name="*"> <result>/WEB-INF/content/{1}.jsp</result> </action> </package></struts>
4.编写succ.jsp文件,上传成功后显示结果界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>上传成功</title></head> <body> 上传成功<br/> 文件标题:<s:property value="title"/><br/> <!--显示传过来的字符串数据--> 文件为:<img src="${pageContext.request.contextPath}/images/<s:property value="http://www.mamicode.com/+uploadFileName"/>"/><br/> <!--显示上传的图片--></body></html>
Struts2文件上传例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。