里面好多if…else….
    只为解决第一次请求和第二次请求
    这里好多好多思路···
    什么时候做ServerHandler,,,里面的方法是在什么时候写?用来处理啥东西。。
    好多内容鸭!!

    server.properties—>存端口

    image.png

    服务器Server先启动,它等待着浏览器发送请求,进行对应的处理
    浏览器Browser对服务器Server发送一个【请求】,底层包含了http协议(字符串)
    例如:localhost:9999/index
    请求中包含了:URL(ip:port:name?param)
    请求之前,先做了这些事情:解析ip、port、请求内容
    服务器端启动后,创建了一个小线程ServerHandler
    负责处理: 1、读取请求
    2、解析请求,包装成request对象、response对象
    ┏━━━━━━ 3、找资源—->ServletController
    ┃ 4、将信息响应返回过去给浏览器


    ServerletController参考web.properties配置文件
    ┃ ┃
    找┃ ┃没
    到┃ ┃找
    了┃ ┃到
    ↓ ↓
    Controller 没找到资源(没有配置)
    控制层 没有对应可执行的service方法
    1.取值(request对象里的参数值reques.getParams)
    2.调用Service业务层的方法━━━→Service → 找 → Dao → 框架 → 数据库
    ↑ ↑ ↑ |
    ┗━━ ← ━━━┻←━━━┻←━━━━━━┛
    3.做响应
    ①write()方法是拼字符串,它直接回去浏览器
    ②sendRedirect(path)找view的文件,把文件里的内容(字符串)返回回去。

    4.解析String字符串并展示出来

    在我们每一次点击网页上面的按钮时,浏览器都向服务器发送了一次请求。
    服务器控制层ServerHandler在找内容的时候,
    找的是我们写的ServerletController控制层的内容,
    而Controller控制层又得找到业务逻辑层的Service、Dao、JDBC、ORM、MyBaits
    最后再操作数据库,一层一层得来,所以这里在开发的时候都是我们自己写的,
    当然Controller写完之后,要让服务器管理起来,还得需要一个Web配置文件,
    web配置文件里面的目的是为了一个请求名字、跟一个真实控制层类名对应的关系
    你把这个文件写好了就可以让服务器帮你管理了。
    至于服务器中间的ServletController它怎么管理的?
    它在服务器读取的时候,做一个加载机制,做了一个缓存,做了一个单例设计模式,
    都是中间Controller帮忙管理的。
    这里要理解的是request和response是从哪里来的,用来解决什么,应该怎么写。