Javaweb之 Request和Response详解

1. Request与Response

1.1. Web应用运行机制

到目前为止,我们已经掌握了Web应用程序的运行机制,现在学习的就是Web应用程序运行机制中很重要的内容 —— Request与Response。

首先,我们先来看一看Request与Response在Web应用程序运行时,是怎么样的。

通过上图的Web应用程序运行机制,我们可以知道关于Request与Response的信息:

  • Web应用程序接收一次请求,就创建一个Request对象和Response对象。
  • 通过Request对象可以在服务器端获取客户端发送的请求数据内容。
  • 通过Response对象可以生成服务器端向客户端响应的数据内容。
  • Request对象和Response对象并不是Web应用程序所创建的,而是由Tomcat服务器创建(JavaEE并没有Request与Response的实现类)。
  • JavaEE提供了javax.servlet.http包中提供了HttpServletRequest和HttpServletResponse接口,这两个接口是继承于javax.servlet包中的ServletRequest和ServletResponse接口。
  • javax.servlet包中的ServletRequest和ServletResponse接口是与协议无关的,而javax.servlet.http包中的HttpServletRequest和HttpServletResponse接口是与Http协议有关的。

1.2. 百度百科

  • Request

Request这个对象不用事先声明,就可以在JSP网页中使用,在编译为Servlet之后,它会转换为javax.servlet.http.HttpServletRequest形态的对象,HttpServletRequest对象是有关于客户端所发出的请求的对象,只要是有关于客户端请求的信息,都可以藉由它来取得,例如请求标头、请求方法、请求参数、客户端IP,客户端浏览器等等信息。

  • Response

Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应。Response对象只提供了一个数据集合cookie,它用于在客户端写入cookie值。若指定的cookie不存在,则创建它。若存在,则将自动进行更新。结果返回给客户端浏览器。

2. 掌握Response

2.1. Response概述

Response是Web应用程序用来封装向客户端响应信息的,是Servlet接口的service()方法的一个参数,类型为javax.servlet.http.HttpServletResponse。客户端每次发送请求时,服务器都会创建一个Response对象,并传递给Servlet接口的service()方法,来完成向客户端的响应工作。

下列是javax.servlet.http.HttpServletResponse常用的API列表:

