ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Servlset进阶

2021-12-29 00:01:02  阅读:145  来源: 互联网

标签:HTTP 进阶 Servlset resp query POST string 请求


Servlet运行的基本原理

  1. Tomcat = HTTP服务器 (对接浏览器 ) + Servlet容器(对接web应用)
  2. 层级关系
    在这里插入图片描述
  3. 整体架构
    在这里插入图片描述Tomcat的工作:
    (1)通过网络读取并解析HTTP请求
    (2)判断请求动态 or静态资源
    (3)动态资源找到对应 Servlet对象去处理,找不到404静态资源找到路径下对应的文件,找不到404
    (4)动态资源,明确HTTP的方法是什么,根据不同的方法,调用doGet / doPost
    (5)【web 应用的职责】负责根据请求内容填充响应对象
    (6)根据响应对象,组装HTTP响应数据
    (7)通过网路把响应发送给浏览器
    时序图
    在这里插入图片描述

Servlet的使用

  1. 读取http请求的内容:请求方法、资源路径、请求头
  2. 发送响应
    (1)设置状态码(不修改就是200)resp.setStatus(200)
    (2)设置响应头(Content-Type)
    resp.setCharacterEncoding(“utf-8”);
    resp.setContentType(…); 【text/plain; text/html; text/css; application/javascript;application/json】
    (3) 发送正文,通过resp.getWriter()----- 【writer.print(…); writer.printIn(…); writer.printf(…);】
  3. 获取浏览器(用户)提交的参数
    (1)GET方法获取(参数来自于URL的query string 部分)请求方式不同,得到内容不同! ------【?k1=v1&k2=v2&k3=v3】
    在这里插入图片描述
    【动态资源】URL不动,代码不动请求方式不同,得到内容不同!
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述多组打印,打印出来是数组
    在这里插入图片描述
    在这里插入图片描述
    通过POST 发送的参数(特质form表单发送)
    Content-Type: application/x-www-form-urlencoded
    1. 来自query string
    2. 请求体
      在这里插入图片描述
      HTTP协议规定的请求的默认编码不是utf-8的,所以通过utf-8发送中文是不对的(乱码)
      我们需要在代码中指定请求的字符集编码
        //通过req设置请求的字符集编码
        req.setCharacterEncoding("utf-8");
        //通过resp设置相应的字符集编码
        resp.setCharacterEncoding("utf-8");
  1. 关联数据库操作(用户表)
    接口(展示用户列表):< table>
    (1)引入jdbc依赖
    (2)创建库,表;添加初始数据
    在这里插入图片描述
    html是动态拼接出来的,其中数据来自数据库
    (3)使用结构化的方式进行输出,结构化的方式很多,结构化实际上是对象序列化的一种
    在这里插入图片描述
    JSON(JavaScript Object Notation)JS对象格式
{
"key1":"value",
"key2":"value"
}
[
"item1","item2"  //数组
]
1  1.0
true  false

userList=>JSON

[
  {
    "uid":1,
    "name":"小A,
    "age":18
  },
  {
    ...
  },
  ...
]

我们没有自己拼接,很容易出错,直接使用Java中的第三方库来完成该工作

jackson【推荐:Spring 中默认使用的jackson】
gson【来自google】
fast-json【来自阿里】不太推荐,bug比较多

GET vs POST

网络的资料中提到:

  1. GET的参数是通过URL提交(指的就是query string) ; POST的参数是通过请求体提交
    不严谨:
    (1)假设了一定form表单的提交场景
    (2)get的只能放在query string 中,但post既可以在query string 中,也可以在请求体中
  2. GET能提交的参数有长度限制,POST没有
    不严谨:假设了URL的长度有限制(标准中没有规定长度限制,不同浏览器或者web服务器确实有长度限制)
  3. POST 比 GET安全
    不严谨: POST的参数放在请求体中,不至于一眼就看到,但通过抓包工具(开发者工具也算)都可以看到,应该用HTTPS才安全

标签:HTTP,进阶,Servlset,resp,query,POST,string,请求
来源: https://blog.csdn.net/qq_57574258/article/details/122201941

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有