zoukankan      html  css  js  c++  java
  • SpringMVC执行原理

    执行原理

    1、使用配置的方式编写程序

    之前我们使用注解的方式,现在使用配置的方式!

    1、创建maven项目

    2、导入依赖

    3、编写web.xml

    注册DispatcherServlet(和之前一样)

    4、编写配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd>
    

    5、添加处理映射器

        <bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    

    6、添加处理适配器

        <bean id="simpleControllerHandlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    

    7、添加视图解析器

        <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    

    8、编写我们要操作业务Controller ,实现Controller接口;需要返回一个ModelAndView,装数据,封视图;

    package com.star.controller;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class MyController implements Controller {
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            //ModelAndView 模型和视图
            ModelAndView model = new ModelAndView();
            //封装对象,放在ModelAndView中。Model
            model.addObject("msg","Hello,SpringMVC!");
    
            //封装要跳转的视图,放在ModelAndView中
            model.setViewName("hello"); // :/WEB-INF/view/hello.jsp
            return model;
        }
    }
    

    9、将自己的类交给SpringIOC容器,注册bean

    <!--id:请求的映射路径-->
    <bean id="/hello" class="com.star.controller.MyController"/>
    

    10、写跳转的页面hello.jsp

    11、配置Tomcat,启动测试:

    2、分析执行流程

    1、DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心,用户发出请求,DispatcherServlet接收请求并拦截请求。

    • 我们假设请求的url为:http://localhost:8080/star/hello
    • 将url拆分为三部分:
    • http://localhost:8080:服务器域名
    • /star:部署在服务器上的web站点
    • /hello:表示控制器
    • url就表示为:请求位于服务器lcoalhost:8080上的SpringMVC站点的hello控制器。

    2、HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。

    3、HandlerExecution表示具体的Handler,其主要作用是根据查找url查找控制器,比如上面的hello。

    4、HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。

    5、HandlerAdapter表示处理器适配器,其按照特定的规则取执行Handler。

    6、Handler让具体的Controller执行。

    7、Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。

    8、HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。

    9、DispatcherServlet调用视图解析器来解析HandlerAdapter传递的逻辑视图名

    10、视图解析器将解析的逻辑视图名传给DispatcherServlet。

    11、DispatcherServlet根据视图解析的视图结果,调用具体的视图。

    12、最终呈现给用户。

    下图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。

  • 相关阅读:
    poj 1743 Musical Theme 后缀数组
    poj 1743 Musical Theme 后缀数组
    cf 432D Prefixes and Suffixes kmp
    cf 432D Prefixes and Suffixes kmp
    hdu Data Structure? 线段树
    关于position和anchorPoint之间的关系
    ios POST 信息
    CALayers的代码示例
    CALayers详解
    ios中得sqlite使用基础
  • 原文地址:https://www.cnblogs.com/lmx-181028/p/12498814.html
Copyright © 2011-2022 走看看