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

智能推荐

flex布局(详解)-程序员宅基地

文章浏览阅读10w+次,点赞74次,收藏341次。flex布局详解_flex布局

Spring、SpringMVC和SpringBoot的关系_spring springboot springmvc的关系-程序员宅基地

文章浏览阅读9.2k次,点赞19次,收藏87次。一、概念1、Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。 2、SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。SpringMVC是一种web层mvc框架,用于替代servlet(处理|响应请求,获取表单参数,表单校_spring springboot springmvc的关系

MQ的优劣势及RabbitMQ相关概念_mqzk优点和缺点-程序员宅基地

文章浏览阅读2.1k次。MQ的优劣势及RabbitMQ相关概念_mqzk优点和缺点

Android知识体系总结2024(全方面覆盖Android知识结构,面试&进阶)-程序员宅基地

文章浏览阅读615次,点赞21次,收藏20次。对程序员来说,很多技术的学习都是“防御性”的。也就是说,我们是在为未来学习。我们学习新技术的目的,或是为了在新项目中应用,或仅仅是为了将来的面试。但不管怎样,一定不能“止步不前”,不能荒废掉。!文章以下内容会给出阿里与美团的面试题(答案+解析)、面试题库、Java核心知识点梳理等网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)

Tomcat详细介绍和使用总结_tomcat介绍-程序员宅基地

文章浏览阅读4.9k次,点赞10次,收藏43次。文章目录TomcatTomcat作为Servlet容器的基本功能Tomcat的组成结构Tomcat配置需要配置的环境变量Tomcat启动与关闭文件配置Oracle公司现在作为Java语言的开发和发布者,是当仁不让的标准接口的制定者。Oracle公司不仅制定了Web应用与Web服务器进行协作的一系列标准Java接口(统称为Java Servlet API),还对Web服务器发布以及运行Web应用的一些细节做了规约。Oracle公司把这一系列标准Java接口和规约统称为Servlet规范。Servlet规范_tomcat介绍

随便推点

建模你不能不知道这些网站能接单 | 建议收藏_建模接单-程序员宅基地

文章浏览阅读4.8k次。这个平台就好比我们国内的“猪八戒”,但是是以美元为货币单位来进行结算的,可以在平台上提供一些高质量的小型虚拟服务,这些服务费用是没有上限的,费用至少是5美刀。_建模接单

SurfaceView的基本使用(转)-程序员宅基地

文章浏览阅读44次。转自:https://www.cnblogs.com/zhangyingai/p/7087371.htmlSurfaceView的基本使用一、引入:Android提供了View来进行绘图处理,在大部分情况下,View都能满足绘图需求。大家都知道View是通过刷新来重绘视图,Android系统通过发出VSYNC信号来进行屏幕的重绘,刷新的间隔时间为16ms。如果在16ms内..._使用surfaceview导包

arcgis 瓦片图加载规则_arcgis server 瓦片图片读取规则-程序员宅基地

文章浏览阅读5.9k次。最近需要做地图离线的功能,要能下载指定区域的地图数据,_arcgis server 瓦片图片读取规则

扩展arcgis flex symbol 显示报表功能,显示饼状图和柱状图,非用infoSymbol实现_arcgis上面的柱状图怎么把数字显示出来-程序员宅基地

文章浏览阅读2.1k次。地图上显示报表我认为目前一般有几种方法(这个见仁见智),下面介绍三种(最后一种是绝对原创)。第一种是Esri公司的韩源萌提供的一个库,百度文库地址是http://wenku.baidu.com/view/674671cca1c7aa00b52acb39.html。不过他那个缺点很明显,饼图随着地图的放大缩小,饼图的大小越来越大。第二种方法是用arcgis server for flex_arcgis上面的柱状图怎么把数字显示出来

python图片内容长度识别_python 图片中的表格识别-程序员宅基地

文章浏览阅读841次。接到个任务需要将几万张带表格的图片转换成结构化数据。1. 大步骤最终算是完成任务,但是识别率上还有一点问题,人工再过一下,还是蛮快的。先说一下大的步骤:分割单元格。将图片中的表格全部定位出来,然后按单元格裁剪成一个个小图片,以便后续分析及操作;聚焦。其实就是将单元格中的文本区域裁剪出来,将多余的空白去掉;大图片的识别。对于大图片用图像相似性的算法(phash+汉明距离)做识别;小图片的识别。对于小..._python识别图片中无边框表格数据

springMVC 执行流程_springmvc启动和执行流程?-程序员宅基地

文章浏览阅读511次。具体可以查看项目启动函数,比如,run函数点进去就可以看到,或者通过启动日志可以查看_springmvc启动和执行流程?