美文网首页
02_request请求对象

02_request请求对象

作者: 渐进逾 | 来源:发表于2019-09-29 18:27 被阅读0次

HTTP协议介绍与查看方式

浏览器与服务器传输的数据格式要求:
使用http协议规范浏览器与服务器的传输数据格式

http协议介绍:

hypertext transaction protocol 超文本传输协议,HTTP是一个简单的请求-响应协议,它通常运行在TCP/IP通信基础之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

作用

规范浏览器与服务器之间的请求数据与响应数据的格式。

http协议数据查看方式

  1. 使用浏览器开发者工具F12查看(常用的,简单,对原生数据进行包装,但是不专业)
  2. 使用专业抓包工具软件Filter查看(了解,适合学习http协议原生数据格式)

请求数据介绍

http协议请求数据组成

image.png
tips:

请求数据组成几个部分?
请求行
请求头
请求体

get提交请求参数数据位于请求信息哪个部分中?
请求行

post提交请求参数数据位于请求信哪个部分中?
请求体

request对象介绍与作用

当浏览器提交请求数据给到服务器,服务器会创建一个对象接收所有请求数据,这个对象就是request

request对象体系结构
idea快捷键查看类关系
image.png
作用
  1. 可以获取所有的请求数据(请求行、请求头、请求体)
  2. request可以进行请求转发的页面跳转
  3. request是一个作用域对象(请求域)
request对象的作用

-获取请求数据
-服务器端的页面跳转
-操作服务器内存数据

request作用

获取请求数据1-请求行

常用api
image.png
代码实现
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "RowServlet", urlPatterns = "/RowServlet")
public class RowServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //目标:获取请求行数据并打印到控制台输出
        //请求行格式:提交数据请求方法+请求的url+使用的http协议版本

        //1.获取提交数据的请求方法【重点】
        String method = request.getMethod();

        //2.获取请求的url
        String url = request.getRequestURL().toString();

        //3.获取http协议版本
        String protocol = request.getProtocol();

        //4.扩展其他获取

        //4.1 获取当前资源部署目录的名字【重点】
        String contextPath = request.getContextPath();

        //4.2 获取客户端浏览器的ip地址
        String clientIP = request.getRemoteAddr();//客户端浏览器的ip地址:0:0:0:0:0:0:0:1
        //当使用localhost本地访问的时候,ip会返回0:0:0:0:0:0:0:1 代表本地ip地址,使用其他就返回真实ip地址

        System.out.println("获取提交数据的请求方法:"+method);
        System.out.println("获取请求的url:"+url);
        System.out.println("获取http协议版本:"+protocol);
        System.out.println("资源部署目录的名字:"+contextPath);
        System.out.println("客户端浏览器的ip地址:"+clientIP);

    }
}
Http协议版本介绍
image.png

获取请求数据2-请求头

常用api
image.png

请求头相关信息简单介绍

image.png

获取请求数据3-请求体

常用api
tips:

Servlet通过与html的action地址链接起来
image.png
获取请求参数数据核心方法:
request.getParameter(name) 获取对应一个value,返回String
request.getParameterValues(name) 获取对应一组value, 返回String[]
request.getParaemeterMap() 获取所有键值对Map集合数据,返回Map<String,String[]>

解决Post请求数据中文乱码

request.setCharacterEncoding("utf8");

tips:

request获取post提交中文数据为什么会乱码?如何解决?

request读取post请求的中文数据默认采用iso8859-1码表,不支持中文
设置request码表为utf-8

BeanUtils封装数据

如果客户端提交大量数据,服务器端一个一个获取是非常麻烦,需要使用工具类实现自动封装数据,第三方工具BeanUtils。

BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以将一个表单提交的所有数据封装到JavaBean中。

jar包下载地址:http://www.commons.apache.org/

image.png
BeanUtils工具类的api方法
image.png

请求转发页面跳转

前端跳转页面包含:

a标签超链接
form表单的提交
location.href操作浏览器地址栏

后端跳转页面有2种:

1.request请求转发跳转
2.response重定向跳转

请求转发跳转的api方法
request.getRequestDispatcher("/要跳转到的地址").forward(request, response);

tips:
request可以实现页面跳转,并且url没有变化

response对象重定向页面跳转

服务器进行页面跳转有2种方式:

request请求转发跳转

response重定向页面跳转

response重定向跳转的api方法
response.sendRedirect("/资源部署目录名字/资源路径");

tips:
response也可以实现跳转,url改变了

请求转换与重定向的区别

request请求转换页面跳转原理——


image.png

response重定向页面跳转原理——


image.png

转发:跳转前后的2个资源共享同一个request和response

重定向:跳转前后的2个资源不共享request和response

是一个作用域对象(请求域)

servlet作用域介绍
  • 作用域介绍

    就是服务器的内存对象,可以操作内存存储数据

  • 作用域对象一共有3个

请求域request

会话域session

上下文域servletContext

  • 作用域对象作用

实现动态资源之间传递数据,使用服务器内存域对象

作用域存储数据的api方法
image.png

tips:
1.域对象存储数据到服务器的内存中
2.request请求域的范围:
一次请求内,请求来到服务器创建request和respons对象,服务器响应完后request和response就会被销毁
3.域对象作用:
实现资源之间传递数据
4.什么时候使用重定向?什么时候使用转发?
果跳转前后2个页面传递数据使用请求转发,其他情况建议使用重定向

案例-登录功能-案例介绍与环境搭建

三层架构开发的好处——
1.分层开发,职责明确
dao,数据访问层,专门负责操作数据库增、删、改、查数据
service,处理业务逻辑,举例子:一个业务方法可以操作调用dao多个方法,实现操作多条sql语句
web,表现层,专门负责与用户浏览器交互
2.适合团队开发,三层架构将代码写到很多类中,适合多人一起开发。

相关文章

  • 02_request请求对象

    HTTP协议介绍与查看方式 浏览器与服务器传输的数据格式要求:使用http协议规范浏览器与服务器的传输数据格式 h...

  • 5 - laravel 基础 - 请求与响应

    获取请求/响应对象 请求对象 Request Object使用 依赖注入 的方式来获取请求对象 $request ...

  • 请求对象

  • OkHttp

    一、Ok get异步请求 ①获取ok对象 ②获取请求对象 ③获取call对象 ④call执行请求 二、Ok pos...

  • 高级思路

    一、OKHttp OK get 异步请求①获取ok对象②获取request对象③获取call对象④call执行请求...

  • 【3】数据筛选2 - requests

    目录 1.概述2.下载安装3.入门程序4.请求对象:请求方式5.请求对象:GET参数传递6.请求对象:POST参数...

  • Volley学习笔记

    1.Application设置请求队列 2.创建字符请求对象 3.创建图片请求对象,网络请求图片 普通下载图片* ...

  • TP5的请求对象与数据绑定.md

    1、请求变量与请求对象的关系? url为: 其中,name和lesson就是请求变量。请求变量就是请求对象处理的一...

  • Flask-请求与响应

    请求与响应 请求对象 在 Flask 中,请求信息被封装到 request 对象中 request常用属性 sch...

  • 2019-06-19

    request对象特点: 服务器在接收到请求后,会给此次请求创建一个request对象, 此对象中封存了此次请求相...

网友评论

      本文标题:02_request请求对象

      本文链接:https://www.haomeiwen.com/subject/nlvfectx.html