javaweb 多个文件下载_fileutils.copyfile(file, response.getoutputstream)-程序员宅基地

技术标签: 笔记  

javaweb多个文件下载

@WebServlet("/user")
public class UserController extends HttpServlet {

    private UserService userService = new UserServiceImpl();

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //post请求处理乱码问题
        request.setCharacterEncoding("utf-8");
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String m = request.getParameter("m");
        if("login".equals(m)){
            login(request, response);
        }else if("reg".equals(m)){
            reg(request, response);
        } else if("update".equals(m)){
            update(request, response);
        }else if("loginDo".equals(m)){
            loginDo(request, response);
        }else if("regDo".equals(m)){
            regDo(request, response);
        }else if("main".equals(m)){
            main(request, response);
        } else if("response".equals(m)){
            response(request, response);
        } else if("download".equals(m)){
            download(request, response);
        } else if("validate".equals(m)){
            validate(request, response);
        }else if("download2".equals(m)){
            down(request, response);
        }
        //确定下载的内容是啥
        String filename=request.getParameter("filename");
        String filePath=this.getServletContext().getRealPath("/files/"+filename);
        File file=new File(filePath);
        if (!file.exists()){
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().println("要下载的文件不存在");
            return;
        }
        //如果文件包含中文
        filename=URLEncoder.encode(filename,"UTF-8");
        //添加相应头
        response.setHeader("Content-Disposition","attachment="+filename);
        //执行文件下载
        FileUtils.copyFile(file,response.getOutputStream());
}

 前端

<%--
   login.jsp
  Created by IntelliJ IDEA.
  User: 12944
  Date: 2020/12/18
  Time: 9:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    <script>
        window.onload = function(){
            document.getElementById("validate").onclick = function (){
                this.src = "/webTest/user?m=validate&"+Math.random();
            }
        }
    </script>
</head>
<body>
<form action="/webTest/user" method="post">
    <input type="hidden" name="m" value="loginDo">
    <span>账号</span><input type="text" name="username"><br>
    <span>密码</span><input type="password" name="password"><br>
    <span>验证码</span><input type="text" name="validate"><img id="validate" src="/webTest/user?m=validate" alt=""><br>
    <input type="submit" value="登录"><br>
</form>

<a href="/webTest/user?m=reg">注册</a>
<a href="/webTest/user?m=download2"> 下载</a> //此处的的m=downloda2 对应的是 Servlet中的else if("download2".equals(m))

</body>
</html>

 

<%-- down.jsp 多个文件下载页面
  Created by IntelliJ IDEA.
  User: 12944
  Date: 2020/12/21
  Time: 21:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<span>文件1</span> <a href="/webTest/user?filename=20191126163808196.gif">点击下载</a>
<span>文件2</span> <a href="/webTest/user?filename=timg.jpg">点击下载</a>
<span>文件3</span> <a href="/w
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43970027/article/details/111501836

智能推荐

ACM题集以及各种总结大全!_acm题目-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏37次。 一.ACM入门 关于ACM 百度百科连接 杭州电子科技大学(hdu)ACM题目 连接 关于acm的帮助 连接 北京大学(poj)题目 &n._acm题目

为什么 UDP 头只有 8 个字节_udp头-程序员宅基地

文章浏览阅读2.2k次。​UDP 与 TCP 两种传输协议是 IP 协议簇的核心成员,1980 年发布的 RFC 768 定义了 UDP 协议,我们可以通过它在多个计算机连接构成的网络中传递数据。常见的 DNS 协议就可以使用 UDP 协议获取域名解析的结果,我们在这一系列前面的 为什么 DNS 使用 UDP 协议 中曾经讨论过 DNS 使用的传输协议。UDP 是能够传输数据的最简单的协议,它的协议首部(也称作协议头)只有 8 个字节,很多人,尤其是应届毕业生都能通过死机硬背暂时记住 UDP 协议头包含的内容,但是知道协议头的内容_udp头

@RequestMapping中的URL占位符详解_接口占位符怎么 写url-程序员宅基地

