response和验证码、文件下载操作

news2024/11/29 2:54:57

目录

Response对象

 案例:

    1、完成重定向

2、服务器输出字符输出流到浏览器

3、服务器输出字节输出流到浏览器

4、验证码 

 ServletContext对象


Response对象

功能:设置响应消息

     1、设置响应行     格式:HTTP/1.1  200  ok

                                   设置状态码  setStatus(int sc)

      2、设置相应头: setHeader(String name, String value)

      3、设置响应体:

                使用步骤:1、获取输出流

                      * 字符输出流 PrintWriter  getWriter()

                      * 字节输出流  ServletOutputStream  getOutputStream()

                                    2、使用输出流,将数据输出到客户端浏览器

 案例:

    1、完成重定向

      *重定向:资源跳转方式

       代码实现:

//1、设置状态码为302
response.setStatus(302);
//2、设置响应头lication
response.setHeader("location","/day15/responseDemo2")

//简单的重定向方法
response.sendRediect("/day15/responseDemo2");

重定向的特点:rediect

1、地址栏发生变化

2、重定向可以访问其他站点(服务器)的资源

3、重定向是两次请求。不能使用request对象来共享数据

转发的特点:forward

1、转发地址烂路径不变

2、转发只能访问当前服务器下的资源

3、转发是一次请求,可以使用request对象来共享数据

 路径写法:

  1、路径分类

        1、相对路径:通过相对路径不可以确定唯一资源

                      如  ./index.html

规则:找到当前资源和目标资源之间的相对位置关系  ./ 当前目录       ../后退一级目录

        2、绝对路径:通过绝对路径可以确定唯一资源

                    *   以/开头的路径

规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出

     *给客户浏览器使用:需要加虚拟目录(项目的访问路径)

           *建议虚拟目录动态获取:request.getContextPath()

           *<a>  <form> 重定向

     *给服务器使用:不需要加虚拟目录

           *转发路径

2、服务器输出字符输出流到浏览器

//1、获取字符输出流
PrintWriter pw =response.getWriter();
//2、输出数据
pw.write("<h1>hello response </h1>");

 乱码原因:编解码使用的字符集不一致

//简单的形式,设置编码,是在获取流对象之前设置

response.setContentType("text/html;chartset=utf-8");

3、服务器输出字节输出流到浏览器

response.setContentType("text/html;chartset=utf-8");

1、获取字节输出流

ServletOutputStream   sos =response.getOutputStream();

2、输出数据

sos.write("你好".getBytes("utf-8"));

4、验证码 

1、创建一对象,在内存中图片(验证码图片对象)

2、美化图片

3、将图片输出到页面展示

验证码的显示永不重复,以时间为单位,每毫秒可以换一次(欺骗服务器)

 ServletContext对象

1、概念:代表整个web应用,可以和程序的容器(服务器)来通信

2、获取:

         1、通过request对象获取

                 request.getServletContext();

          2、通过HttpServlet获取:

                 this.getServletContext();

3、功能:

    1、获取mime类型:

              类型:在互联网通信过程中定义的一种文件数据类型

                  格式:大类型/小类型    text/html    image/jpeg

         获取:String   getMimeType(String file)

    2、域对象:共享数据

         1、setAttribute(String name,object value)

         2、getAttribute(String  name)

         3、removeAttribute(String name)

       *ServletContext 对象范围:所有用户所有请求的数据

    3、获取文件的真实(服务器)路径

        String   getRealPath(String path)

文件的上传下载

案例:

     文件下载需求:

         1、页面显示超链接

         2、点击超链接后弹出下载提示框

         3、完成图片文件下载

分析:

1、超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析,则弹出下载提示框。不满足需求

2、任何资源都必须弹出下载提示框

3、使用响应头设置资源的打开方式:

         content-disposition:attachment;filename=xxx

步骤:

   1、定义页面,编辑超链接href属性,指向Servlet,传递资源名称filename

   2、定义Servlet

           1、获取文件名称

           2、使用字节输入流加载文件进内存

           3、指定response的响应头:content-disposition:attachment;filename=xxx

           4、将数据写出到response输出流

 

 3、中文文件名问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2206329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ 高级特性——死信队列

