• 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>

  • 相关阅读:
    docker 容器使用 systemctl 命令报错
    lxml 这个包和openpyxl 起冲突
    解决GPG error: The following signatures couldn't be verified because the public key is not available
    pyinstaller bug
    PyCharm使用技巧及常用快捷键
    python 软件目录规范
    Wpf canvas 绘图 像素对齐
    wpf ListView 隔行 (各行) 显示 不同 背景 颜色
    C# wpf 获取 数字 类型 所占字节数
    Mybatis-Plus QueryWrapper +sql自定义查询
  • 原文地址:https://www.cnblogs.com/fdxjava/p/10645747.html
Copyright © 2020-2023  润新知