测试javaweb部署到云服务器(Servlet的文件下载功能)

简介: 上章回顾:介绍&测试的账户代码介绍:1 up.html 就是一个超级简单的首页2. check_up.java3.DOWN.java(文件下载源码)最后

上章回顾:


介绍&测试的账户


代码介绍:


1 up.html 就是一个超级简单的首页


2. check_up.java


3.DOWN.java(文件下载源码)


上章回顾:


本文核心代码用到的io流


链接


IO流入门1


IO流入门二


介绍&测试的账户


点击访问:测试下载功能的链接


用户名 final


密码 123


代码介绍:


1 up.html 就是一个超级简单的首页

如图


2e4753539c0e4133b11d0e618c65717b.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
<h1>这里是测试界面</h1>
<!--假设登陆都是成功的-->
<form action="/check_up" method="post">
    用户名:<input type="text" name="user"/><br/>
    密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password"><br/>
    <input type="submit" value="登陆">
</form>
</body>
</html>


2. check_up.java


就是检查密码和用户名是否配对的


package com.final_.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
 * @autor 笑霸fianl~
 * 欢迎访问GitHub:https://github.com/XBfinal
 * 欢迎访问Gitee:https://gitee.com/XBfianl
 * 欢迎访问CSDN:https://blog.csdn.net/weixin_52062043
 */
@WebServlet("/check_up")
public class check_up extends HttpServlet {
   @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取用户名和密码
       //假定用户名是final  密码是123
       String user=req.getParameter("user");
       String password = req.getParameter("password");
       //判断密码是否正确
       if("final".equals(user) && "123".equals(password)){
           //跳转去成功的页面
           //设置编码
           resp.setContentType("text/html;charset=utf-8");
           PrintWriter writer = resp.getWriter();
           writer.println("登陆成功。3秒后自动跳转");
           resp.setHeader("Refresh","3;/html/suc.html");
       }else{
           resp.setContentType("text/html;charset=utf-8");
           PrintWriter writer = resp.getWriter();
           writer.println("登陆失败。3秒后自动跳转");
           resp.setHeader("Refresh","3;/html/up.html");
       }
   }
}


3.DOWN.java(文件下载源码)


这里就是Servlet的核心代码


//获取要下载的文件的路径


//先获取当前工程的路径,然后在获取工程下的文件路径


 //获取要下载的文件的路径
        //先获取当前工程的路径,然后在获取工程下的文件路径
        String filePath=this.getServletConfig().getServletContext().getRealPath("/");
        String path=filePath+"1.png";


//设置下载的文件名//设置浏览器下载我们的资源


a75c988e708241dfacce651a6f600cfe.png


代码


 //设置下载的文件名
        String fileName = path.substring(path.lastIndexOf("\\") + 1);
        //设置浏览器下载我们的资源
        resp.setHeader("Content-disposition","attachment;filename="+fileName);//web下载文件的消息


//获取下载文件的流//关闭资源


  //获取下载文件的流
        FileInputStream filein = new FileInputStream(path);//根据路径
        //创建缓冲区
        int len=0;
        byte[] by=new byte[1024];
        //获得输出流对象
        ServletOutputStream outputStream = resp.getOutputStream();
        //写入缓冲区
        while((len=filein.read(by))>0){
            outputStream.write(by,0,len);
        }
        //关闭资源
        filein.close();
        outputStream.close();


全部代码


package com.final_.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
 * @autor 笑霸fianl~
 * 欢迎访问GitHub:https://github.com/XBfinal
 * 欢迎访问Gitee:https://gitee.com/XBfianl
 * 欢迎访问CSDN:https://blog.csdn.net/weixin_52062043
 * 在配置路径的时候,需要写一个相对路径。例如,先获得项目路径在获得文件路径 。
 * 这样不论项目放在什么路径下,访问的时候都会先去找项目路径,
 * 之后在项目路径下找到文件路径。
 */
@WebServlet("/DOWN")
public class DOWN extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取要下载的文件的路径
        //先获取当前工程的路径,然后在获取工程下的文件路径
        String filePath=this.getServletConfig().getServletContext().getRealPath("/");
        String path=filePath+"1.png";
        System.out.println(path+"\n"+filePath);
        //设置下载的文件名
        String fileName = path.substring(path.lastIndexOf("\\") + 1);
        //设置浏览器下载我们的资源
        resp.setHeader("Content-disposition","attachment;filename="+fileName);//web下载文件的消息
        //获取下载文件的流
        FileInputStream filein = new FileInputStream(path);//根据路径
        //创建缓冲区
        int len=0;
        byte[] by=new byte[1024];
        //获得输出流对象
        ServletOutputStream outputStream = resp.getOutputStream();
        //写入缓冲区
        while((len=filein.read(by))>0){
            outputStream.write(by,0,len);
        }
        filein.close();
        outputStream.close();
    }
}
相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
1361 5
|
5月前
|
Java Linux Apache
在CentOS服务器上编译并部署NiFi源码
部署Apache NiFi在CentOS上是一个涉及细节的过程,需要注意Java环境、源码编译、配置调整等多个方面。遵循上述步骤,可以在CentOS服务器上成功部署和配置Apache NiFi,从而高效地处理和分发数据。
237 17
|
6月前
|
弹性计算 安全 Linux
使用阿里云服务器安装Z-Blog博客网站流程,新手一键部署教程
本教程教你如何在阿里云99元服务器上,通过宝塔Linux面板一键部署Z-Blog博客。基于CentOS 7.9系统,从远程连接、安装宝塔面板、开放端口到部署Z-Blog全流程详解,操作简单,新手也能轻松搭建个人博客网站。
699 13
|
6月前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
545 0
监控 安全 Linux
277 0
|
7月前
|
监控 Java Linux
Apache NiFi项目的编译与部署于CentOS服务器
总而言之,Apache NiFi的编译和部署虽然涉及多个步骤,但这些操作步骤简明扼要,即使是不太熟悉Java或Maven的用户也能跟随指南完成。通过遵循上述步骤,您将能够在CentOS服务器上成功部署Apache NiFi,为您的数据流处理任务建立一个功能强大的平台。
498 16
|
7月前
|
资源调度 负载均衡 JavaScript
使用PM2工具部署Vue.js应用于服务器
以上步骤完成之后,你就成功利⽤ PM⼆工具将 Vuejs 应⽰程序部署至服 务 器,并且配合反向代理实现了高效稳定访问及负载均衡功能。
285 0