文章目录 前言死信队列什么是死信常见面试题死信队列的概念&#xff1a;死信的来源&#xff08;造成死信的原因有哪些&#xff09;死信队列的应用场景 前言 前面我们学习了为消息和队列设置 TTL 过期时间&#xff0c;这样可以保证消息的积压&#xff0c;那么对于这些过期了的消…

【更新】上市公司企业机构投资者实地调研数据(2013-2023年)

一、测算方式&#xff1a; 参考《会计研究》逯东&#xff08;2019&#xff09;老师的做法&#xff0c;考虑投资者实地调研的频率和可能性&#xff0c;设立了下述变量来衡量上市公司接待投资者调研情况: 首先&#xff0c;使用年度范围内接待投资者调研的总次数 ( Visitnmb) 作为…

卸载PLSQL及标准卸载流程

目录 1. 卸载PLSQL2. 删除注册表3. 删除数据信息 1. 卸载PLSQL 等待进度条走完 2. 删除注册表 regedit 右击删除 3. 删除数据信息 由于AppData是隐藏文件&#xff0c;需要勾选隐藏的项目。 重启电脑&#xff0c;PLSQL就卸载成功了。

低代码工单管理app评测,功能与效率解析

预计到2030年&#xff0c;低代码平台市场将达1870亿美元。ZohoCreator助力企业构建定制化软件应用&#xff0c;以建筑行业工作订单管理app为例&#xff0c;简化流程&#xff0c;提升管理效率&#xff0c;降低成本。其用户友好界面、自动化管理、跨平台使用及全面报告功能受企业…

项目优化内容及实战

文章目录 事前思考Prometheus 普罗米修斯概述架构安装及使用 Grafana可视化数据库读写分离实战1-PrometheusGrafanaspringboot 事前思考 需要了解清楚&#xff1a;需要从哪些角度去分析实现&#xff1f;使用了缓存&#xff0c;就需要把缓存命中率数据进行收集&#xff1b;使用…

企业在隔离网环境下如何进行安全又稳定的跨网文件交换?

在数字化时代&#xff0c;企业的数据流通如同血液一般重要。然而&#xff0c;当企业内部实施了隔离网环境&#xff0c;跨网文件交换就成了一个棘手的问题。今天我们将探讨在隔离网环境下&#xff0c;企业面临的跨网文件交换挑战&#xff0c;以及如何通过合规的跨网文件交换系统…

数字电路——触发器1(RS和钟控触发器)

触发器&#xff1a;能够存储一位二进制信息的基本单元电路称触发器(Flip-Flop) 特点&#xff1a; 具有两个能自行保持的稳定状态&#xff0c;用来表示逻辑状态的“0”或“1”。具有一对互补输出。有一组控制(激励、驱动)输入。或许有定时(时钟)端CP(Clock Pulse)。在输入信号…

PostgreSQL 16.4安装以及集群部署

1. 环境准备 1.1 主机环境 主机 IP: 192.24.215.121操作系统: CentOS 9PostgreSQL 版本: 16.4 1.2 从机环境 从机 IP: 192.24.215.122操作系统: CentOS 9PostgreSQL 版本: 16.4 2. 安装 PostgreSQL 16.4 在主从两台机器上都需要安装 PostgreSQL 16.4。 2.1 添加 Postgre…

银行卡基础信息查询 API 对接说明

本文将介绍一种 银行卡基础信息查询 API 对接说明&#xff0c;它可用于银行卡基础信息查询。 接下来介绍下 银行卡基础信息查询 API 的对接说明。 申请流程 要使用 API&#xff0c;需要先到 银行卡基础信息查询 API 对应页面申请对应的服务&#xff0c;进入页面之后&#xf…

Python自定义异常类:实际应用示例之最佳实践

