Spring5 MVC 快速搭建和基本流程
搭建springMvc idea新建maven项目
pom.xml中加入springmvc依赖
<!--加入依赖--> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.6.RELEASE</version> </dependency> </dependencies>
右击项目 新建spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xxxx> <!--配置前端控制器、核心调度器、分发器 接收所有除了,jsp的请求 都交给springmvc去处理--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--告诉springMvc我们的配置文件在哪里--> <init-param> <!--contextConfigLocation配置springmvc的xml配置文件--> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <!--启动时加载servlet : 当web服务器 启动时就会创建servlet(会自动调用servlet的构造函数及init()方法),可以加载spring上下文 标记容器是在启动的时候就加载这个servlet --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> <!--配置路径 / 除了.jsp的请求都会被匹配 /* 所有请求都会匹配 *.do、*.action url结尾以do或者.action的都会被匹配 现在基本不加后缀了 --> </servlet-mapping> </web-app>
配置url-pattern为/除了jsp的文件其他所有的请求都拦截下来; 把所有的控制器注入到IOC容器当中;
@Controller public class controller { //在springMvc中自动绑定,添加RequestMapping是映射 @RequestMapping("/Hello") public String hello(String name){ System.out.println("hello spring mvc"); return "redirect:index.jsp"; //就可以访问index.jsp的页面了 } }
配置tomcat启动即可使用
在idea中要手动添加lib目录,把包放进去,否则http://localhost:8080/Hello会报错
springmvc 流程(很重要 背) DispatcherServlet: 前端调度器,把拦截分发到各个控制器方法中 HandlerMapping:在分发到各个控制器之前,先调用HandlerMapping;负责根据请求的URL和@RequestMapping去匹配,匹配到就返回具体方法(@RequestMapping("/Hello") public String hello(String name))Handler(具体控制器的方法) HandlerAdaper:负责调用Handler具体的方法返回逻辑视图名(return “index.jsp”😉,并封装到ModelAndView中 返回到DispatcherServlet ViewReslover: 根据ModelAndView里面的视图名地址,找到具体的视图文件(index.jsp)封装在View对象中 View:进行视图渲染(将jsp转换成html内容) 1、DispatcherServlet表示前端控制器,是整个SpringMVC的控制中心。用户发出请求, DispatcherServlet接收请求并拦截请求。 2、HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请 求url查找Handler。 3、返回处理器执行链,根据url查找控制器,并且将解析后的信息传递给DispatcherServlet 4、HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。 5、执行handler找到具体的处理器 6、Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。 7、HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。 8、DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。 9、视图解析器将解析的逻辑视图名传给DispatcherServlet。 10、DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图,进行试图渲染 11、将响应数据返回给客户端