ssm科普篇
springMVC执行步骤:
1、用户发送请求到前端控制器,前端控制器根据请求信息来决定选择页面控制器,并将请求委托给它
2、页面控制器收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,并进行验证,然后将命令对象委托给业务对象
处理;处理完后返回一个ModelAndView(模型数据和逻辑试图名)
3、前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染
4、前端控制器收回控制权,将响应返回给用户。
springMVC核心架构的主要流程
1、用户请求给DispatcherServlet前端控制器,前端控制器收到请求后委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制
2、DispatcherServlet前端控制器给HandlerMapping类控制器,类控制器将会把请求映射为HandlerExecutionChain对象(包含一个Handler处
理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,方便后续添加新的映射策略。
3、DispatcherServlet前端控制器给HandlerAdapter方法控制器,方法控制器将会处理器包装给适配器,从而支持多种类型的处理器,即适配器
设计模式的应用,从而很容易支持很多类型的处理器
4、HandlerAdapter方法控制器给处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用对应的处理器的处理方法,完成功能处理;
并返回一个ModelAndView对象(包含模型数据,逻辑视图名)
5、ModelAndView的逻辑视图名给ViewResolver视图控制器,ViewResolver将把逻辑视图名解析为具体的view,通过这种策略模式,也可以换成其他
视图技术。
6、将控制权返给DispatcherServlet,由DispatcherServlet返回响应给用户
在web.xml中配置view分发器
<servlet>
<servlet-name>xxx</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
配置HandlerMapping(页面控制器)
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
支持多种类型的页面控制器
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
viewResoler的配置
<bean class="org.springframework.web.servlet.view.InternalResouceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
Spring MVC四大核心接口
1、DispatcherServlet接口
前端控制器,所有的请求都需要经过它来进行统一分发处理。 在DispatcherServlet将请求分发给spring controller之前。需要借助于spring提供的
HandlerMapping定位具体的controller
2、HandlerMapping接口
请求到controller映射
3、HandlerAdapter接口
处理器给你处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的处理方法,并完成功能处理;返回一个ModelAndView对象
4、ViewResolver接口
在web应用中查找view对象,从而将相应结果渲染给用户
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?