SpringMVC执行流程

    xiaoxiao2022-07-13  158

    SpringMVC执行流程:

    服务器启动,初始化,加载Tomcat的配置文件加载项目的配置文件web.xml创建前端控制器DispatcherServlet,加载springMVC.xml配置文件开启注解扫描,创建SpringMVC三大组件:处理器映射器(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)用户向服务器发送请求,前端控制器DispatcherServlet的处理器映射器HandlerMapping获取请求路径,解析所有的@RequestMapping注解,进行匹配,找到请求路径对应的Controller方法,将结果返回给前端控制器DispatcherServletDispatcherServlet调用处理器适配器(HandlerAdapter)执行处理器映射器(HandlerMapping)在Controller中找到的方法,返回可执行结果ModelAndView给DispatcherServletDispatcherServlet调用视图解析器(ViewResolver)获取执行方法返回的结果将逻辑视图解析成真正的视图,返回给前端控制器DispatcherServletDispatcherServlet对页面渲染,最后响应给浏览器。

    案例主要代码:

    web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!-- DispatcherServlet 1. SpringMVC的前端控制器,负责处理请求、响应 2. 如果要用SpringMVC的任何功能,都必须要经过此前端控制器 3. 拦截的请求路径 *.do 表示拦截所有以.do作为后缀的请求。 举例: http://localhost:8080/hello.do --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--加载springMVC配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <!--配置servlet启动初始化--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>

    springMVC.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--1. 开启注解扫描--> <context:component-scan base-package="com.it"/> <!--2. 配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--配置跳转路径的前缀--> <property name="prefix" value="/pages/"/> <!--配置跳转路径的后缀--> <property name="suffix" value=".jsp"/> </bean> <!--3. 开启注解驱动--> <!--会为我们注册三个bean,分别是RequestMappingHandlerMapping,RequestMappingHandlerAdapter,ExceptionHandler,--> <!--使得我们的@RequestMapping,@RequestParam,@ExceptionHandler这些注解生效--> <mvc:annotation-driven /> </beans>

    HelloController.java

    import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * 处理请求的控制器类,也叫做处理器(Handler) */ @Controller // 创建对象加入容器 public class HelloController { @RequestMapping("/hello.do") public String save() { System.out.println("处理请求......"); return "success"; } }
    最新回复(0)