struts2文件上传
2015-09-17 15:50
393 查看
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下
5、建立JSP(index.jsp(上传文件页面)、success.jsp)
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="upload.action" method="post" enctype="multipart/form-data">
标题:<input type="text" name="title"><br>
文件:<input type="file" name="myFile"><br>
<input type="submit" value="上传">
</form>
</body>
</html>
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
需要注意: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下
<?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> <!--设置字符编码集,可以避免文件名乱码--> <constant name="struts.i18n.encoding" value="GB18030" /> <!--设置上传文件的最大允许大小--> <constant name="struts.multipart.maxSize" value="2097152000" /> <!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 会提供更加友好的提示信息 --> <constant name="struts.devMode" value="true"/> <!-- 需要继承struts-default包,这样就拥有的最基本的功能 --> <package name="upload-package" extends="struts-default"> <action name="upload" class="com.bjpowernode.struts2.UploadTestAction"> <result>/success.jsp</result> </action> </package> </struts>
5、建立JSP(index.jsp(上传文件页面)、success.jsp)
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="upload.action" method="post" enctype="multipart/form-data">
标题:<input type="text" name="title"><br>
文件:<input type="file" name="myFile"><br>
<input type="submit" value="上传">
</form>
</body>
</html>
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
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统