Request与Response学习笔记

Request

Request对象是由服务器tomcat所创建的,作用是获取请求信息。
在这里插入图片描述


功能

获取请求消息

1.获取请求行数据

*GET/day/demo1?name=zhangsan HTTP/1.1

方法
1.获取请求方法:GET

String getMethod()

2*.获取虚拟目录:/day

String getContextPath()

3.获取Servlet路径:/demo1

String getServletPath()

4.获取get方式请求参数:name=zhangsan

String getQueryString()

5*.获取请求URI:/day/demo1

String getRequestURI()  :/day/demo1
StringBuffer getRequestURI()   :http://localhost/day/demo1
URL:统一资源定位符http://localhost/day/demo1
URI:统一资源标识符/day/demo1

6.获取协议及版本: HTTP/1.1(范围更大)

String getProtocol()

7.获取客户机的IP地址

String getRemoteAddr()

2.获取请求头数据

String getHeader(String name):通过请求头的名称获取请求头的值
Enumeration<String> getHeaderName():获取所有的请求头名称

3.获取请求体数据(只有POST请求方式,才有请求体
BufferedReader getReader():获取字符输入流,只能操作字符数据
ServletInputStream():获取字节输入流,可以操作所有类型的数据

其他功能

1.获取请求参数通用方式(不论post还是get都可以使用下列方法

String getParameter(String name):根据参数名称获取参数值
String[] getParameterValues(String name):根据参数名称获取参数值的数组
Enumeration<String> getParameterNmaes():获取所有请求的参数名称
Map<String,String[]> getParameterMap():获取所有参数的map集合

2.请求转发(一种在服务器内部的资源跳转方式)
1.步骤

1.通过request对象获取请求转发器对象:RequestDispacher getRequestDispacher(String path)
2.使用RequestDispacher对象来进行转发:forward(ServletRequest request,ServletResponse response)

2.特点

1.浏览器地址栏路径不发生变化
2.只能转发到当前浏览器内部资源中
3.转发是一次请求

3.共享数据

*域对象:一个有作用域的对象,可以在范围内共享数据
*request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
*方法:
	1.coid setAttribute(String name,Object obj):存储数据
	2.Object getAttribute(String name):通过键获取值
	3.void removeAttribute(String name):通过键移除键值对

4.获取ServletContext

ServletContext getServletContext()

请求报文的内容

1.请求方法:常见的为POST/GET
2.请求URL
3.HTTP协议及版本
4.报文本:格式为“属性值:属性值”,获取客户端信息
5.报文体:将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。

response

获取请求消息

1.响应行数据
组成:协议/版本 响应状态码 状态码描述
响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
*分类:
1.1xx:服务器接收客户端信息,但没有接收完成,等待一段时间,发送1xx状态码
2.2xx:成功
3.3xx:重定向。302(重定向),304(访问缓存)
4.4xx:客户端错误。404(请求路径没有对应的资源),405(请求方式没有对应的方法)
5.5xx:服务器端错误
2.响应头数据
组成:头名称:值
常见的响应头:

1.Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
2.Content-disposition:服务器告诉客户端以什么格式打开响应体数据
	*值
	in-line:默认值,在当前页面内打开
	attachement;filename-xxx:以附件形式打开响应体。文件下载

3.响应空行数据
4.响应体数据
传输的数据

Response对象

1.设置响应行数据
设置状态码

setStatus(int sc);

完成重定向

response.sendRedirect(String path)
或者
response.setStatus(302);
response.setHeader(String s1,String s2);

在这里插入图片描述

2.设置响应头数据

setHeader(String name,String value);

3.设置响应体数据
使用步骤:

1.获取输出流
	字符输出流:PrintWriter()
	字节输出流:SerletOutputStream getOutputStream()
2.使用输出流,将数据输出到客户端浏览器

路径补充

1.相对路径:通过相对路径不可以确定唯一资源

以.开头
./:当期目录
../:后退一级目录

2.绝对路径:通过绝对路径可以确定唯一资源

以/开头
规则:
	给客户端浏览器使用,需要加虚拟目录
		*虚拟目录动态获取:request.getContextPath()
	给服务器使用,不需要加虚拟目录,例如转发时

服务器输出字符流到浏览器

//简单的形式,设置编码,在获取流之前设置
resonse.setContentType("text/html;chasrset=utf-8");
printWriter pw=response.getWriter();
pw.write("你好");

服务器输出字节流到浏览器

resonse.setContentType("text/html;chasrset=utf-8");
ServletOutputStream sos=response.getOutputStream();
sos.write("你好".getBytes("utf-8"));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值