day05
Struts2文件上传和下载
15.第一节 Struts2文件的上传
--Struts2 文件上传基于Struts2拦截器实现的;
--Struts2 文件上传使用的是fileupload组件;
--Form配置enctype="multipart/form-data";
--fileupload.jsp
<s:fielderror></s:fielderror> <form action="upload" method="post" enctype=""multipart/form-data"> 文件:<input type="file" name="java1234"/> <input type="submit" value="提交"/> </form>
--Struts2获取上传文件:name (name是文件表单的name);
--Struts2获取上传文件名:name+FileName;
--Struts2获取上传文件的类型:name+ContentType;
--FileUploadAction.java
private File java1234;//文件 private String java1234FileName;//文件名 private String java1234ContentType;//文件类型 --get set方法 public String execute() throws Exception{ System.out.println("文件名:"+java1234FileName); System.out.println("文件类型:"+java1234ContentType); String filePath="C:/"+java1234FileName; File saveFile=new File(filePath); FileUtile.copyFile(java1234,saveFile); return SUCCESS; }
--struts.xml
<action name="upload" class="com.java1234.action.FileUploadAction"> <result name="success">/success.jsp</result> <result name="input">/fileupload.jsp</result> </action>
第二节:配置文件的大小及类型
<param name="allowedType">image/bmp,image/x-png,image/gif,image/jpg,image/jpgel</param>
<param name="maximumSize">81101</param>
--struts.xml
<interceptor-ref name="fileUpload"> <param name="allowedType">image/bmp,image/x-png,image/gif,image/jpg,image/jpgel</param>//允许类型 <param name="maximumSize">81101</param>//大小 <interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> <s:fielderror></s:fielderror>
第三节 大文件上传
Struts2文件上传大小默认是2M;
<constant name="struts.multipart.maxSize" value="20000000"></constant>
16.第四节多文件上传
----定义成员变量为数组类型
--遍历文件
for(int i=0;i<java.length;i++){}
第五节Struts2文件下载
返回的是文件流(二进制)
<param name="contentDisposition">attachment;filename=$(fileName)</param>
-----Action.java
public InputStream getInputStream() throws Exception{ File file=new File("c:mingcheng。jpg"); this.fileName="赋值名字";//赋值名字不需要加后缀,会出乱码 //加后缀需要在getFileName处添加 fileName=new String(fileName.getBytes(),"ISO8859-1");抛出异常 return new FileInputStream(file); }
-------配置xml
<result type="stream"> <param name="contentDisposition">attachment;filename=$(fileName)</param> </result>
------jsp
<a href="download">文件下载</a>
17.Struts防重复提交
第一节:重复提交实例演示
由于延迟或其他原因,用户多次点击--造成重复提交
第二节:使用<s:token/>标签防重复提交---相当于拦截器--
---缺点:多次提交返回初始界面--优化为忽略重复提交
<s:token></s:token>:加在form里
使用token拦截器
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStrack"></interceptor-ref>
<result name="invalid.token">/student.jsp</result> :在struts.xml里配置,假如出现重复提交
则直接回到页面;
<s:actionerror/>:在页面上显示错误信息;
第三节:使用tokenSession拦截器 防重复提交
tokenSession拦截器直接无视重复提交的请求;
<interceptor-ref name="tokenSession"></interceptor-ref>
<interceptor-ref name="defaultStack"><interceptor-ref>