day05 Struts2文件上传和下载---防重复提交
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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?