在Struts2中实现文件上传
Step1:将文件上传组件的jar文件复制到项目CLASSPATH路径下
将commons-fileupload-1.2.1.jar和commons-io-1.4.jar复制到项目的WEB-INF/lib目录下
Step2:编写文件上传页面
在WebRoot目录下新建upload.jsp,代码如下:
注意:文件上传需要使用method="post"和enctype="multipart/form-data"类型的表单
Step3:编写处理上传请求的action
在src目录下新建com.struts2.action包,在该包下新建FileUploadAction类,从ActionSupport类继承
Step4:在struts.xml配置FileUploadAction
在src目录下新建struts.xml文件,对FileUploadAction进行配置,配置代码如下:
注意:
1.将struts.i18n.encoding属性设置为GBK,可以解决中文乱码问题。
2.在配置文件中设置保存上传文件的目录。在action映射中,可以使用<param>元素来设置Action的属性值,这由staticParams拦截器提供支持,这个拦截器已将包含在defaultStack拦截器栈中
3.FileUploadInterceptor拦截器已经在struts-default.xml文件中定义(拦截器名为fileUpload),并且已经被包含在defaultStack拦截器中,所以你不需要再单独配置对它的引用了。
Step5:编写上传成功的页面
在WebRoot目录下新建success.jsp,它用于在上传文件成功后显示上传文件的相关信息。success.jsp的代码如下:
Step6:发布并测试:
在MyEclipse中发布项目,启动Tomcat服务器,在浏览器的地址栏中输入:
http://localhost:8080/fileUpload/upload.jsp并选择一个文件上传,
效果如下:
注意:1.别忘了Web.xml文件的配置了,代码如下:
2.加入开发struts2必须的类库(本人所加)
struts2-core-2.0.11.jar
xwork-2.0.4.jar
ognl-2.6.11.jar
freemarker-2.3.8.jar
commons-logging-1.0.4.jar
3.你在Action中对上传文件进行处理的时候,上传文件已经在服务器上了。FileUploadInterceptor拦截器在为Action准备上传文件之前,就已经调用底层的上传文件组件接受了客户端上传的文件,并将它保存到一个临时目录中,然后在为Action提供上传的各种信息。