文章浏览阅读4.2k次。首先这是个SpringMVC里的Controller文件下的注解@RequestMapping()括号里面就是URL地址,本文专门分析一下占位符的意思和作用,首先占位符就是顾名思义就只是一个占位置的,大概是这样的:(”/{id}“),这个id没有任何意义,你甚至可以改成abc,你写出来的注释大概就是@RequestMapping(”/{id}“),让我们来看看整个方法@RequestMapping(”/{id}“)public String test5(@PathVariable String id){_接口占位符怎么 写url

HTML5&CSS3新特性_html5和css3新特性-程序员宅基地

文章浏览阅读7.9k次,点赞23次,收藏222次。一.HTML5新特性HTML5新特性针对于以前的不足,增加了一些新的标签,新的表单,新的表单属性等。1.新增语义化标签新增的带有语义化的标签二.CSS3新特性_html5和css3新特性

pytorch中torch.nn.Conv2d中的groups参数_torch depthwise conv group=-程序员宅基地

文章浏览阅读1.4k次。先来看官方的说明:groups = 1 时就是标准的卷积运算groups=2 时就是分组为2的组卷积分组后分两半进行卷积运算,6个卷积核分两组,最后将结果cat在一起groups = input_channels的情况是这样的当输入通道数等于输出通道数时,就是深度可分离卷积的depthwise conv,可查看mobilenet的论文理解该卷积令我迷惑的时输出通道数不..._torch depthwise conv group=

嵌入式软件学习,你知道如何将屏幕翻转180度吗?i.MX6ULL ---- ElfBoard 的ELF1 板卡_qt 屏幕旋转180度-程序员宅基地

文章浏览阅读94次。MatchDevicePath "/dev/input/event*" //设备节点。3.断电,连接屏幕,上电,等待系统启动完成,此时可以看到qt界面已经翻转180度。MatchProduct "goodix-ts" //设置当前触摸设备。Option "InvertY" "1" //翻转 Y 轴。Option "InvertX" "1" //翻转 X 轴。Option "Rotate" "UD" //显示旋转 180°。2.添加如下标红内容。_qt 屏幕旋转180度

随便推点

毕业设计项目 基于大数据的全国热门旅游景点数据分析与可视化-程序员宅基地

文章浏览阅读290次,点赞6次,收藏10次。 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是 **基于python的旅游数据分析可视化系统 **学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:4分创新点:4分选题指导, 项目分享:见文末。

解决UITableView在iOS7中UINavigationController里的顶部留白问题-程序员宅基地

文章浏览阅读37次。解决UITableView在iOS7中UINavigationController里的顶部留白问题出现问题时候的截图:源码:用到的类:UIViewController+TitleTextAttributes.h 与UIViewController+TitleTextAttributes.m//// UIViewController+TitleTex..._ios uinavigationcontroller 顶部开始

error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 Internal Server Error-程序员宅基地

文章浏览阅读5.6k次。$ git push -u origin masterEnumerating objects: 46, done.Counting objects: 100% (46/46), done.Delta compression using up to 8 threads.Compressing objects: 100% (44/44), done.error: RPC failed; HT..._error: rpc failed; http 500 curl 22 the requested url returned error: 500

电子货架标签-----Wifi ESL-程序员宅基地

文章浏览阅读70次。医疗类的项目,要使用wifi来控制标签的使用,放在医院的床头卡上面,把医疗床头卡升级成电子屏幕,因为医院系统的限制不可以接有线网路,只能使用wifi来通信,医院原本已有wifi网络的铺设,要求一年充一次电或是换一次电池,最终选择了锂电池充电版本。使用手机APP端进行操作的方法,屏幕采用ZBD屏幕,刷新响应速度更快,据说还可以支持低温环境,也是掉电不消失的屏幕用法。_wifi esl

升余弦滤波器与根升余弦滤波器_根升余弦和升余弦区别-程序员宅基地

文章浏览阅读4w次,点赞45次,收藏183次。1 升余弦滚降滤波器有啥用? 1, 升余弦滚降滤波器本质上只是一个低通滤波器,只不过它的滚降因子(rolloff effect)会对波形的幅度产生一定影响,一般是降低了波形的幅度并且低通,2.升余弦滚降信号用来消除码间串扰,实际实现时采用的方式是由发送端的基带成行滤波器和接收端的匹配滤波器两个环节公共实现。传输系统的传递函数二者的乘 积,所以每个环节均为平方根升余弦滚降滤波器。2 根升余弦_根升余弦和升余弦区别

Java程序设计——Swing UI 布局管理器(四)-程序员宅基地

文章浏览阅读2.8k次。目录 布局管理器4.1.FlowLayout4.2.BorderLayout4.3.GridLayout4.4.CardLayout4.5.BoxLayout4.6.NULL FlowLayout(); FlowLayout(int align); //align一般取值有:CENTER、LEFT、RIGHT FlowLayout(int align, int hga_swing ui