2021-09-02-Servlet请求与响应


layout: post
#标题配置
title: Servlet请求与响应
#时间配置
date: 2021-09-02 19:00:00 +0800
#目录配置
categories: Web
#标签配置
tag: 学习笔记

  • content
    {:toc}

一.请求

1.请求对象介绍

  • 请求:获取资源,在B/S架构中,就是客户端浏览器向服务器发出询问
  • 请求对象:就是在项目当中发送请求的对象

2.请求对象常用方法-获取各种路径

返回值方法名说明
StringgetContextPath()获取虚拟目录名称
StringgetServletPath()获取Servlet映射路径
StringgetRemoteAddr()获取访问者ip地址
StringgetQueryString()获取请求的消息数据
StringgetRequestURI()获取统一资源标识符
StringBuffergetRequestURL()获取统一资源定位符

3.请求对象常用方法-获取请求头信息

返回值方法名说明
StringgetHeader(String name)根据请求头名称获取一个值
EnumerationgetHeaders(String name)根据请求头名称获取多个值
EnumerationgetHeaderNames()获取所有请求头名称

4.请求对象常用方法-获取请求参数信息

返回值方法名说明
StringgetParameter(String name)根据名称获取数据
String[]getParameterValues(String name)根据名称获取所有数据
EnumerationgetParameterNames()获取所有名称
Map<String,String>getParameterMap()获取所有参数的键值对

5.获取请求参数并封装对象

(1)手动封装的方式
(2)反射封装方式
(3)工具类封装方式

6.流对象获取请求信息

返回值方法名说明
BufferedReadergetReader()获取字符输入流
ServletInputStreamgetInputStream()获取字节输入流

7.中文乱码问题

  • GET方式
    没有乱码问题。在Tomcat 8 版本后已经解决
  • POST方式
    有乱码问题,可以通过setCharacterEncoding()方法来解决!

8.请求域

  • 请求域:可以在一次请求范围内进行共享数据
返回值方法名说明
voidsetAttribute(String name,Object value)向请求域对象中存储数据
ObjectgetAttribute(String name)通过名称获取请求域对象中的数据
voidremoveAttribute(String name)通过名称移除请求域对象中的数据

9.请求转发

  • 请求转发:客户端的一次请求到达后,发现需要借助其他Servlet来实现功能
  • 特点:
    • 浏览器地址栏不变
    • 域对象中的数据不丢失
    • 负责转发的servlet转发前后的响应正文会丢失
    • 由转发的目的地来响应客户端
返回值方法名说明
RequestDispatchergetRequestDispatcher(String name)获取请求调度对象
返回值方法名说明
voidforward(ServletRequest req, ServletResponse resp)实现转发

10.请求包含

  • 请求包含:可以合并其他Servlet中的功能一起响应给客户端
  • 特点:
    • 浏览器地址栏不变
    • 域对象中的数据不丢失
    • 被包含的Servlet响应头会丢失
返回值方法名说明
RequestDispatchergetRequestDispatcher(String name)获取请求调度对象
返回值方法名说明
voidinclude(ServletRequest req, ServletResponse resp)实现包含

二.响应

1.响应对象介绍

  • 响应:回馈结果。在B/S架构中,就是服务器给客户端浏览器反馈结果。
  • 响应对象:就是在项目中用于发送响应的对象

2.常见状态码

状态码说明
200成功
302重定向
304请求资源未改变,使用缓存
400请求错误,常见于请求参数错误
404请求资源未找到
405请求方式不支持
500服务器错误

3.字节流响应消息

返回值方法名说明
ServletOutputStreamgetOutputStream()获取响应字节输出流对象
voidsetContentType("text/html;charset=“UTF-8”)设置响应内容类型,解决中文乱码问题

4.字符流响应消息

返回值方法名说明
PrintWritergetWriter获取响应字符输出流对象
voidsetContentType("text/html;charset=“UTF-8”)设置响应内容类型,解决中文乱码问题

5.响应图片

(1)创建字节输入流对象,关联读取的图片路径
(2)通过响应对象获取字节输出流对象
(3)循环读取和写出图片

6.设置缓存

  • 缓存:对于不经常变化的数据,我们可以合理设置缓存时间,以避免浏览器频繁请求服务器。以此来提高效率

    返回值方法名说明
    voidsetDateHeader(String name, long time)设置消息头添加缓存

7.定时刷新

  • 定时刷新:过了指定时间后,页面自动进行跳转
返回值方法名说明
voidsetHeader(String name, String value)设置消息头定时刷新

8.请求重定向

  • 请求重定向:客户端的一次请求到达后,发现需要借助其他Servlet来实现功能
  • 特点:浏览器地址栏会发生改变,两次请求。请求域对象中不能共享数据,可以重定向到其他服务器
  • 重定向实现原理
    设置响应状态码为302
    resp.setStatus(302)
    设置响应的资源路径(响应到哪里去,通过响应消息头location来指定)
    resp.setHeader(“location”,“/response/responseDemo07”);
  • 响应对象重定向方法
返回值方法名说明
voidsendRedirect(String name)设置重定向

9.文件下载

  1. 创建字节输入流,关联读取的文件
  2. 设置响应消息头支持的类型
  3. 设置响应消息头以下载方式打开资源
  4. 通过响应对象获取字节流输出流对象
  5. 循环读写
  6. 释放资源
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾光1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值