• 07 手动 web server


    请求, 响应, (多线程响应)的 网络编程

    数据库服务器, 缓存服务器, web 服务器(请求&响应式) 等

    反射: 由用户来准备类模板, 用这个类模板来创建实例, (这里的类模板不是传统意义的通过 JVM 来准备的)

    Class clz = Class.forName("com.shs.Student")   // 这样就拿到类模板了. (这里不是 JVM 中的类模板), 参数是包名.类名(完整路径)

    com.shs.Student stu = (com.shs.Student) clz.getConstructor().newInstance();   // 动态创建对象

    解析 xml

    sax 解析: 流解析, 逐行读取 xml, 解析完就结束了.

    可以创建 Person 类, 有对应的属性(name, age), 同时可以创建一个 Person list, 来存储 Persons 

    class PersonHandler extends DefaultHandler {}

    DOM 解析: 将整个 XML 都 copy 到内存中, 需要用什么直接用.

    XML 主要用作路由, 通过request 找到需要实例化哪个对象. 这里的对象可以通过反射的机制来实例化.

    http协议

    Http 应用层协议, 底层实际上是 TCP 协议 

    请求

    1. 请求行: 方法(GET/POST), URI, 协议/版本

    2. 请求头: (Request Header)

    3. 请求正文: 一般是 Post 请求参数用的, 或者上传文件时的文件

    响应

    1. 状态行: 协议/版本 状态码
    2. 响应头:(Response Header)

    3. 响应正文:

    获取请求协议

    实际上是 Socket 编程

    使用 ServerSocket 建立与浏览器的连接, 获取请求协议

    InputStream

    手写响应协议

    StringBuilder content 可以不断的追加.  content.append

    OutputStream, BufferWriter

    封装 Response 和 Request

    通过类封装请求和返回的内容.

    返回时, 根据状态码, 来判断拼接的返回内容.

    Request 需要分解字符串, 把请求头, 内容啊 通通分解 (参数也要分解)

    引入 servlet

    servlet 就是服务器的小脚本.

    实际上还是一个 Socket server 编程, 只是在 Socket server 调用新的 servlet(负责生成response文本), 然后再由Socket server 返回.

    所以, 作为 web 编程, 我们只需要关注 servlet, 其他的都是由 web server 帮我们完成的。(只需要关注业务代码 servlet)

    使用 xml 来实例化不同的 servlet.

    高效分发器(多线程)

  • 相关阅读:
    Echarts 实现中国地图并轮播指定的地区?
    Linux安装Zookeeper
    初遇携程apollo配置中心
    eclipse安装lombok
    依赖layui form模块 复选框tree插件(拓展可根据属性单选还是多选,数据反选)
    centos7环境下mysql5.7的安装与配置
    中文算数验证码(加减乘除)
    获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址;
    jdk自带的MD5进行数据的加密与解密
    MyBatis-plus 代码生成器
  • 原文地址:https://www.cnblogs.com/moveofgod/p/12829993.html
Copyright © 2020-2023  润新知