Response

一、响应对象概述

        1、什么是响应对象

              响应,它表示了服务器端收到请求,同时也已经处理完成,把处理的结果告知用户。简单来说,指的就是服务器把请求的处理结果告知客户端。在B/S架构中,响应就是把结果带回浏览器。响应对象,顾名思义就是用于在JavaWeb工程中实现上述功能的对象。就是我们的HttpServletResponse(此对象的实现类是由Tomcat提供)

        2、响应码类

状态码分类说明
1XX响应中--临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它
2XX成功--表示请求已经被成功接受,处理已完成
3XX重定向--重定向到其他地方(让客户端再发起一个请求以完成整个处理)
4XX客户端错误--处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5XX服务器端错误--处理发生错误,责任在服务器端,如:服务端抛出异常,路由出错,HTTP版本不支持等

        3、常见状态码

状态码英文描述解释
200OK客户端请求成功,即处理成功
302Found只是所请求的资源已移动到由Location响应头给定的URL,浏览器会自动重新访问到这个页面
304Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400Bad Request客户端请求有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了
428Precondition Required服务器要求有条件的请求,告诉客户端要想访问资源,必须携带特定的请求头
429Too Many Requests太多请求,可以限制客户端请求某个资源的数量,配合Retry-After(多长时间后可以请求)响应头一起使用
431Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后提交
405Method Not Allowed请求方式有误,比如:应该用GET请求方式的资源,而用了POST
500Internal Server Error服务器发生不可预期的错误,表示服务器出异常了
503Service Unavailable服务器尚未准备好处理请求,比如:服务器刚刚启动,还未初始化好
511

Network Authentication Required

客户端需要进行身份验证才能获得网络访问权限

        4、响应对象的常用响应头

名称说明
Location请求重定向的地址,常与302配合使用。
Content-Type响应正文的MIME类型, 编码格式

二、重定向的实现

        1、实现步骤

                1、设置状态码为302

                2、设置响应头location

        2、代码实现

package com;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @author 86136*/
@WebServlet("/a")
public class MyWeb04 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//第一种方法//设置状态码resp.setStatus(302);//设置响应头resp.setHeader("location","https://www.baidu.com/");//第二种方法(一般用这种)//1. 设置状态码为302//2. 设置响应头locationresp.sendRedirect("https://www.baidu.com/");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

        3、重定向与转发的区别

                1、重定向的特点:redirect

                        1、地址栏发生变化

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

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

                2、转发的特点:forward

                        1、转发地址栏路径不变

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

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

三、向页面响应数据

        1、服务器输出字节数据到浏览器

                1、获取字节输出流

返回值方法名说明
ServletOutputStreamgetOutputStream()

获取响应字节输出流对象

                2、实现代码

package com;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @author 86136*/
@WebServlet("/aa")
public class MyWeb05 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//得到字节流ServletOutputStream stream = resp.getOutputStream();//向页面写入数据stream.write("女孩我喜欢你".getBytes());}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

                3、注意向页面写入中文会出现???

package com;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @author 86136*/
@WebServlet("/aa")
public class MyWeb05 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置响应头解决中文乱码//response.setHeader("Content-Type","text/html;charset=UTF-8");resp.setContentType("text/html;charset=utf-8");//得到字节流ServletOutputStream stream = resp.getOutputStream();//向页面写入数据stream.write("女孩我喜欢你".getBytes());}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

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

                1、获取字符流输出

返回值方法名说明
PrintWritergetWriter()获取响应字符输出流对象

                2、输出数据

package com;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.IOException;
import java.io.PrintWriter;/*** @author 86136*/
@WebServlet("/ff")
public class MyWeb06 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置响应头解决中文乱码resp.setContentType("text/html;charset=utf-8");//得到字符流对象PrintWriter out = resp.getWriter();out.write("<a href='https://www.baidu.com/'>点我</a>");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}
}

  

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

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

相关文章

汽车IVI中控开发入门及进阶(二十五):CVBS视频流

前言: AHD和CVBS是两种视频格式,在车载摄像头中,有支持传统CVBS模拟视频的摄像头,也有支持新的高分辨率AHD格式的摄像头。 CVBS视频是经典的模拟视频格式,在视频经常显示在小型监视器上的车辆上仍然最受欢迎。如果想要车辆的最大分辨率,可选择AHD格式,即高分辨率模拟视…

VRRP联动BFD的相关配置

今天就与大家分享VRRP联动BFD的相关配置&#xff0c;同时也会演示一下没有BFD的情况下&#xff0c;又是如何呢&#xff1f;前后做个对比&#xff0c;只要把情况了解清楚了&#xff0c;初学者才能更加深刻地掌握它。 一、实验拓扑图 二、配置思路 我们在做任何事情&#xff0c…

CTF中的命令执行绕过方式

引言 不论在CTF还是实战中&#xff0c;命令执行的场景五花八门&#xff0c;那么往往在一些小型比赛中&#xff0c;会以那种PING接口进行getflag操作。 0x01&#xff1a;管道符 在用linux命令时候,我们可以一行执行多条命令或者有条件的执行下一条命令&#xff0c;下面我们讲解…

24.6.2(动态开点线段树)

星期一&#xff1a; cf edu round 36 E cf传送门 题意&#xff1a;1到n天初始全为工作日&#xff0c;有两种操作&#xff0c;将 l-r 区间变为 工作日/休息日&#xff0c;每次操作后询问剩余总工作日有多少 思路&…

【npm】创建和发布无作用域的公共包

