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 ...
随机推荐
- 第二十三个知识点:写一个实现蒙哥马利算法的C程序
第二十三个知识点:写一个实现蒙哥马利算法的C程序 这次博客我将通过对蒙哥马利算法的一个实际的实现,来补充我们上周蒙哥马利算法的理论方面.这个用C语言实现的蒙哥马利算法,是为一个位数为64的计算机编写的 ...
- Azure Data Lake(一) 在NET Core 控制台中操作 Data Lake Storage
一,引言 Azure Data Lake Storage Gen2 是一组专用于大数据分析的功能,基于 Azure Blob Storage 构建的.Data Lake Storage Gen2 包含 ...
- Java初学者作业——使用switch结构实现一个简单的购物计划
返回本章节 返回作业目录 需求说明: 使用switch结构实现一个购物计划,计划为:星期一.星期三.星期五购买伊利牛奶和面包,星期二.星期四购买苹果和香蕉,星期六.星期日购买啤酒和周黑鸭. 实现思路: ...
- 20道JavaScript经典面试题
该篇文章整理了一些前端经典面试题,附带详解,涉及到JavaScript多方面知识点,满满都是干货-建议收藏阅读 前言 如果这篇文章有帮助到你,️关注+点赞️鼓励一下作者,文章公众号首发,关注 前端南玖 ...
- Java常用的几种设计模式
本来想写点spring相关的东西的,想来想去,先写点设计模式的东西吧 什么是设计模式?套用百度百科的话解释吧 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设 ...
- SQL Server数据库出现“无法访问数据库XXX(objectExplorer)”的解决办法
数据库版本为2008R2,服务器异常重启并重新挂载iscsi后,数据库出现"无法访问数据库XXX(objectExplorer)"问题. 输入SQL命令查看数据库状态 1 sele ...
- react中Fragment组件
什么是Fragment?在我们定义组件的时候return里最外层包裹的div往往不想渲染到页面,那么就要用到我们的Fragment组件了,具体使用如下: import React, { Compone ...
- redis 主从复制实现
Redis 主从复制的实现 安装redis 修改redis的配置文件 redis.conf ②开启daemonize yes ③Pid文件名字 ④指定端口 ⑤Log文件名字 ⑥Dump.rdb名字 在 ...
- 无聊的周末用Java写个扫雷小游戏
周末无聊,用Java写了一个扫雷程序,说起来,这个应该是在学校的时候,写会比较好玩,毕竟自己实现一个小游戏,还是比较好玩的.说实话,扫雷程序里面核心的东西,只有点击的时候,去触发更新数据这一步. Sw ...
- SSRF服务器端请求伪造漏洞基础
0x00 思考 1.什么是SSRF漏洞?2.SSRF漏洞的利用方式3.SSRF漏洞绕过4.SSRF漏洞加固 0x01 什么是SSRF漏洞 定义:SSRF漏洞,中文全称为服务端请求伪造漏洞,是一种由攻击 ...