Method Summary
void [addDateHeader](https://www.cnblogs.com/aaron911/p/7832055.html#addDateHeader(java.lang.String, long))(String name, long date) Adds a response header with the given name and date-value.
void [addHeader](https://www.cnblogs.com/aaron911/p/7832055.html#addHeader(java.lang.String, java.lang.String))(String name, String value) Adds a response header with the given name and value.
void sendRedirect(String location) Sends a temporary redirect response to the client using the specified redirect location URL.
void [setDateHeader](https://www.cnblogs.com/aaron911/p/7832055.html#setDateHeader(java.lang.String, long))(String name, long date) Sets a response header with the given name and date-value.
void [setHeader](https://www.cnblogs.com/aaron911/p/7832055.html#setHeader(java.lang.String, java.lang.String))(String name, String value) Sets a response header with the given name and value.
void setStatus(int sc) Sets the status code for this response.

下列是javax.servlet.ServletResponse常用的API列表:

Method Summary
ServletOutputStream getOutputStream() Returns a ServletOutputStream suitable for writing binary data in the response.
PrintWriter getWriter() Returns a PrintWriter object that can send character text to the client.
void setCharacterEncoding(String charset) Sets the character encoding (MIME charset) of the response being sent to the client, for example, to UTF-8.
void setContentType(String type) Sets the content type of the response being sent to the client, if the response has not been committed yet.

针对HttpServletResponse与ServletResponse常用的API,我们进行逐一讨论。

2.2. Response重定向

在学习Http响应协议时,我们曾做过重定向案例,但那时我们并不清楚其原理,下面我们就讨论一下利用HttpServletResponse来完成重定向的功能。

  • 创建一个Servlet来完成重定向功能。

[](javascript:void(0)

Javaweb之 Request和Resonse相关推荐

  1. JavaWeb:request.setAttribute()和session.setAttribute()的区别

    在编写javaweb中的servlet层程序时,为了实现前后端的交互,我们通常会使用request.setAttribute()和session.setAttribute()保存一些信息,用于其他页面 ...

  2. JavaWeb:request.getSession().invalidate()与request.getSession().removeAttribute()的区别

    一.Session是什么? Session对象存储特定用户会话所需的属性及配置信息. 当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个会话中一直存在下去.当 ...

  3. JavaWeb(part2)--request

    学习笔记,仅供参考,有错必纠 文章目录 request Request的功能 举个例子 获取请求参数通用方式(get,post都可用) 举个例子 中文乱码问题 请求转发 请求转发的特点 举个例子 re ...

  4. 【JavaWeb】Request对象详解

    HTTP之Request:接上一篇博文HTTP协议详细. 本文目录 一.Request请求 1.Request对象和Response对象的原理 2.Request对象继承体系结构 3.Request功 ...

  5. javaweb:request请求对象(5)

    1.请求和响应的概述: 什么请求:在浏览器地址栏输入地址,点击回车请求服务器,这个过程就是一个请求过程. 什么响应:服务器根据浏览器发送的请求,返回数据到浏览器在网页上进行显示,这个过程就称之为响应. ...

  6. java 请求响应_java http接口请求响应 request response

    接口类: 1 package org.sunshine.dcda.epg.wechat.controller.niao; 2 3 import javax.servlet.http.HttpServl ...

  7. 【JavaWeb开发】Referer防盗链的详解

    1. 什么是Referer? Referer 是 HTTP 请求(requset) header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里就有包含 Refere ...

  8. javaWeb综合案例

    商城案例分模块:用户模块→ 分类模块 → 商品模块→购物车模块(最难)→ 订单模块后台模块(往前台的数据的增删改查)今日任务: 1用户注册a注册完成b给注册人发邮件2用户激活a 去邮箱激活发送的邮件3 ...

  9. sqlbulkcopy mysql_c# SqlBulkCopy实现批量从数据集中把数据导入到数据库中

    今天遇到了一个导入类第一次见 SqlBulkCopy 可以实现从一个数据集导入到数据库中的表中 本来想从数据集中一条条遍历insert到库中 有了这个后发现: 只在把表与数据集的列做一下对应关系,再走 ...

最新文章

  1. WMI技术介绍和应用——查询快捷方式、映射磁盘和虚拟内存信息
  2. NodeList 和 HTMLCollection
  3. 关系数据库范式粗略理解
  4. 上传图片时 , 返回 nginx 出现413 Request Entity Too Large 问题
  5. php跳转传值,php如何跳转页面并传值?
  6. Windows 8 系列 --Block Game --随笔
  7. 18寒假最后一测+dijistra模板
  8. java中堆栈的基本操作_玩儿转队列和栈的基本操作及其应用:Java 版
  9. sqlyog for MySQL远程连接的时候报错mysql 1130的解决方法
  10. “创新”,我们应该如何去做?
  11. MySQL之逻辑架构和存储引擎
  12. matlab利用图像减法实现找茬
  13. linux环境下snap安装vscode
  14. 文章,记录按内容分页显示,根据文章内容按字数进行分页(转)
  15. JAVA使用RXTX编写串口调试工具-代码分析
  16. SMMS:一个不错的免费图床
  17. 【日成海外营销】如何利用TikTok进行红人营销?
  18. Android Studio基础输入文本框EditText
  19. 星环科技数据中台解决方案,助力某政府机构建设新型智慧城市
  20. matlab 模拟风,【Matlab实现】风场仿真

热门文章

  1. java中的pack()
  2. 令人蛋疼的铁路客户服务中心12306
  3. 新版标准日本语初级_第二十八课
  4. 哈尔滨理工大学第七届程序设计竞赛初赛(高年级组)F - 苦逼的单身狗
  5. Ubuntu——系统语言由英文切换到中文的方法
  6. 【java面试题】Java面试宝典2013版(超长版),抽象类是否可继承实体类
  7. 让孩子终生受益的62句话
  8. css改火狐滚动条样式_纯css美化滚动条样式
  9. python爬虫爬取还未出版的《龙族5悼亡者的归来》小说
  10. 笔记本电脑同时使用有线网络和无线网络的办法