目录 1、创建包项目 2、进入目录 3、初始化项目 4、查看当前npm镜像源 5、切换镜像源 6、查看当前登录用户 7、登录 npm 用户 8、发布 9、查看公共包页面 10、删除已发布的npm包 11、&#x1f4da;总结 1、创建包项目 # 在命令行上&#xff0c;为包创建目录 mkdir…

Redis集群方案有哪些?

今天咱们来聊聊Redis集群方案&#xff0c;想象一下Redis是个超级大的储物柜&#xff0c;里面放满了你各种各样的宝贝&#xff08;数据&#xff09;。但随着宝贝越来越多&#xff0c;一个储物柜不够用了&#xff0c;这时候我们就得想方设法扩大空间&#xff0c;还要保证找东西依…

假指纹与活体指纹检测

目录 1. 假指纹简介 2. 假指纹制作流程 3. 活体指纹检测 4. 活体指纹检测竞赛 1. 假指纹简介 随着科学技术的发展&#xff0c;指纹技术以各种各样的形式进入了我们的生活。在大多数情况下&#xff0c;指纹识别应用于移动设备和桌面设备解决方案&#xff0c;以提供安全方便的…

Eclipse语言编程:深入探索与实用技巧

Eclipse语言编程&#xff1a;深入探索与实用技巧 在编程领域&#xff0c;Eclipse以其强大的功能和灵活的扩展性赢得了众多开发者的青睐。然而&#xff0c;对于初学者来说&#xff0c;Eclipse语言编程可能是一个充满挑战和困惑的领域。本文将从四个方面、五个方面、六个方面和七…

android高效读图方式——Hardwarebuffer读图

安卓上有许许多多使用OpenGL来渲染的原因&#xff0c;比方说做特效/动画/硬解/人脸识别等等。渲染完成后如何从gpu中把数据快速读取出来也是高效图像处理中的重要的一环。 相对于glReadPixel的同步读取方式&#xff0c;安卓GLES3.0提供了更高效快速的Hardwarebuffer读图方式&a…

Hyperf 框架常见面试题

Hyperf 是一个高性能的 PHP 微服务框架&#xff0c;它基于 Swoole 提供协程支持&#xff0c;适合构建高并发的服务。在面试中&#xff0c;针对 Hyperf 的问题可能会覆盖框架的基本使用、设计理念、性能优化、微服务实践等多个方面。以下是一些可能的 Hyperf 面试题及简要回答方…

摸鱼大数据——Hive调优1-3

hive官方配置url: Configuration Properties - Apache Hive - Apache Software Foundation 1、调优方式 hive参数配置的意义: 开发Hive应用/调优时&#xff0c;不可避免地需要设定Hive的参数。设定Hive的参数可以调优HQL代码的执行效率&#xff0c;或帮助定位问题。然而实践中…

Docker 安装部署(CentOS 8)

以下所有操作都是基于 CentOS 8 系统进行操作的。安装的 Docker 版本为 25.0.5-1.el8。 1、卸载老版本 Docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine注&a…

mmdet3D中文注释

# 版权声明: 本代码版权所有 (c) OpenMMLab。 import os from collections import OrderedDict from os import path as osp from typing import List, Tuple, Unionimport mmcv import numpy as np from nuscenes.nuscenes import NuScenes from nuscenes.utils.geometry_util…

基于学习的决策树

基于学习的决策树概述 决策树是一种监督学习方法&#xff0c;广泛应用于分类和回归任务中。基于学习的决策树模型通过学习数据中的特征来构建树状结构&#xff0c;帮助做出决策。以下是对基于学习的决策树的详细介绍&#xff0c;包括其基本概念、工作流程、构建算法、优势和挑…

利用人工智能实现量子计算

转载自&#xff1a;利用人工智能实现量子计算 2024年 5月 12日 By Mark Wolf https://developer.nvidia.com/zh-cn/blog/enabling-quantum-computing-with-ai/ 文章目录 一、概述二、改进量子处理器三、校正噪声量子位的误差四、开发高效的量子算法五、探索量子计算的人工智能 …

编写一个问卷界面 并用JavaScript来验证表单内容

倘若文章和代码中有任何错误或疑惑&#xff0c;欢迎提出交流哦~ 简单的html和css初始化 今天使用JavaScript来实现对表单输入的验证&#xff0c; 首先写出html代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset&qu…

国产算力——摩尔线程算力芯片MTT S80、MTT S3000

摩尔线程算力芯片是摩尔线程智能科技&#xff08;北京&#xff09;有限责任公司&#xff08;简称&#xff1a;摩尔线程&#xff09;的主要产品&#xff0c;该公司专注于GPU芯片的设计和相关产品的研发。以下是关于摩尔线程算力芯片的一些关键信息&#xff1a; 产品概述&#x…

Halcon 双相机标定与拼图(一)

二、算子解释 get_calib_data camera-pose 获得基于第一个相机的第二个相机的Pose get_calib_data (CalibDataID, camera, 1, pose, RelPose2) *relative 相对 * To get the absolute pose of the second camera, its relative pose needs * to be inverted and combined…

C/C++文件读写

一.c语言实现 常用函数介绍 C语言中文件读写操作主要通过stdio.h中的文件操作函数来实现。常用的文件操作函数有fopen、fclose、fread、fwrite、fseek、ftell等。 1.fopen函数&#xff1a;用于打开一个文件&#xff0c;并返回一个指向该文件的指针。函数原型如下&#xff1a; …

[docker] docker-compose-redis.yml

docker-compose-redis.yml version: 3services:redis:image: redis:6.2.7container_name: redisports:- "6379:6379"environment:# 时区上海TZ: Asia/Shanghaivolumes:# 配置文件- /docker/redis/conf:/redis/config# 数据文件- /docker/redis/data/:/redis/data/co…