概述
Request和Response概述
request:获取请求数据
·浏览器向后台服务器(Tomcat)发送HTTP请求
·HTTP的请求中会包含很多请求数据(请求行+请求头+请求体)
·后台服务器就会对HTTP中的数据进行解析并且把解析结果存入一个对象(request对象)中
·相关参数我们可以从request对象中获得,以及去进行后续操作
response:设置响应数据
·业务处理完之后,后台会给前端返回业务处理的结果即响应数据
·把响应数据会封装到response对象中
·服务器会解析response对象,按照(响应行+响应头+响应体)格式拼接结果
·浏览器最终解析结果,把内容展示在浏览器给用户浏览
Request对象
Request继承体系
ServletRequest–>HttpServletRequest–>RequestFacade
Request获取请求数据
获取请求行数据
获取请求方式:String getMethod()
获取虚拟目录(项目访问路径):String getContextPath()
获取URL(统一资源定位符):StringBuffer getRequestURL()
获取URI(统一资源标识符):String getRequestURI()
获取请求参数(GET方式):String getQueryString()
获取请求头数据
格式为key:value
所以根据请求头名称获取对应值:String getHeader(String name)
获取请求体数据
浏览器在发送GET请求的数据没有请求体
获取字节输入流:ServletInputStream getInputStream()
获取字符输入流(纯文本):BufferedReader getReader()
BufferedReader流是通过request对象来获取的,当请求完成后request对象就会被销毁,request对象被销毁后,BufferedReader流就会自动关闭,所以此处就不需要手动关闭流了。
获取请求参数
GET方式:String getQueryString()
POST方式:BufferedReader getReader();
请求参数中文乱码:
POST:
- 分析出现中文乱码的原因:
- POST的请求参数是通过request的getReader()来获取流中的数据
- TOMCAT在获取流的时候采用的编码是ISO-8859-1
- ISO-8859-1编码是不支持中文的,所以会出现乱码
- 解决方案:
- 页面设置的编码格式为UTF-8
- 把TOMCAT在获取流数据之前的编码设置为UTF-8
- 通过request.setCharacterEncoding(“UTF-8”)设置编码,UTF-8也可以写成小写
GET:
- GET请求获取请求参数的方式是request.getQueryString()
- POST请求获取请求参数的方式是request.getReader()
- request.setCharacterEncoding(“utf-8”)是设置request处理流的编码
- getQueryString方法并没有通过流的方式获取数据
请求转发
req.getRequestDispatcher(“资源B路径”).forward(req,resp);
Response对象
响应头
设置响应状态码:void setStatus(int sc);
设置响应头键值对:void setHeader(String name,String value);
获取字符输出流:PrintWriter getWriter();
获取字节输出流:ServletOutputStream getOutputStream();
请求重定向(redirect)
重定向的实现方式:
resp.setStatus(302);
resp.setHeader(“location”,“资源B的访问路径”);
简化:resposne.sendRedirect(“/request-demo/resp2”)
路径问题
- 浏览器使用:需要加虚拟目录(项目访问路径)
- 服务端使用:不需要加虚拟目录
如果通过Tomcat插件配置了项目的访问路径,重定向的时候借助getContextPath()方法动态获取虚拟目录
响应字符数据
- 通过Response对象获取字符输出流: PrintWriter writer = resp.getWriter();
- 通过字符输出流写数据: writer.write(“aaa”);
一次请求响应结束后,response对象就会被销毁掉,所以不要手动关闭流。
设置响应的数据格式及数据的编码
response.setContentType(“text/html;charset=utf-8”);
writer.write(“你好”);
响应字节数据
- 通过Response对象获取字节输出流:ServletOutputStream outputStream = resp.getOutputStream();
- 通过字节输出流写数据: outputStream.write(字节数据);
返回图片到浏览器
//pom依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependenct>
-------------------------------------------------
//工具类方法
//fis:输入流
//os:输出流
IOUtils.copy(fis,os);
最后
以上就是活泼灰狼为你收集整理的Request和ResponseRequest和Response概述Request对象Response对象的全部内容,希望文章能够帮你解决Request和ResponseRequest和Response概述Request对象Response对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复