以访问http://localhost/application/servlet1为例,简述整个请求的访问过程
- 浏览器帮助生成一个HTTP请求报文,传输到服务器
- 被监听着80端口号的Connector接收到,将请求报文解析成为request对象,同时生成一个response对象
- 将这两个对象传给engine,engine进一步挑选合适的host,将对象进行进一步下发
- host的职责就是来挑选一个合适的Context(形成 应用名------应用映射关系),将这两个对象进行进一步下发
- Context内部根据/servlet1寻找对应的servlet-class,此时先判断当前servlet是否已经有了一个对象(判断当前请求是否是第一次访问某个servlet),如果没有,则通过反射实例化一个对象出来;如果有,则直接执行后面的操作
- 紧接着执行该servlet的service方法,同时将这两个对象作为参数传递进去,service方法执行(service方法中可以读取request里面的数据,以及对response做出相应的响应)
- Connector读取response里面的数据,生成HTTP响应报文