里面好多if…else….
只为解决第一次请求和第二次请求
这里好多好多思路···
什么时候做ServerHandler,,,里面的方法是在什么时候写?用来处理啥东西。。
好多内容鸭!!
server.properties—>存端口
服务器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是从哪里来的,用来解决什么,应该怎么写。