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>

posted @ 2019-04-02 22:02  小白咚  阅读(217)  评论(0编辑  收藏  举报