JavaWeb-Http/转发与重定向

目录

一、http协议

1.1 请求

1.2 响应 

1.3 媒体类型

二、HttpServletRequest 类

2.1 常用方法

2.2 编码设置

三、HttpServletResponse 类

3.1 两个输出流

3.2 响应乱码解决

四、 请求转发与重定向


一、http协议

    1) Http 称之为 超文本传输协议
    2) Http是无状态
    3) Http请求响应包含两个部分:请求响应 

1.1 请求

-请求

        包含三个部分: 1.请求行 ; 2.请求消息头 ; 3.请求主体
        1)请求行包含是三个信息:

                1. 请求的方式 ; 2.请求的URL ; 3.请求的协议


        2)请求消息头中包含了很多客户端需要告诉服务器的信息,比如:

                浏览器型号版本能接收的内容类型客户端发的内容类型内容的长度


        3)请求体,三种情况
          get方式,没有请求体,但是有一个queryString
          post方式,有请求体,form data


          json格式,有请求体,request payload

HTTP1.1中共定义了八种请求方式

  • GET:从服务器端获取数据
  • POST:将数据保存到服务器端
  • PUT:命令服务器对数据执行更新
  • DELETE:命令服务器删除数据
  • HEAD
  • CONNECT
  • OPTIONS
  • TRACE

1.2 响应 

  - 响应
        响应也包含三部分: 1. 响应行 ; 2.响应头 ; 3.响应体
        1)响应行包含三个信息:1.协议 2.响应状态码(200) 3.响应状态(ok)

 


        2)响应头:包含了服务器的信息;服务器发送给浏览器的信息(内容的媒体类型、编码、内容长度等)

 
        3)响应体:服务器返回的数据主体,有可能是各种数据类型

1.3 媒体类型

        HTTP协议中的MIME类型

        为了让用户通过浏览器和服务器端交互的过程中有更好、更丰富的体验,HTTP协议需要支持丰富的数据类型

        MIME类型定义参考:

        通过查看Tomcat解压目录下conf/web.xml配置文件,了解HTTP协议中定义的MIME类型:

<mime-mapping>
	<extension>mp4</extension>
	<mime-type>video/mp4</mime-type>
</mime-mapping>
<mime-mapping>
	<extension>doc</extension>
	<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
	<extension>json</extension>
	<mime-type>application/json</mime-type>
</mime-mapping>
<mime-mapping>
	<extension>html</extension>
	<mime-type>text/html</mime-type>
</mime-mapping>

从上面的例子中可以看出:MIME的基本格式是

        大类/具体类型

MIME类型在HTTP报文中对应的是内容类型:Content-type

二、HttpServletRequest

  • HttpServletRequest 类有什么作用

        每次只要有请求进入 Tomcat 服务器, Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。然后传递到 service 方法( doGet 和 doPost) 中给我们使用。 我们可以通过 HttpServletRequest 对象, 获取到所有请求的信息

2.1 常用方法

i. getRequestURI()                             获取请求的资源路径

ii. getRequestURL()                           获取请求的统一资源定位符(绝对路径)

iii. getRemoteHost()                         获取客户端的 ip 地址

iv. getHeader()                                 获取请求头

v. getParameter("String str")              获取请求的参数

vi. getParameterValues()                  获取请求的参数(多个值的时候使用)

vii. getMethod()                                获取请求的方式 GET 或 POST

viii. setAttribute(key, value);                设置域数据

ix. getAttribute(key);                            获取域数据

x. getRequestDispatcher()                   获取请求转发对象

2.2 编码设置

  tomcat8之前,设置编码:
      1)get请求方式:
        //get方式目前不需要设置编码(基于tomcat8)

      2)post请求方式:

//tomcat8开始,设置编码,只需要针对post方式
req.setCharacterEncoding("UTF-8");


    注意:
        需要注意的是,设置编码(post)这一句代码必须在所有的获取参数动作之前

三、HttpServletResponse

  • HttpServletResponse 类的作用

        HttpServletResponse 类和 HttpServletRequest 类一样。 每次请求进来, Tomcat 服务器都会创建一个 Response 对象传递给 Servlet 程序去使用。 HttpServletRequest 表示请求过来的信息, HttpServletResponse 表示所有响应的信息,我们如果需要设置返回给客户端的信息, 都可以通过 HttpServletResponse 对象来进行设置。

3.1 两个输出流

        getOutputStream();-字节流-常用于下载(传递二进制数据)

        getWriter();-字符流-常用于回传字符串(常用)

        注:两个流同时只能使用一个

3.2 响应乱码解决

 // 它会同时设置服务器和客户端都使用 UTF-8 字符集, 还设置了响应头

 // 此方法一定要在获取流对象之前调用才有效

 resp.setContentType("text/html; charset=UTF-8");

四、 请求转发与重定向


    1) 服务器内部转发 : request.getRequestDispatcher("...").forward(request,response);
      - 一次请求响应的过程,对于客户端而言,内部经过了多少次转发,客户端不知道的
      - 地址栏没有变化


    2) 客户端重定向response.sendRedirect("....");
      - 两次请求响应的过程。客户端肯定知道请求URL有变化
      - 地址栏有变化

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值