测试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();
    }
}
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
弹性计算 Ubuntu Linux
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
在当今数据驱动的时代,快速部署和管理大模型成为企业的关键需求。阿里云提供了一键部署OpenWebUI+Ollama的便捷方案,支持本地大模型运行和管理。用户也可以选择连接阿里云百炼的在线模型。
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
|
20天前
|
人工智能 负载均衡 数据可视化
阿里云出手了,DeepSeek服务器拒绝繁忙,免费部署DeepSeek模型671B满血版
阿里云推出免费部署DeepSeek模型671B满血版服务,通过百炼大模型平台,用户无需编码,最快5分钟、最低0元即可完成部署。平台提供100万免费Token,支持DeepSeek-R1和DeepSeek-V3等多款模型调用,有效解决服务器繁忙问题。新手零基础也能轻松上手,享受高效稳定的API调用和自动弹性扩展功能。教程涵盖开通服务、获取API-KEY及配置Chatbox客户端等步骤,详细指引助您快速实现DeepSeek自由。
166 18
|
7天前
|
弹性计算
【已解决】Matomo本地SMTP配置可以发邮件,但部署到阿里云ECS就发不了邮件
在阿里云ECS上使用Matomo和PHPMailer发送邮件时遇到问题,邮件无法发出且接口调用Pending。经过排查,发现是ECS安全组未开放25/465端口,导致SMTP请求无法正常通信。解决方法为在安全组中配置并开放25/465端口,从而恢复邮件发送功能。
|
10天前
|
弹性计算 API Docker
在ECS上使用百炼部署满血版DeepSeek R1
本文为您介绍如何在ECS实例上部署Open WebUI,并通过大模型服务平台百炼API调用DeepSeek-R1模型推理服务。帮助您快速体验满血版DeepSeek-R1模型。
|
9天前
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
59 1
|
15天前
|
弹性计算 人工智能 API
基于ECS部署DeepSeek个人专属AI网站
本方案介绍了如何基于云服务器ECS集成百炼API和Open WebUI服务,一键部署体验DeepSeek个人专属AI网站。用户不仅可以以极低的成本,拥有个人专属的AI网站,进行稳定的AI对话,还能够切换DeepSeek-V3、DeepSeek-R1、Qwen-max等模型进行体验。同时Open WebUI还具备开源能力,支持定制工具的开发。您还可以创建其他子账号,将您的专属AI网站分享给他人使用。
|
22天前
|
人工智能 负载均衡 数据可视化
阿里云出手了,基于百炼一键部署DeepSeek满血版,告别服务器繁忙1
阿里云百炼平台推出一键部署DeepSeek-R1满血版671B模型,提供100万免费Token,无需编码,新手5分钟内即可完成部署。通过Chatbox客户端配置API,轻松实现模型调用,解决服务器繁忙问题,支持自动弹性扩展,降低硬件成本。详情及教程见阿里云百炼官网。
294 5
|
1天前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
|
10天前
|
域名解析 弹性计算 应用服务中间件
使用域名访问部署在ECS上的网站
本文为您介绍如何为网站配置域名并为域名配置HTTPS证书。
|
14天前
|
并行计算 前端开发 异构计算
告别服务器繁忙,云上部署DeepSeek
告别服务器繁忙,云上部署DeepSeek
102 0

热门文章

最新文章