当前位置: 首页 > news >正文

SpirngMVC执行原理--自学版

  1. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心,用户发出请求,DispatcherServlet接收请求并拦截请求
  2. HandlerMapper为处理器映射。DispatcherServlet调用。HandlerMapping根据请求url查找Handler
  3. HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器。
  4. HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射
  5. HandlerAdapter表示处理器适配器,按照特定的规则去执行Handler
  6. Handler让具体的Controller执行
  7. Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView
  8. HnadlerAdapter 将视图逻辑名或模型传递给DispatcherServlet
  9. DispatcherServlet调用视图解析器来解析HandlerAdapter传递的逻辑视图名
  10. 视图解析器将解析的逻辑视图名传给DispatcherServlet
  11. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图
  12. 最终视图呈现给用户

SSM=javaweb做项目
Spring =IOC +AOP

在写项目的过程中,注意检查是否引入mvc依赖,以及两个约束文件
在这里插入图片描述
注意记得DispatcherServlet要绑定SpringMVC的配置文件

在编写Springmvc的配置文件时,【三个很重要的部分】

  • 添加处理器映射器 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  • 添加处理器适配器<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  • 添加视图解析器 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean>[其他模板引擎 thymeleaf]

注意BeanNameHandlerMapping 这个处理器需要根据bean的名字来找,所以要进行手动配置

以下使用注解开发Springmvc 保留视图解析器 添加自动扫描包,让注解生效,由IOC容器进行统一管理

 ***<!--自动扫描包,让指定包下的注解生效,由IoC容器统一管理  -->***<context:component-scan base-package="com.demo.Controller"/><!--设置不然Springmvc处理静态资源 --><mvc:default-servlet-handler/><!--支持mvc注解驱动 在Springmvc中一般**采用@RequestMapping注解来完成映射关系**要想使该注解生效,必须向上下文中注册@DefaultAnnotationHandlerMapping和一个AnnotationMethodHandlerAdapter实例让这两个实例分别在类级别和方法级别处理   而innotation-driven配置帮助我们自动完成上述两个实例的注入--><mvc:annotation-driven/><!--视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="WEB-INF/jsp/"></property><property name="suffix" value=".jsp"></property></bean>

@Controller是为了让Spring IOC容器初始化时自动扫描到

主要实现步骤:

  • 编写web.xml,注册DispatcherServlet
  • 编写springmvc配置文件
  • 创建对应的控制类
http://www.lryc.cn/news/5835.html

相关文章:

  • 获取savemodel的输入输出节点
  • 《Learning to Reconstruct Botanical Trees from Single Images》学习从单幅图像重建植物树
  • vant 4 正式发布,支持暗黑主题,那么是如何实现的呢
  • MySQL的复制 二
  • 秒杀项目之秒杀商品展示及商品秒杀
  • 教育行业需要什么样的数字产品?
  • Spring MVC
  • 类与对象(上)
  • 正确安装 torch_geometric库
  • 【Unity VR开发】结合VRTK4.0:自身移动(滑动)
  • G1垃圾回收器详解
  • tws耳机哪个牌子音质好?tws耳机音质排行榜
  • TIA博途中DB数据块清零的具体方法示例
  • iptables防火墙屏蔽指定ip的端口
  • JavaScript Math(算数) 对象
  • 超详细的JAVA高级进阶基础知识04
  • Python 运算符?
  • linux nuxt 部署 问题汇总
  • C++内存管理
  • 电子招投标系统源码之 —采购数字化转型快人一步,以大数据支撑供应链管理未来
  • ie获取cookie数据,中文乱码;cookie中文乱码终极解决办法
  • day16_关键字this和super丶就近原则和追根溯源原则
  • MySQL 共享锁 (lock in share mode),排他锁 (for update)
  • 类与对象(下)
  • feign技巧 - form方式传值
  • MATLAB | 情人节来绘制更立体的玫瑰花吧
  • 【Python表白代码】 2.14“Valentine‘s Day”“没别的意思 就是借着特殊日子说声喜欢你”你在哪儿?我去见你~(各种玫瑰源码合集)
  • 压力应变电桥信号隔离放大变送器差分输入0-±10mV/0-±20mV转0-20mA/0-10v
  • Linux系统之部署个人导航页
  • 四、Windows 平台安装 MongoDB