前言:首先我们学习SpringMVC之前需要理解什么是MVC模式
MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器。(下面是个人理解的简单流程图)
SpringMVC的流程图
详细理解一下这个流程图
其中导入相应的jar包(其中jackson是后面需要用到)
- 首先是客户发出一个请求http://localhost:8080/springmvc-01/my.do.
- 到达web.xml文件中DispatherServlet查看是否符合url的要求
- DispathcherServlet就会查询到springmvc中的配置文件找到HanderMapping
- 根据bean中的名称查找相应的controller
- 找到我的Mycontroller类执行该类中的handleRequestInternal方法
-
根据返回的modelAndView在找springmvc配置文件中视图解析器。
把viewName和prefix以及suffix做了一个拼接。把拼接的页面展示给客户
当中HanderMapping一般有三种
1. BeanNameUrlHandlerMapping 根据bean标签的名称找到对应的Controller类(也就是默认调用的那种)
1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://www.springframework.org/schema/beans 3 http://www.springframework.org/schema/beans/spring-beans.xsd"> 4 5 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> 6 7 <bean name="/my.do" class="com.zhiyou100.hhz.controller.MyController2"></bean> 8 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 9 <property name="prefix" value="/WEB-INF/view/"/> 10 <property name="suffix" value=".jsp"/> 11 </bean> 12 13 </beans>
2. SimpleUrlHandlerMapping 根据bean的id查找对应的Controller类。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 7 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 8 <property name="mappings"> 9 <props> 10 <prop key="/a.do">my1</prop> 11 <prop key="/b.do">my2</prop> 12 </props> 13 </property> 14 15 <bean id="/my1" class="com.zhiyou100.hhz.controller.MyController1"></bean> 16 <bean id="/my2" class="com.zhiyou100.hhz.controller.MyController2"></bean> 17 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 18 <property name="prefix" value="/WEB-INF/view/"/> 19 <property name="suffix" value=".jsp"/> 20 </bean> 21 22 </beans>
3. ControllerClassNameHandlerMapping 根据controller类的名字找到对应的Controller。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 7 <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean> 8 <bean class="com.zhiyou100.hhz.controller.MyController1"></bean> 9 <bean class="com.zhiyou100.hhz.controller.MyController2"></bean> 10 11 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 12 <property name="prefix" value="/WEB-INF/view/"/> 13 <property name="suffix" value=".jsp"/> 14 </bean> 15 16 </beans>