HTTP——响应协议(消息)&案例(验证码等)

本文详细介绍了HTTP响应消息的组成,包括响应行、响应头、响应空行和响应体。讲解了响应状态码的分类及其意义,并展示了如何使用Response对象设置响应消息。通过实例演示了重定向、字符和字节数据的输出以及验证码的生成与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP响应消息

HTTP协议分为两部分

1.请求消息:客户端发送给服务器端的数据(前面的博客已经学习过)
—数据格式:
——请求头
——请求行
——请求空行
——请求体
2.响应消息:服务器端发送给客户端的数据
—数据格式:
——响应头
——响应行
——响应空行
——响应体

1.响应行
—(1)组成:协议/ 版本 响应状态码 状态码描述
—如:HTTP/1.1 200 OK
—(2)响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
—状态码都是3位数字
—分类:
——1XX:服务器接收客户端消息,但是没有接受完成,等待一段时间,发送1XX多状态码
——2XX:成功。代表200
——3XX:重定向。代表302,304代表访问缓存
——4XX:客户端错误
————404代表请求路径没有对应的资源
————405代表请求方式没有对应的doXxx方法
——5XX:服务器端错误
————500代表服务器内部出现异常

2.请求头
—(1)格式:头名称:值
—(2)常见的响应头:
——Content-Type:服务器告诉客户端本次响应体数据格式及编码格式
——Content-disposition:服务器告诉客户端以什么样的格式打开响应数据
———Content-disposition值:
————in-line:默认值,在当前页面打开
————attachment;filename=xxx:以附件形式打开响应体。文件下载

3.响应空行:分隔作用

4.响应体:
真实的传输的数据

Response对象

response对象
功能:设置响应消息
—1.设置响应行
——设置状态码:setStatus(int sc);
—2.设置响应头
——setHeader(String name,String value);
—3.设置响应体
——使用步骤:
——(1)获取输出流
——*字符输出流:PrintWriter getWriter()
——*字节输出流:ServletOutputStream getOutputStream()
——(2)使用输出流,将数据输出到客户端浏览器

案例:

1.完成重定向
2.服务器输出字符数据到浏览器
3.服务器输出字节数据到浏览器
4.验证码

重定向特点:
—重定向地址栏发生变化
—重定向可以访问其他站点(服务器)的资源
—重定向是两次请求,所以不能使用request对象来共享数据
转发特点
—转发地址栏路径不变
—转发只能访问当前服务器下的资源
—转发是一次请求

路径的写法

路径的写法:
1.路径的分类:
—相对路径:通过相对路径不可以确定唯一资源
——如:. /index.html
——不以“/”开头,以“.”开头
——规则:找到当前资源和目标资源之间的相对位置关系
——— ./:当前目录
——— …/:后退一级目录
—绝对路径:通过绝对路径可以确定唯一资源
——如:http://localhost:8080/day04/responseDemo2——/day04/responseDemo2
——以“/”开头的路径
——规则:判断定义的路径是给谁用的?
——判断请求从哪里发出
———给客户端浏览器使用:需要加虚拟目录
————虚拟目录建议动态获取:request.getContextPath();
———给服务器用的:不需要加虚拟目录

1.完成重定向(复杂方式)

package cn.itcast.web.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;

@WebServlet("/responseDemo1")
public class ResponseDemo1 extends HttpServlet {
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        System.out.println("demo1.........");
        response.setStatus(302);
        response.setHeader("location","/day04/responseDemo2");
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        this.doPost(request,response);
    }
}

package cn.itcast.web.servlet;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值