tomcat处理一个请求的详细流程:
protocolHandler负责生成endpoint和Http11ConnectionHandler
endpoint的acceptor线程负责处理连接请求,收到连接请求后交给worker线程处理,work线程调用Http11ConnectionHandler,Http11ConnectionHandler维护一个Http11Processor池,
在构造Http11Processor时将生成org.apache.coyote.Request和org.apache.coyote.Response对象。
Http11Processor使用InternalInputBuffer类来解析http协议,并将解析后的数据(请求头,分割行等)封装到org.apache.coyote.Request和org.apache.coyote.Response对象中,
之后将此两对象传给CoyoteAdapter.service(request, response)在该方法内部实现了org.apache.coyote.Request-->org.apache.catalina.connector.Request;
org.apache.coyote.Response-->org.apache.catalina.connector.Response的转换,接下来请求进入pipeline,pipeline中value的执行(调用value的invoke方法)顺序如下:
StandardEngineValve-->StandardHostValve-->StandardContextValve-->StandardWrapperValve-->ApplicationFilterChain.doFilter-->Servlet(HttpServlet).service
(由StandardWrapper创建的单实例——多线程共用),invoke方法的参数即为org.apache.catalina.connector.Request/Response。
如果是jsp则继续-->JspServletWrapper.service-->Compiler(如果没有被编译的话)-->装载具体编译后的servlet class file-->交给具体servlet的service方法-->通过out.write写入
html页面,事实上这个out是response.getWriter,所以也就将结果写入了response。
新建session:
Manager manager = context.getManager();
Session session = manager.createSession(null);
如何从服务器上下文查询数据:
Context context = server.getGlobalNamingContext();
UserDatabase database = (UserDatabase) context.lookup("UserDatabase");
分享到:
相关推荐
tomcat中server配置文件的结构,以及处理一个http请求的全过程
2. servlet容器 1. EndPoint组件:用于处理连接请求,也就是接收客户端发来的请求 2. Processor组件:用于应用层处理http请求,封
Tomcat初始化流程分析,Tomcat启动流程分析 Tomcat处理一次请求过程分析 servlet初始化流程
Tomcat启动流程分析 组件的生命周期管理 用Lifecycle管理启动、停止、关闭 Lifecycle接口预览 几个核心方法 Server中的init方法示例 为啥StandardServer没有init方法 LifecycleBase中的init与...
该文档大体的介绍了tomcat的工作原理。最主要的是阐述tomcat处理请求及回应请求的业务流程。
1. TOMCAT的组件介绍及处理请求的流程 2. tomcat管理 3. 提一下tomcat安全和java安全机制 4. java的类加载机制 5. tomcat的类加载机制 6. tomcat搭建集群环境
定义处理请求的功能类(UserServlet) 设置请求映射(配置映射关系) 使用SpringMVC技术开发web程序流程 创建web工程(Maven结构) 设置tomcat服务器,加载web工程(tomcat插件) 导入坐标(SpringMVC+Servlet) ...
mod_jk模块的典型工作流程是这样的:一个HTTP请求过来,mod_jk模块根据其URI选 择合适的worker来进行处理。如果是lb_worker(负载均衡的worker),就再根据各种条 件选择后台合适的ajp_worker(处理AJP协议的worker...
* 4)、来看请求地址和@RequestMapping标注的哪个匹配,来找到到底使用那个类的哪个方法来处理 * 5)、前端控制器找到了目标处理器类和目标方法,直接利用返回执行目标方法; * 6)、方法执行完成以后会有一个...
3,截取请求的url进行处理,判断是请求的静态页面还是servlet(自己编写的一个接口) 4,如果访问的是sevlet,则使用类加载器,根据configServlet.xml中配置的参数,查找对应的class,载入 5,最后执行方法. 6,可扩展...
SpringBoot 就像一条巨蟒,慢慢缠绕着我们,使我们麻痹。不得不承认,使用了 SpringBoot 确实提高了工作...但是,清楚 Tomcat 的工作原理和处理请求流程和分析 Spring 框架源码一样的重要。至少面试官特别喜欢问这些底
requestProcess.pdf-Tomcat请求处理流程序列图(2014.10.28-2014.10.29) 架构/-Tomcat服务器的架构结构和设计(2014.10.29-2014.10.29) server.xml-Tomcat容器配置文件(2014.10.29-) config /-Tomcat配置引用...
用户通过视图层发送请求到服务器,在服务器中请求被Controller接受,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller 3.2 源码 源码一 jsp+servlet+javaBean实现MVC 源码二 Struts+Hibernate...
企业网盘系统的使用者分为企业普通员工和企业管理员,所以进行的基本处理流程是不一样的。企业普通员工进入本系统前台主界面后看到的是首页数据大盘,系统右上角有用户的头像和系统公告通知。在首页顶部的位置有个...
在后台的数据的处理和数据的访问方面有着自己特定的逻辑处理和数据访问的模块,在前台接收到相关的请求时,第一时间响应到数据处理和数据访问模块之中,通过数据的调用和数据的处理,把最终的结果成功的反馈到成人...
1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求; 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做 ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框 架的集成很有帮助...
由于我们日常工作中都是在现有框架下...3.指出了微服务是如何实现提供外部服务的能力-通过创建Tomcat容器,绑定并监听服务端口,不断拉取请求并结合DispatchServlet的映射关系找到真正提供服务的方法,处理请求并返回。
在后台的数据的处理和数据的访问方面有着自己特定的逻辑处理和数据访问的模块,在前台接收到相关的请求时,第一时间响应到数据处理和数据访问模块之中,通过数据的调用和数据的处理,把最终的结果成功的反馈到成人...
在后台的数据的处理和数据的访问方面有着自己特定的逻辑处理和数据访问的模块,在前台接收到相关的请求时,第一时间响应到数据处理和数据访问模块之中,通过数据的调用和数据的处理,把最终的结果成功的反馈到成人...