一:文件上传
文件上传我们一般都是在表单里面引用file就可以了,但是在struts2中文件的上传比我们以前写的简单很多也不需要在写输入输出流了,不过在struts2中想要实现文件上传第一步我们就需要在表单中加入enctype="multipart/form-data"这一属性,因为如果你不写它的话是运行不了的。
实现步骤:
1:如上所说要先在表单里面写入enctype="multipart/form-data"属性
2:在 action类里面私有化你表单里input里面的name值,然后在私有化name值加上ContentType和name值加上FileName,
如://得到文件属性
private File image;(这里的名字是你表单里面定义的name值)
//得到文件类型
private String imageContentType;
//得到文件名字
private String imageFileName;
3:封装属性(只要你封装了就可以得到值了)
4:存入服务器:
//获取服务器路径
String path=ServletActionContext.getServletContext().getRealPath("/images"); --这里是传入到你服务器的地址里
File uploadpath=new File(path+"/"+imageFileName);
//文件上传
FileUtils.copyFile(image, uploadpath);--这里就不需要在写输入输出流了,只要调用copy的方法它就会给你保存到你的路径里面去了
5:配置:
<!-- 文件上传最大值 -->
<constant name="struts.multipart.maxSize" value="104857600" />
<!-- 文件上传拦截器 -->
<interceptor-ref name="fileUpload"> <!-- 拦截类型 -->
<param name="allowedTypes">image/bmp,image/png,image/gif,
image/jpeg,image/pjpeg,image/x-png,application/msword,application/pdf,application/zip,application/x-zip- compressed</param>
<!-- 配置允许上传文件的大小(单位字节) -->
<!-- <param name="maximumSize">80000</param> -->
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
如果你想实现多文件上传的话只要在表单里面多谢几个input就可以啦,然后在action里面用数组接收后再遍历就行了
二:转换器Convert
转换器的话其实和我们以前用到的强转相似,它就是可以字符串和日期互转,字符串转成整行如22,33它会转成坐标行x=22,y=33
如何实现:
1:写一个类继承StrutsTypeConverter,重写两个方法(重写一个包)
2:配置-- 在action类里面新建一个文件,文件名为action类名+conversion.properties
3:在配置里面需要写你的action里面定义的属性名=你写的转换器类名