文章目录

  • 一、request和response介绍
  • 二、request对象
    • 1. 获取请求参数
    • 2.请求转发
    • 3.域对象
  • 三、response对象
    • 1.向客户端发送数据
    • 2.实现重定向

一、request和response介绍

  request是代表Http请求信息的对象,其中封装了浏览器向服务器发送的请求信息,将request传递给service方法,在处理请求的过程中,可以通过request对象获取请求相关的信息。
  response对象是代表Http响应信息的对象,其中将会封装服务器向浏览器做出的响应信息,将response传递给service方法,在处理请求的过程中,如果有任何数据要发送给浏览器,可以通过response获取流进行发送。

response.getWriter();
response.getOutputStream();

二、request对象

1. 获取请求参数

(1)什么是请求参数?
通过浏览器向服务器发送请求时,在请求中可以携带一些数据,这些数据就称之为请求参数,例如:http://localhost/day10/RequestDemo1?user=张三&like=篮球&like=足球&age=18

(2)如何获取请求参数

request.getParameter(String paramName);
-- 通过请求参数的名字,获取对应的参数值。返回值是一个字符串。
request.getParameterValues(String paramName);
-- 通过请求参数的名字,获取对应的所有参数值组成的数组。

因此,以后获取单值的参数时,推荐使用getParameter方法。
如果获取的多值的参数(即一个参数名对应多个参数值),推荐使用getParameterValues方法

//获取请求参数(user和like)
String user = request.getParameter("user");
System.out.println("user="+user);String like = request.getParameter("like");
System.out.println("like="+like);String[] likes = request.getParameterValues("like");
System.out.println( "likes="+ Arrays.toString( likes ) );

2.请求转发

(1)请求转发是服务器内部资源的一种跳转方式,即当浏览器发送请求访问服务器中的某一个资源时,该资源将请求转交给另外一个资源进行处理的过程,就叫做请求转发。请求转发和重定向都是资源的跳转方式,但是跳转的过程有所不同。

(2)请求转发的特点:

  1. 请求转发前后是一次请求、一次响应。
  2. 请求转发前后,浏览器地址栏地址不会发生变化(转发是服务器内部的跳转,浏览器看不到)。
  3. 请求转发前后的request对象是同一个(因为请求只有一次,服务器根据一次请求,只会创建一个request对象,转发前后都需要request,所以只能在转发时,将request对象传递给转发后的那个资源)。
  4. 请求转发只能在同一个web应用内部中的两个资源之间进行转发。即转发前后的两个资源必须属于同一个web应用。

3.域对象

(1)request在实现转发时,通过request.setAttribute方法和request.getAttribute方法带数据到目的地时,就是通过request对象中的map集合带数据,这个request对象上的map集合以及request对象所在的范围即称之为是一个域对象。如果一个对象具备可以被访问的范围,通过这个对象上的map集合可以在整个范围内实现数据的共享。这样的对象就叫做域对象。在request对象上提供了往域对象中存数据的方法以及取数据的方法:

request.setAttribute(String attrName, Object attrValue);
-- 将属性存入request域中(request对象的map集合里),其中属性名只能是字符串,属性值可以是任意类型。
request.getAttribute(String attrName)
-- 根据属性名从request域中获取对应的属性值。返回值是一个Object。

(2)equest域对象所具备的三大特征:
生命周期:一次请求开始时,会创建代表请求的request对象,在一次请求结束时(响应已完成),会销毁request对象。
作用范围:一次请求范围内(由于请求转发前后是一次请求,所以在请求转发前后可以通过request域带数据到目的地:如果是重定向,由于重定向前后是两次请求,request对象也不是同一个,因此在重定向前后不能通过request域带数据。)
主要功能:带数据到目的地。

三、response对象

1.向客户端发送数据

PrintWriter response.getWriter() – 字符流
ServletOuptputStream response.getOutputStream() – 字节流

