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 ...
随机推荐
- Towards Deep Learning Models Resistant to Adversarial Attacks
目录 概 主要内容 Note Madry A, Makelov A, Schmidt L, et al. Towards Deep Learning Models Resistant to Adver ...
- 执行jar包指定main
java包中多个main,需要指定执行java -cp iot-device-sdk-java-0.0.5-SNAPSHOT.jar com.inspur.iot.client.sample.paho ...
- [特别篇] 记JZ冬令营(Finished)
1.16 走错班了, 去了全是大佬的1班, 然后灰溜溜滚回2班了. 去参加开营仪式. 然而昏昏欲睡... 实在太累了澡也没洗.. 群英云集, 多是感慨. 当时依依惜别和铮铮誓言, 在重逢中无语凝噎. ...
- Unity3D开发入门教程(二)—— Lua入门
五邑隐侠,本名关健昌,12年游戏生涯. 本教程以 Unity 3D + VS Code + C# + tolua 为例. 如果你还没有编程基础,建议你先学习一些编程基础.本文不是完全菜鸟教程,主要针对 ...
- vue 在实现关键字远程搜索时出现数据不准确的原因
实现通过输入关键字查询项目, 页面搜索规则框部分 js部分 之前通过在data中定义一个变量,然后在methods中filterFn方法获取当时输入的值去后台请求数据,然后把请求的数据存放在state ...
- spring boot 启动警告 WARN 15684 --- [ restartedMain] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources. 解决
添加一个配置文件config.properties ,即便是空的也是可以的
- spring security 在controller层 方法级别使用注解 @PreAuthorize("hasRole('ROLE_xxx')")设置权限拦截 ,无权限则返回403
1.前言 以前学习的时候使用权限的拦截,一般都是对路径进行拦截 ,要么用拦截器设置拦截信息,要么是在配置文件内设置拦截信息, spring security 支持使用注解的形式 ,写在方法和接口上拦截 ...
- layui 时间插件,change&&done,按照官网写法无效,解决方式!
摘抄自 hahei2020:https://blog.csdn.net/hahei2020/article/details/79285370 layui 时间插件, 当选择时间或时间发生改变后,按照官 ...
- SYCOJ2197三角形游戏
题目-三角形游戏 (shiyancang.cn) 对于任意的一个数字,把他拆分为n个数字,使得其逐层和为该数字. 首先n很小,所以很可能是搜索.DFS,n回选择. #include<bits/s ...
- JS定时器不可靠的原因及解决方案
前言 在工作中应用定时器的场景非常多,但你会发现有时候定时器好像并没有按照我们的预期去执行,比如我们常遇到的setTimeout(()=>{},0)它有时候并不是按我们预期的立马就执行.想要知道 ...