Request与Response
前言
- request和response对象是由服务器创建的。我们来使用它们;
- request对象是来获取请求消息,response对象是来设置响应消息。
Request
定义
服务器进行创建,通过该对象进行获取数据。
继承体系
ServletRequest -- 接口
| 继承
HttpServletRequest -- 接口
| 实现
org.apache.catalina.connector.RequestFacade 类(tomcat)
常用方法
获取请求行数据 (GET /day14/demo1?name=zhangsan HTTP/1.1)
String getMethod():
获取请求方式-->GET;String getContextPath():
获取虚拟目录-->/day14;String getServletPath():
获取Servlet路径-->/demo1;String getServletPath():
获取Servlet路径-->/demo1;String getQueryString():
获取get方式请求参数-->/name=zhangsan;String getRequestURI():
获取请求URI(统一资源标识符)-->/day14/demo1;String getRequestURL():
获取请求URL(统一资源定位符)--> http://localhost/day14/demo1;String getProtocol():
获取协议及版本-->HTTP/1.1;String getRemoteAddr():
获取客户机的IP地址。
获取请求头数据
Enumeration<String> getHeaders(String var1):
通过请求头的名称获取请求头的值;Enumeration<String> getHeaderNames():
获取所有的请求头名称。
获取请求体数据(只适用于POST请求)
BufferedReader getReader():
获取字符输入流,只能操作字符数据;ServletInputStream getInputStream():
获取字节输入流,可以操作所有类型数据。
POST和GET通用方法
Map<String,String[]> getParameterMap():
获取所有参数的map集合。
中文乱码问题:
get方式:tomcat 8 已经将get方式乱码问题解决了;
post方式:会乱码,* 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8")。
其他方法
1: 请求转发
getRequestDispatcher(String path).forward(ServletRequest request,ServletResponse response);
特点:
(1). 浏览器地址栏路径不发生变化;
(2). 只能转发到当前服务器内部资源中;
(3). 转发是一次请求;
(4). 转发只需使用相对路径,而且不需要携带项目访问路径。
2: 共享数据对象及范围
(1): request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据。
- void setAttribute(String name,Object obj):存储数据;
- Object getAttitude(String name):通过键获取值;
- void removeAttribute(String name):通过键移除键值对。
(2):ServletContext域:服务器启动创建,服务器停止服务销毁。
- void setAttribute(String name,Object obj):存储数据;
- Object getAttitude(String name):通过键获取值;
- void removeAttribute(String name):通过键移除键值对。
Response
响应数据格式
- 响应行
- 组成:协议/版本 响应状态码 状态码描述
- 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。
- 状态码都是3位数字
- 分类:
- 1xx:服务器就收客户端消息,但没有接收完成,等待一段时间后,发送1xx多状态码
- 2xx: 成功。代表:200
- 3xx:重定向。代表:302(重定向)、304(访问缓存)
- 4xx: 客户端错误。
- 代表: 404(请求路径没有对应的资源)、405(请求方式没有对应的doxx方法)
- 5xx:服务端错误。代表:500(服务器内部出现异常)
- 响应头:
- 格式:头名称: 值
- 常见的响应头:
- Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
- Content-disposition:服务器告诉客户端以什么格式打开响应体数据
- 值:
- in-line:默认值,在当前页面内打开
- attachment;filename=xxx:以附件形式打开响应体。文件下载
- 响应空行
- 响应体:传输的数据
常用方法
public void sendRedirect(String location) throws IOException:
重定向;public void setHeader(String name, String value):
设置相应头;public void setStatus(int sc):
设置状态码;public PrintWriter getWriter() throws IOException:
获取字符输出流;public ServletOutputStream getOutputStream() throws IOException:
获取字节输出流;public void setContentType(String type):
设置编码,是在获取流之前设置。- 重定向特点:
- 地址栏发生变化;
- 重定向可以访问其他站点(服务器)的资源;
- 重定向是两次请求。不能使用request对象来共享数据。
相对路径: ./:当前目录, ../:后退一级目录
绝对路径: 以/开头的路径
转发服务:给服务器使用,不需要加虚拟目录(项目名)
重定向服务:给浏览器使用,需要加虚拟目录(项目名)
Request与Response的更多相关文章
- Request 和 Response 原理
* Request 和 Response 原理: * request对象和response对象由服务器创建,我们只需要在service方法中使用这两个对象即可 * 继承体系结构: ...
- Request 、Response 与Server的使用
纯属记录总结,以下图片都是来自 ASP.NET笔记之 Request .Response 与Server的使用 Request Response Server 关于Server.MapPath 方法看 ...
- request 和response
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...
- Request和Response对象
Request 和 Response 对象起到了服务器与客户机之间的信息传递作用.Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏 ...
- Java 中的 request 和response 理解
request和response(请求和响应) 1.当Web容器收到客户端的发送过来http请求,会针对每一次请求,分别创建一个用于代表此次请求的HttpServletRequest对象(reque ...
- 【转】request和response的页面跳转传参
下面是一位园友的文章: jsp或Servlet都会用到页面跳转,可以用 request.getRequestDispatcher("p3.jsp").forward(request ...
- LoadRunner中取Request、Response
LoadRunner中取Request.Response LoadRunner两个“内置变量”: 1.REQUEST,用于提取完整的请求头信息. 2.RESPONSE,用于提取完整的响应头信息. 响应 ...
- Spring mvc中使用request和response
@ResponseBody @RequestMapping(value="/ip", method=RequestMethod.GET) public String getIP(H ...
- springMVC获取request和response
转载:http://blog.sina.com.cn/s/blog_7085382f0102v9jg.html 1.参数 例如: @RequestMapping("/test") ...
- ASP.NET中的Request、Response、Server对象
Request对象 Response.Write(Request.ApplicationPath) //应用根路径 Request.AppRelativeCurrentExecutionFilePat ...
随机推荐
- vue安装使用v-chart时报错解决方案
npm i v-charts echarts -S 1.在main.js中使用报以下错 liquidFill echarts/lib/visual/dataColor 找不到 出现此原因是因为版本问题 ...
- 编写Java程序,编写自定义异常类封装将棋子落在格子中已有棋子的异常
返回本章节 返回作业目录 需求说明: 完善控制台版五子棋,判断用户所下棋子的位置,是否已经存在棋子,如果已经存在,则抛出用户自定义异常,提示用户该位置已经有棋子. 实现思路: 创建用户自定义异常类Go ...
- 论文翻译:2020_Attention Wave-U-Net for Acoustic Echo Cancellation
论文地址:http://www.interspeech2020.org/uploadfile/pdf/Thu-1-10-10.pdf Attention Wave-U-Net 的回声消除 摘要 提出了 ...
- Kafka基础教程(一):认识Kafka
Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,吞吐速率非常快,可以作为Hadoop的日志收集.Kafka是一个完全的分布式系统,这一点依赖于Zookeeper ...
- Lombok 安装配置及使用方法
pom.xml 引入依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <!--Feb 0 ...
- SpringMVC拦截器的应用
一.作用 好文章参考:https://www.cnblogs.com/panxuejun/p/7715917.html 对请求进行预处理和后处理: 使用场景: 登录验证,判断用户是否登录 权限验证,判 ...
- nuxt 项目安装及环境配置
babel篇 在package.json中添加--exec babel-node 如果需要编译es6,我们需要设置presets包含es2015,也就是预先加载es6编译的模块. 如果需要编译es7, ...
- 利用python绘制分析路易斯安那州巴吞鲁日市的人口密度格局
前言 数据来源于王法辉教授的GIS和数量方法,以后有空,我会利用python来实现里面的案例,这里向王法辉教授致敬. 绘制普查人口密度格局 使用属性查询提取区边界 import numpy as np ...
- 函数实现将 DataFrame 数据直接划分为测试集训练集
虽然 Scikit-Learn 有可以划分数据集的函数 train_test_split ,但在有些特殊情况我们只希望它将 DataFrame 数据直接划分为 train, test 而不是像 tr ...
- MySQL注入点写webshell的五种方式
0x00 写数据的前提 1,在mysql的配置文件 my.ini 中,secure_file_priv="c:/wamp64/tmp" 被注释 或者 `secure_file_pr ...