核心功能
请求分发(接受请求信息,把它分配到各个servlet里面去)
运行流程
//启动tomcat
//首先扫描所有.calss文件,根据路径拿到类信息,把注解信息单独拿出来,根据注解把一个个servlet挑出来存到map结构里 ”文件名“:“对应路径”
Socket... //进行轮询操作,拿到网络数据:字符串str
HttpServletRequest request = 字符串处理函数(str)
HttpServletResponse response = ....
DemoServlet ob = new DemoServlet();
ob.doGet(request,response);
String url = request.getHeader("Request URL");
"LoginServlet":"com.qcby.LoginServlet"
map.get(url);
//通过本地路径对目标servlet进行实例化:
"com.qcby.LoginServlet" -->class-->newinstance
//这就要用到反射了,因为访问的servlet具有不确定性
//所以使用反射可以动态生成各种类的实例
//生成实例之后,利用代理执行类中的doGet和doPost方法:
ss.invoke();
//执行完之后,将携带的数据发送给socket,由socket组装协议格式,组装完成之后向外界发送数据
//servlet框架是其他框架的基础成分,在servlet的基础上添加自己的内容,在servlet框架的基础上加入由一个Luyouservlet跳转到自己写的部分
相关内容
-
计算机靠网卡设备与外界交互 网卡把物理电信号转换为0 1信号,转换完毕后把数据交给端口
-
一台电脑端口最多能开2的16次方,六万多个 不会出现端口不够用的情况 因为端口开的过多内存会首先撑不住,崩溃
-
端口 :在逻辑上有六万多个 但在物理上是一块地方 电脑跟网络中的数据一定是通过端口交换 任意两个程序不能使用同一端口
一个端口最多只能属于一个独立的程序(进程级别) 两个线程不能同时使用一个端口 但可以一个线程拿到数据与多个线程共享
但进程不可以,进程无法实现数据共享 -
程序监听(轮询:每隔一段时间去看一次)端口拿到数据 tomcat有接受请求(轮询 while循环 )
-
socket套结字(功能:listen监听端口 read接受数据 发送数据)与网卡直接交互 发出去时帮我们包装上网络协议的一些信息和返回数据的作用
接受的时候帮我们去除网络协议信息 该线程始终执行(死循环)
main方法启动的线程称为主线程,内含对其他方法的调用。 -
多个网站在tomacat里面合成一个项目,实际上是一个线程,是调用关系 response里封装了socket写的方法
利用反射(获取类信息,对类信息进行实例化),tomcat知道要调用那个servlet 反射还能拿到注解信息 -
可以给类 方法 成员信息做注解,方便调用时确定调用的方法,成员信息