博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2文件上传
阅读量:6394 次
发布时间:2019-06-23

本文共 3160 字,大约阅读时间需要 10 分钟。

Struts2上传文件
需要注意:Struts2需要运行在JRE1.5及以上版本
Struts2支持三种类型的上传组件
Struts2默认采用了apache commons-fileupload
1、创建Java Web项目
2、引入Struts2的依赖包,将依赖包拷贝到WEB-INF/lib下
* commons-logging-1.0.4.jar
* freemarker-2.3.15.jar
* ognl-2.7.3.jar
* struts2-core-2.1.8.1.jar
* xwork-core-2.1.6.jar
* commons-fileupload-1.2.1.jar
需要引入commons-fileupload相关依赖包
* commons-io-1.3.2.jar
* commons-fileupload-1.2.1.jar
3、在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDispatcher
    <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>
    
4、提供struts2配置文件struts.xml,放到src下
/success.jsp
5、建立JSP(index.jsp(上传文件页面)、success.jsp)

<%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%>
Insert title here
标题:
文件:

6、创建Struts2的Action,Struts2的action可以不用继承Struts2框架中的任何类
   也不用实现Struts2框架中的任何接口,所以Struts2的Action可以是一个POJO(纯粹的Java对象)
   所以Struts2的Action测试更容易
   
   Struts2缺省方法名称:public String execute() throws Exception;
   取得文件名称->>规则:输入域的名称+固定字符串FileName
取得文件数据->>规则:File 输入域的名称

取得内容类型->>规则:输入域的名称+固定字符串ContentType

package com.bjpowernode.struts2;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import com.opensymphony.xwork2.Action;public class UploadTestAction {		private String title;		//可以得到上传文件的名称	//规则:输入域的名称+固定字符串FileName	private String myFileFileName;		//取得文件数据	//规则:File 输入域的名称	private File myFile; 	//	//取得内容类型//	//规则:输入域的名称+固定字符串ContentType//	private String myFileContentType;		public String getMyFileFileName() {		return myFileFileName;	}	public void setMyFileFileName(String myFileFileName) {		this.myFileFileName = myFileFileName;	}	public String getTitle() {		return title;	}	public void setTitle(String title) {		this.title = title;	}	public File getMyFile() {		return myFile;	}	public void setMyFile(File myFile) {		this.myFile = myFile;	}//	public String getMyFileContentType() {//		return myFileContentType;//	}//////	public void setMyFileContentType(String myFileContentType) {//		this.myFileContentType = myFileContentType;//	}//		public String execute() throws Exception {		InputStream is = null;		OutputStream os = null;		try {			is = new BufferedInputStream(					new FileInputStream(myFile));			os = new BufferedOutputStream(					new FileOutputStream("c:\\" + myFileFileName));			byte[] buffer = new byte[1024];			int len = 0;			while ((len = is.read(buffer)) > 0) {				os.write(buffer, 0, len);			}		}finally {			if (is != null) {is.close();}			if (os != null) {os.close();}		}		return Action.SUCCESS;	}}
   
7、在Action中提供getter和setter方法,便于收集数据(这样收集数据的模式一般可以成为属性驱动模式)
8、将JSP和Action配置到struts.xml配置文件中
9、了解struts-default.xml配置文件,default.properties,Struts2的默认后缀为.action

转载于:https://www.cnblogs.com/reblue520/p/6239918.html

你可能感兴趣的文章
富文本编辑器TinyMCE
查看>>
01_vue实例_数据_方法
查看>>
“穿越”——正则表达式
查看>>
使用 find 命令实现高级排除需求
查看>>
一只年轻而倒悬的梨
查看>>
解决time_wait过多的问题
查看>>
技术转载:Jni学习一:了解Jni
查看>>
vue教程2-07 自定义指令
查看>>
python3调用阿里云短信服务
查看>>
Linux-百度云之AccleriderMini使用
查看>>
bootstrapTable refresh 方法使用简单举例
查看>>
2、TestNG+Maven+IDEA环境搭建
查看>>
maven插件运行过程中自动执行sql文件
查看>>
New UWP Community Toolkit - XAML Brushes
查看>>
C# ==、Equals、ReferenceEquals 区别与联系 (转载)
查看>>
layer弹出层的关闭问题
查看>>
LeetCode——3Sum &amp; 3Sum Closest
查看>>
netstat详解
查看>>
微信小程序 --- e.currentTarget.dataset.id 获取不到值
查看>>
Introducing stapbpf – SystemTap’s new BPF backend
查看>>