PrintWriter out = response.getWriter();
out.write(“hello…”);

2.实现重定向

(1)重定向的特点:

  1. 重定向前后是两次请求,两次响应
  2. 重定向前后,浏览器的地址栏地址会发生变化。(因为两次请求都是通过浏览器发起,浏览器知道这个跳转的过程,因此地址栏地址会变化)
  3. 重定向前后的request对象不是同一个(因为重定向前后是两次请求,服务器根据两次请求会创建两个不同的request对象及response对象)
  4. 重定向前后的两个资源可以是来自不同的web应用,甚至可以是来自不同的服务器。(进行跳转的两个资源之间没有限制)

request和response简介相关推荐

  1. Servlet第三篇【request和response简介、response的常见应用】

    response.request对象 Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象.和代表响应的response对象 既然request对象代表ht ...

  2. request和response一览

    1.HTTP SERVLETRESPONSE简介 set heade set int head set data head add haed add int head add int head 字节流 ...

  3. 通过Filter给Request、Response加点料

    一.简介 使用过 ASP.NET 的同学都知道,Filter 是一个非常中的概念,是项目开发过程中也是经常使用的.今天我们就来讲讲,通过Filter给 Request.Response 加点料.通过 ...

  4. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  5. 简单了解request与response

    本文对 request. response 简单描述,未涉及到具体的浏览器缓存.重定向.请求转发等代码部分. 一.Web服务器,浏览器,代理服务器 在看 response.request 对象之前,先 ...

  6. request 和response

    当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...

  7. Struts2中action获取request、response、session的方式

    2019独角兽企业重金招聘Python工程师标准>>> 第一种方式,非IoC(Spring中的控制反转)方式: package com.action; import java.uti ...

  8. Spring MVC中处理Request和Response的策略

    前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 作者:码农小胖哥, 图文编辑:xj 来源:https://mp.weixin.qq.com/s/3eFygsiVl8dC2nRy8_8n5 ...

  9. request、response 中文乱码问题与解决方式

    request.response 中文乱码问题与解决方式 request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码: response乱码指的是:服务器向 ...

最新文章

  1. windows 技术篇 - cmd命令查看当前目录下的所有文件和文件夹以及所有子目录下的文件,dir命令的使用方法
  2. 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)
  3. [转载]另眼看待变量间多重共线性
  4. 体验共享——技术实现瓶颈与突破
  5. SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)
  6. C++ STL容器vector篇(五) vector容器常用初始化操作总结(一维/二维)
  7. 【Step1】【二分图匹配】poj 1274-The Perfect Stall
  8. 零基础学习java------day1------计算机基础以及java的一些简单了解
  9. 个人信用报告,有这五种方式可查!
  10. ubuntu18.04 安装 QQ
  11. angularJs监控页面加载完毕
  12. 基于JavaSwing+MySQL实现的超市商品管理系统
  13. 关于NVIDIA G-SYNC,你应该知道的一切
  14. 《区块链技术与应用》学习笔记10——ETH数据结构
  15. java opencv磨皮算法_美肤磨皮算法OpenCV3实现
  16. 十六进制颜色码对照表
  17. 阿里云盘——多电脑实时同步文件的实现
  18. 人工智能第五章知识总结
  19. 学习Linux命令(51)
  20. AppCrawler 使用中遇到问题的问题及解决

热门文章

  1. SQLite下载与安装
  2. 为计算机创建一个新的用户,win10系统创建一个新账户的解决步骤
  3. C语言判断IP地址是否合法
  4. linux网络广播使用
  5. Matlab:实现理想涡旋光束产生
  6. android应用安装成功之后删除apk文件
  7. 云服务器 ECS 建站教程:快速搭建 ThinkPHP 框架
  8. C++课程设计--简易画图程序(MFC)
  9. EAR、JAR 和 WAR 文件有什么区别?
  10. Fancy PCA图像扩充总结(附代码)