• Java_Servlet处理请求流程


    1、servlet如何接收请求参数

    从request对象中根据key获取value值

    1)一个key对应一个value值

    String value = request.getParameter("key");

    2)一个key对应多个value值

    String[] values = request.getParameterValues("key");

    2、前端get请求和post请求方式

    1>请求参数存放位置 get请求是将请求参数拼接在url请求地址后面, 会显示在浏览器地址栏中 格式:url?key1=value1&key2=value2... post请求将请求参数放在请求数据包的实体部分, 在浏览器地址栏中不会显示

    2>安全性 get请求不安全 post请求相对安全

    3>是否适合大数据量的提交 get不适合大数量的提交,每个不同的浏览器 对url的长度都有一定的限制 post请求适合大数量的提交,理论上对数据量 大小没有限制

    4>get请求和post请求 get请求:

    1)浏览器地址栏直接输入地址

    2)点击页面上超链接

    3)带有src属性的html标签,在页面加载时 会自动向src中服务器地址发送请求

    4)表单的默认提交方式

    5)ajax发送get请求 post请求

    1)表单的method改为post

    2)ajax发送post请求

    3、中文乱码解决

    1>post请求中文乱码 原因:前端浏览器按照UTF-8格式对字符进行编码, 到达服务器之后,服务器默认按照ISO-8859-1 方式来进行解码 解决:在request.getParameter()之前调用 request.setCharacterEncoding("UTF-8") 设置服务器端的解码方式

    2>响应中文乱码 原因:服务器在返回中文时,默认按照ISO-8859-1 方式对中文进行编码,到达浏览器后,浏览器 按照utf-8方式进行解码 解决:在response.getWriter()之前调用 response.setContentType("text/html;charset=UTF-8") 告诉前端浏览器返回的数据类型和解码方式 mimetype:媒体类型格式 一般用于表示一个资源类型 格式:大类型/小类型 image/png image/jpg text/css

    4、错误页面 404 /404.html

    5、servlet执行原理

    1>浏览器依据ip和端口号与服务器之间建立连接

    2>浏览器打包请求数据包,发送给服务器

    3>服务器接收并解析请求数据包,同时创建 request和response两个对象,并将请求数据包中 所有数据存入到request对象中

    4>服务器再依据请求路径url和web.xml配置找到 或创建servlet对象(单例),并将事先创建的 request和response两个对象传入到servlet

    5>servlet从request中取出请求数据并进行处理, 将处理结果存入到response对象中

    6>服务器从response对象中取出处理结果,并打包 成响应数据包,给前端浏览器返回

    7>浏览器和服务器之间断开连接

    8>浏览器解析响应数据包,取出响应内容,并对 浏览器页面进行渲染

    6、Http请求

    1>Http协议概念 HyperText Transfer Protocal 超文本传输协议,是基于TCP之上的 应用层协议,主要用于规定浏览器与 服务器之间进行超文本传输的数据格式(数据包)

    2>Http协议特点 短连接:Http会为浏览器的每一次请求 都建立一个连接,响应完成后连接断开, 下次请求需要重新建立连接,目的是为了 节省服务器端的资源,可以给更多的客户端 来提供服务 3>Http数据包

    1)请求数据包

    1>请求行 Request Line

    1.1>请求方式(GET/POST)

    1.2>请求路径(GET请求还包含请求参数)

    1.3>请求协议类型与版本号 GET /web02/contact.html HTTP/1.1 GET /web02/contact?name=zhangsan&age=123&sex=M&province=shanxi HTTP/1.1 POST /web02/contact HTTP/1.1

    2>请求消息头 Request Headers 主要定义浏览器与服务器之间的通讯规则, 浏览器想要告诉服务器的一些信息 消息头格式key:value 获取请求消息头:request.getHeader();

    3>请求实体 Request Entity 包含浏览器向服务器提交的请求参数, 只有post请求有请求实体,get请求没有

    2)响应数据包

    1>响应行 Response Line

    1.1>协议类型与版本号

    1.2>响应状态码

    1.3>状态码描述 HTTP/1.1 200 OK HTTP/1.1 404 Not Found HTTP/1.1 500 Internal Server Error 2>响应消息头 Response Headers 主要包含服务器想要告诉浏览器的一些相关信息 自定义消息头(下载或解决跨域): response.setHeader() 设置或覆盖消息头 response.addHeader() 设置或追加消息头

    3>响应实体 Response Entity 服务器处理完结果,给浏览器返回的具体数据内容, 浏览器可以直接显示在页面上 ems员工管理系统

  • 相关阅读:
    Java多线程(二) 线程池
    密码学技术总结
    HTML5之drawImage函数
    0基础学习PyFlink——用户自定义函数之UDF
    socket报错:bind:address already in use
    阿里云RDS关系型数据库详细介绍_多版本数据库说明
    8种结构型设计模式对比
    滑动窗口滤波
    tf和pytorch每轮epoch显示输出的auc是如何计算的
    利用PaddleDetection 训练自定义COCO数据集进行目标检测
  • 原文地址:https://blog.csdn.net/m0_72254454/article/details/126678947