本文实例为大家分享了Struts2框架实现文件上传的方法,供大家参考,具体内容如下
struts2的配置过程
(1)在项目中加入jar包
(2)web.xml中filter(过滤器)的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<? xml version = "1.0" encoding = "UTF-8" ?> < web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> < display-name ></ display-name > < 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 > </ web-app > |
(3)struts.xml配置文件的编写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<? xml version = "1.0" encoding = "UTF-8" ?> < web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> < display-name ></ display-name > < 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 > </ web-app > |
(4)action类的编写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
package com.xmgc.sc.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.struts2.ServletActionContext; public class MyUpLoadAction { private String title; private File upload; //与form表单中的file文件类型的名字是一样的 private String uploadContentType; //前缀必须要是上面的upload private String uploadFileName; 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; } /* public String getSavePath() { //ServletContext cxt=ServletActionContext.getServletContext(); //String path=cxt.getRealPath("/"); //这个获取的path为:http://localhost:8080/sc //上传以后变为E:\software\apache-tomcat-6.0.45\webapps\sc return savePath; } public void setSavePath(String savePath) { //E:\software\apache-tomcat-6.0.45\webapps\sc/myupload this.savePath = ServletActionContext.getServletContext().getRealPath("/myupload"); }*/ public String execute() throws IOException{ System.out.println(title); //标题 System.out.println(uploadContentType); //准备上传的文件的文件类型 System.out.println(uploadFileName); //准备上传的文件的文件名,记住还有扩展名 System.out.println(upload); String realPath=ServletActionContext.getServletContext().getRealPath( "/" ); String path=realPath+ "myupload/" +uploadFileName; System.out.println(realPath); System.out.println(path); FileInputStream fis= new FileInputStream(upload); FileOutputStream fos= new FileOutputStream(path); byte [] bytes= new byte [ 1024 ]; //定义一个1024大小的字节数组 int len=- 1 ; //用来做标志位 while ((len=fis.read(bytes))> 0 ){ fos.write(bytes, 0 , len); } return null ; } } |
(5)JSP页面的编写
1
2
3
4
5
6
7
8
|
<%@ page contentType="text/html;charset=utf-8"%> <!-- enctype="multipart/form-data",这个是最重要的配置 --> < form action = "myupload.action" enctype = "multipart/form-data" method = "post" > 文件名:< input type = "text" name = "title" />< br /> 上传:< input type = "file" name = "upload" />< br /> < input type = "submit" value = "上传" /> </ form > |
经过这次总结,感觉struts2框架下的单文件的上传还是非常简单的,只要获取要存储在什么地方的地址,再通过输入输出流,写到这个地址中去就行了。绝大部分工作,struts2已经帮我们做好了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。