前言

  1. request和response对象是由服务器创建的。我们来使用它们;
  2. 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

响应数据格式

  1. 响应行

    1. 组成:协议/版本 响应状态码 状态码描述
    2. 响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。
      1. 状态码都是3位数字
      2. 分类:
        1. 1xx:服务器就收客户端消息,但没有接收完成,等待一段时间后,发送1xx多状态码
        2. 2xx: 成功。代表:200
        3. 3xx:重定向。代表:302(重定向)、304(访问缓存)
        4. 4xx: 客户端错误。
          • 代表: 404(请求路径没有对应的资源)、405(请求方式没有对应的doxx方法)
        5. 5xx:服务端错误。代表:500(服务器内部出现异常)
  2. 响应头:
    1. 格式:头名称: 值
    2. 常见的响应头:
      1. Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
      2. Content-disposition:服务器告诉客户端以什么格式打开响应体数据
        • 值:
        • in-line:默认值,在当前页面内打开
        • attachment;filename=xxx:以附件形式打开响应体。文件下载
    3. 响应空行
    4. 响应体:传输的数据

常用方法

  • 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):设置编码,是在获取流之前设置。
  • 重定向特点:
    1. 地址栏发生变化;
    2. 重定向可以访问其他站点(服务器)的资源;
    3. 重定向是两次请求。不能使用request对象来共享数据。

相对路径: ./:当前目录, ../:后退一级目录

绝对路径: 以/开头的路径

转发服务:给服务器使用,不需要加虚拟目录(项目名)

重定向服务:给浏览器使用,需要加虚拟目录(项目名)

Request与Response的更多相关文章

  1. Request 和 Response 原理

    * Request 和 Response 原理:     * request对象和response对象由服务器创建,我们只需要在service方法中使用这两个对象即可        * 继承体系结构: ...

  2. Request 、Response 与Server的使用

    纯属记录总结,以下图片都是来自 ASP.NET笔记之 Request .Response 与Server的使用 Request Response Server 关于Server.MapPath 方法看 ...

  3. request 和response

    当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...

  4. Request和Response对象

    Request 和 Response 对象起到了服务器与客户机之间的信息传递作用.Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏 ...

  5. Java 中的 request 和response 理解

    request和response(请求和响应)  1.当Web容器收到客户端的发送过来http请求,会针对每一次请求,分别创建一个用于代表此次请求的HttpServletRequest对象(reque ...

  6. 【转】request和response的页面跳转传参

    下面是一位园友的文章: jsp或Servlet都会用到页面跳转,可以用 request.getRequestDispatcher("p3.jsp").forward(request ...

  7. LoadRunner中取Request、Response

    LoadRunner中取Request.Response LoadRunner两个“内置变量”: 1.REQUEST,用于提取完整的请求头信息. 2.RESPONSE,用于提取完整的响应头信息. 响应 ...

  8. Spring mvc中使用request和response

    @ResponseBody @RequestMapping(value="/ip", method=RequestMethod.GET) public String getIP(H ...

  9. springMVC获取request和response

    转载:http://blog.sina.com.cn/s/blog_7085382f0102v9jg.html 1.参数 例如: @RequestMapping("/test") ...

  10. ASP.NET中的Request、Response、Server对象

    Request对象 Response.Write(Request.ApplicationPath) //应用根路径 Request.AppRelativeCurrentExecutionFilePat ...

随机推荐

  1. 【LeetCode】剑指 Offer 04. 二维数组中的查找

    二维数组查找:线性查找法 有二维数组: [  [1,   4,  7, 11, 15],  [2,   5,  8, 12, 19],  [3,   6,  9, 16, 22],  [10, 13, ...

  2. 第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法

    第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-45-de ...

  3. 「算法笔记」FHQ-Treap

    右转→https://www.cnblogs.com/mytqwqq/p/15057231.html 下面放个板子 (禁止莱莱白嫖板子) P3369 [模板]普通平衡树 #include<bit ...

  4. Golang项目的配置管理——Viper简易入门配置

    Golang项目的配置管理--Viper简易入门配置 What is Viper? From:https://github.com/spf13/viper Viper is a complete co ...

  5. [云原生]Kubernetes - 集群搭建(第2章)

    目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...

  6. Java EE数据持久化框架 • 【第5章 MyBatis代码生成器和缓存配置】

    全部章节   >>>> 本章目录 5.1 配置MyBatis Generator 5.1.1 MyBatis Generator介绍 5.1.2 MyBatis Generat ...

  7. Office - 0x4004F00C解决方法

    之前用HEU_KMS激活了180天的office 2013(专业版),今天打开突然报错0x4004F00C 大致意思就是提示你:office还有几天将要过期,到时候只能查看文档.表格.ppt,而不能编 ...

  8. SpringCloud创建Config Client通过Eureka访问Config

    1.说明 本文详细介绍配置中心客户端使用方法, 即Config Client到Config Server读取配置. 读取配置的方式有两种, 第一种是直接配置Configer Server的URL, 第 ...

  9. STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解)

    介绍 FwLib_STC8 是一个针对STC8G, STC8H系列MCU的C语言封装库, 适用于基于这些MCU的快速原型验证. 项目地址: Gitee FwLib_STC8 镜像地址: GitHub ...

  10. influxdb安装与基本配置

    一.Influxdb下载 本文中使用的环境是centos7.3 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.6.x86_ ...