Http协议概述--resquest和response对象

request对象和response对象是由服务器创建的,我们只是使用并不创建
request对象是来 获取请求消息
response对象是来 设置响应消息

一、request对象

request继承结构
     ServletRequest(接口)-->HttpServletRequest(接口)-->RequestFacade 类(tomcat实现)

request功能
  • 获取请求消息数据
    • 获取请求行数据:
      这是一个GET请求方式的请求行:GET /day14/demo1?name=zhangsan HTTP/1.1
      • 获取请求方式 :String getMethod() -->上例得到结果:GET
      • 获取虚拟目录(常用)String getContextPath() -->上例得到结果:/day14
      • 获取Servlet路径: String getServletPath()-->上例得到结果:/demo1
      • 获取get方式请求参数:String getQueryString()-->上例得到结果:name=zhangsan
      • 获取请求URI(常用)(有两个方法)
        • String getRequestURI()-->上例得到结果:/day14/demo1
        • StringBuffer getRequestURL() -->上例得到结果 :http://localhost/day14/demo1
      • 获取协议及版本:String getProtocol()-->上例得到结果:HTTP/1.1
      • 获取客户机的IP地址:String getRemoteAddr()

    • 获取请求头数据:
      • 通过请求头的名称获取请求头的值(常用):String getHeader(String name)
      • 获取所有的请求头名称:Enumeration getHeaderNames()

    • 获取请求体数据:
      只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
      • 获取流对象
        • 获取字符输入流,只能操作字符数据:BufferedReader getReader()
        • 获取字节输入流,可以操作所有类型数据:ServletInputStream getInputStream()

  • 其他功能
      因为对于不同的请求方式,它们的请求参数所在位置不同,GET方式请求参数在请求行中,POST方式请求参数封装在请求体中,所以服务器在获取请求参数的时候,需要分别在doGet和doPost方法中写不同的逻辑代码来获取请求参数,比较麻烦,因此就有一种通用的获取请求参数的方法
    • 获取请求参数通用方式
      • 根据参数名称获取参数值:String getParameter(String name)
      • 根据参数名称获取参数值的数组(多选框):String[] getParameterValues(String name)
      • 获取所有请求的参数名称:Enumeration getParameterNames()
      • 获取所有参数的map集合:Map'<'String,String[]> getParameterMap()

    • 请求转发:一种在服务器内部的资源跳转方式
      1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
      2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest re, ServletResponse res)
      3. 注意:path是要跳转的资源的路径,
    • 获取ServletContext(后面博客会详细讲到): ServletContext getServletContext()


  • request的请求转发和资源共享以及response的重定向,它们各自的特点和区别会新开一篇博客


    二、response对象


    response功能:设置响应消息
    • 设置响应行(设置状态码):setStatus(int sc)
    • 设置响应头:setHeader(String name, String value)
    • 设置响应体:
        使用步骤
      1. 获取输出流
        • 字符输出流:PrintWriter getWriter()
        • 字节输出流:ServletOutputStream getOutputStream()
      2. 使用输出流,将数据输出到客户端浏览器

    发布了28 篇原创文章 · 获赞 1 · 访问量 2130

    猜你喜欢

    转载自blog.csdn.net/weixin_42387411/article/details/100526063