SpringMVC原理图解

SpringMVC概述

MVC是一种设计模式,SpringMVC是一个MVC框架。SpringMVC可以帮助我们进行更简洁的Web开发。

模型(Model):封装了应用程序的数据和一般他们会组成的POJO。

视图(View):呈现模型数据,一般生成HTML输出到客户端的浏览器。

控制器(Controller):处理用户请求,返回建立的模型,并把它传递给视图渲染。

SpringMVC的工作原理

springmvc

  1. 用户只需要与DispatcherServlet交互,用户向DispatcherServlet发出请求,中间步骤由控制器自动完成,最终向用户返回响应。
  2. DispatcherServlet首先获取Handler的映射关系,然后适配相应的处理器执行业务操作,最后返回模型与视图对象到DispatcherServlet。
  3. DispatcherServlet把返回的模型传给视图渲染,最终返回给用户。

SpringMVC项目中对应的配置文件

  1. web.xml文件
    此文件为DispatcherServlet相关配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
<!--    方法二 配置dispatcherServlet,这是springMVC的核心,请求分发器(前端控制器)-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--绑定spring的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!--启动级别-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!--  / : 只匹配所有的请求,不会去匹配jsp页面-->
    <!--  /* : 匹配所有的请求,包括jsp页面-->
</web-app>
  1. springmvc-servlet.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans.spring-beans.xsd">

    <!-- 处理器/映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!-- 处理器/适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <!-- 视图解析器 : 模板引擎 ThymeLeaf, Freemarker-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WED-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--BeanNameUrlHandlerMapping-->
    <bean id="/hello" class="com.sheng.controller.MyController"/>

</beans>

  1. test.jsp
<%--
  Created by IntelliJ IDEA.
  User: ys
  Date: 2021/1/24
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

${msg}

</body>
</html>

4.MyController
为了呈现原理图中相关参数,MyController未使用注解,而是实现Controller接口。

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Author : ys
 */
public class MyController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView modelAndView = new ModelAndView();
        //业务代码
        String result = "HelloSpringMVC";
        modelAndView.addObject("msg", result);
        //视图跳转(test.jsp)
        modelAndView.setViewName("test");
        return modelAndView;
    }
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页