request和response简介

一、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应用,甚至可以是来自不同的服务器。(进行跳转的两个资源之间没有限制)
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值