测试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();
    }
}
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
并行计算 前端开发 异构计算
告别服务器繁忙,云上部署DeepSeek
本文以 DeepSeek-R1-Distill-Qwen-32B-FP8 为例,向您介绍如何在GPU实例上使用容器来部署量化的 DeepSeek-R1 蒸馏模型。
|
7天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
9天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
9天前
|
机器学习/深度学习 弹性计算 人工智能
在阿里云ECS上一键部署DeepSeek-R1
Open WebUI 和 Ollama 的联合,通过集成 DeepSeek-R1 的强大功能,赋予每一位用户使用尖端 AI 技术的能力,使得复杂的 AI 技术不再是遥不可及的梦想。无论是研究人员、开发者,还是企业用户,您都能从这一创新中获得新的灵感和增长点。本文介绍通过计算巢一键部署和使用DeepSeek-R1。
在阿里云ECS上一键部署DeepSeek-R1
|
24天前
|
安全 前端开发 Go
轻松部署翼龙面板社区版:您的游戏服务器管理新体验
翼龙面板(Pterodactyl)社区版正是为此而生,它通过强大的开源技术栈(PHP、React 和 Go)和可靠的安全设计,让游戏服务器管理变得简单而高效。本文将带您通过阿里云计算巢快速部署翼龙面板社区版,尽享流畅的管理体验。
轻松部署翼龙面板社区版:您的游戏服务器管理新体验
|
27天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
203 17
Spring Boot 两种部署到服务器的方式
|
6天前
|
机器学习/深度学习 人工智能 开发者
DeepSeek服务器繁忙?拒绝稍后再试!基于阿里云PAI实现0代码一键部署DeepSeek-V3和DeepSeek-R1大模型
阿里云PAI平台支持零代码一键部署DeepSeek-V3和DeepSeek-R1大模型,用户可轻松实现从训练到部署再到推理的全流程。通过PAI Model Gallery,开发者只需简单几步即可完成模型部署,享受高效便捷的AI开发体验。具体步骤包括开通PAI服务、进入控制台选择模型、一键部署并获取调用信息。整个过程无需编写代码,极大简化了模型应用的门槛。
121 7
|
数据采集 SQL 弹性计算
使用云服务器ECS部署了自己的第一个爬虫
云服务器部署爬虫爬取网站最新通告并推送
使用云服务器ECS部署了自己的第一个爬虫
|
3天前
|
存储 机器学习/深度学习 人工智能
2025年阿里云GPU服务器租用价格、选型策略与应用场景详解
随着AI与高性能计算需求的增长,阿里云提供了多种GPU实例,如NVIDIA V100、A10、T4等,适配不同场景。2025年重点实例中,V100实例GN6v单月3830元起,适合大规模训练;A10实例GN7i单月3213.99元起,适用于混合负载。计费模式有按量付费和包年包月,后者成本更低。针对AI训练、图形渲染及轻量级推理等场景,推荐不同配置以优化成本和性能。阿里云还提供抢占式实例、ESSD云盘等资源优化策略,支持eRDMA网络加速和倚天ARM架构,助力企业在2025年实现智能计算的效率与成本最优平衡。 (该简介为原文内容的高度概括,符合要求的字符限制。)
|
4天前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。