struts2框架上传研究

来源:互联网 发布:数据统计分析步骤 编辑:程序博客网 时间:2024/06/06 21:44

 本人系菜鸟,今天刚看了一个ssh2的框架,感觉还是很神奇,里面action里的biz类居然不需要依赖注入,只需要名称一样就可以使用了,非常之神奇。

首先要攻克文件上传下载的难题

问题1: 一开始设置了一个form,传入后台发现死活调用不到我写的方法。一直显示"NoSuchMethodException"

解决办法:我错误的把biz当做action了。只要检查调用顺序即可。。。

问题2:采用了S标签来设置file上传下载,发现私有属性经常报nullpoint异常。

解决办法:缺少生成getter和setter,所以没办法代入。

参考地址:http://secyaher.blog.163.com/blog/static/3895577201036111648513/

 问题3:上传图片的时候,上传的文件对象getName()方法总是会出现.tmp后缀的名称。

解决办法:同时定义两个私有属性,如果文件你定义为myFile,那么私有属性就如下定义:

private String myFileContentType; //文件类型  
 private String myFileFileName; //文件名称  

注意红色区域要和你文件定义的名称一致!

 

总结一下struts2上传的步骤:

1、在需要上传页面加s标签声明:<%@ taglib prefix="s" uri= "/struts-tags" %>

2、在form里添加 <s:file name ="myFile" label ="Image File" /> 语句

3、修改form的method为post,且修改enctype为“multipart/form-data”

4、配置struts2的配置文件使得form提交的action可以被拦截。

5、后台定义三个变量,一个File类型,两个String类型,如下:

private File myFile;
 private String myFileContentType; //文件类型  
 private String myFileFileName; //文件名称  

6、在方法里就可以使用myFile做其他事了。上传时候源文件名为myFileFileName,再次强调,注意大小写。

 

(后续更新中......)