SpringMVC原理:
1.发起前端请求到前端控制器(DispatcherServlet),前端请求,请求HandlerMapping查找Handler,可以通过xml配置/注解进行查找。
2.处理器映射器HandlerMapping向前端控制器(DispatcherServlet)返回Handler。
3.前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行Handler.
4.Handler执行完成返回ModelAndView, 处理器适配器(HandlerAdapter)向前端控制器(DispatcherServlet)返回ModelAndView.
5. 前端控制器(DispatcherServlet)请求视图解析器(View resolver)进行视图解析,根据逻辑视图名解析成真正的视图(Jsp)
6. 视图解析器(View resolver)向 前端控制器(DispatcherServlet)返回View
7. 前端控制器(DispatcherServlet)进行视图渲染,视图渲染将模型数据(ModelAndView对象)填充到request域
8.前端控制器(DispatcherServlet)向用户响应结果
Struts2原理:
1. 发起一个http请求,会首先进入ActionContextCleanup(清空值栈等,但会留下自己的,比如session,Attribute等)
2. 进入过滤器filter,进入FilterDispatcher
3.进入ActionMapper,来判断此请求是否需要struts2处理,如果需要,那么由ActionProxy来接管,通过配置管理我们可以找到我们的struts.xml,然后进入真正做事的Action Invocation
4.依次穿过拦截器,进入action,从而根据返回的result选择我们要的页面,在拦截器的前半部分去值栈中取值通过标签展示在页面上,最后生成response返回。