Python自定义异常类&#xff1a;实际应用示例之最佳实践 前言 在软件开发中&#xff0c;合理处理异常是保证程序稳定性的重要环节。虽然 Python 内置了丰富的异常类型&#xff0c;但在处理复杂业务逻辑时&#xff0c;自定义异常类能够使代码更加清晰且具备可扩展性。 本文将…

一个架构师的职业素养:四种常用的权限模型

你好,我是看山。 本文收录在《一个架构师的职业素养》专栏。日拱一卒,功不唐捐。 今天咱们一起聊聊权限系统。 以大家熟知的电商场景举例: 用户可以分为普通用户、VIP用户:我们需要控制不同角色用户的访问范围。比如,京东的PLUS会员,可以进入会员专区,而且能够使用礼金…

ESP32接入扣子(Coze) API使用自定义智能体

使用ESP32接入Coze API实现聊天机器人的教程 本示例将使用ESP32开发板通过WiFi接入 Coze API&#xff0c;实现一个简单的聊天机器人功能。用户可以通过串口向机器人输入问题&#xff0c;ESP32将通过Coze API与智能体进行通信&#xff0c;并返回对应的回复。本文将详细介绍了如…

OpenGL 进阶系列03 - OpenGL实例化渲染来提高性能

目录 一:概述 二:实例化渲染的优点: 三:OpenGL实例化渲染的例子: 一:概述 OpenGL 实例化渲染(Instanced Rendering)是一种渲染技术,可以有效地绘制多个相同对象,而不需要为每个对象单独提交绘制调用。通过这种方式,可以显著提高渲染性能,尤其是在需要绘制大量相…

【每日刷题】Day137

【每日刷题】Day137 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; 2. 495. 提莫攻击 - 力扣&#xf…

【数据结构与算法】线性表顺序存储结构

文章目录 一.顺序表的存储结构定义1.1定义1.2 图示1.3结构代码*C语言的内存动态分配 二.顺序表基本运算*参数传递2.1建立2.2初始化(InitList(&L))2.3销毁(DestroyList(&L))2.4判断线性表是否为空表(ListEmpty(L))2.5求线性表的长度(ListLength(L))2.6输出线性表(DispLi…

基于GoogleNet深度学习网络的手语识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 手语How are you&#xff0c;测试识别结果如下&#xff1a; 手语I am fine&#xff0c;测试识别结果如下&#xff1a; 手…

java入门和Java语法

Java直接运行源代码文件&#xff0c;不会产生HelloWorld.class第二种方法&#xff1a;把模块放在D盘下&#xff0c;然后导入 第三种方法&#xff1a;新建一个模块&#xff0c;然后把内容复制过去 byte l 12; short m l; System.out.println(m); char n a; int reason mn; Sy…

消息摘要算法

算法特点 a) 消息摘要算法/单向散列函数/哈希函数 b) 不同长度的输入&#xff0c;产生固定长度的输出 c) 散列后的密文不可逆 d) 散列后的结果唯一 e) 哈希碰撞 f) 一般用于校验数据完整性、签名sign 由于密文不可逆&#xff0c;所以服务端也无法解密 想要验证&#xf…

解锁机器人视觉与人工智能的潜力,从“盲人机器”改造成有视觉能力的机器人(下)

机器视觉产业链全景回顾 视觉引导机器人生态系统或产业链分为三个层次。 上游&#xff08;供应商&#xff09; 该机器人视觉系统的上游包括使其得以运行的硬件和软件提供商。硬件提供商提供工业相机、图像采集卡、图像处理器、光源设备&#xff08;LED&#xff09;、镜头、光…

如何让信息学奥赛学习“边玩边学”?——趣味编程让枯燥学习变得有趣

信息学奥赛&#xff08;NOI&#xff09;作为一项高水平的编程竞赛&#xff0c;内容涉及到大量的算法、数据结构和复杂的逻辑思维&#xff0c;对学生的要求非常高。然而&#xff0c;面对枯燥的知识点和高难度的题目&#xff0c;很多学生在备赛过程中容易感到乏味甚至放弃。那么&…