SpringMVC概述

一、SpringMVC基本说明

        SpringMVC是基于Spring的,它是Spring的一个模块,用来做web开发的。
        SpringMVC叫做Spring Web MVC,通过Spring的核心技术,采用MVC(Model View Controller)架构,做Web开发。
        SpringMVC 是一个容器,管理对象的,使用IOC核心技术,SpringMVC管理界面层中的控制器对象;SpringMVC底层也是Servlet,以Servlet为核心,接收请求,处理请求,显示处理结果给用户。

二、SpringMVC中的核心组件

核心组件组件描述
DispatcherServlet中央调度器(也叫前端控制器):负责调度其他组件的执行,可降低不同组件之间的耦合性,是整个 Spring MVC 的核心模块;其实就是一个Servlet对象。
Handler 处理器:handler相当于是平常业务代码中每个请求对应的的controller类以及方法信息
HandlerMapping 映射关系:提供根据url 查询Handler的服务;根据url查询到Controller,由DispatcherServlet 调用
HandlerInterceptor处理器拦截器:是一个接口,拦截的是请求地址,可以针对请求地址做一些验证、预处理等操作
HandlerExecutionChain处理器执行链:包括两部分内容,即 Handler 和 HandlerInterceptor(系统会有一个默认的 HandlerInterceptor,如果需要额外拦截处理,可以添加拦截器设置)
HandlerAdapter处理器适配器:HandlerAdapter是一种适配器,对于某种类型的Handler,都有一种对应的Adapter,用来完成对Handler的调用(数据类型的转换、将表单数据封装到 POJO 等操作)
ModelAndView数据结果:装载了模型数据和视图信息,作为 Handler 的处理结果,返回给 DispatcherServlet。model负责参数,view就是视图
ViewResolver视图解析器:DispatcherServlet 通过它将逻辑视图解析成物理视图,最终将渲染结果响应给客户端。

三、SpringMVC执行流程

1浏览器提交请求(http://localhost:8080/SpringMVC01/some.do)到DispatcherServlet(中央调度器)
2DispatcherServlet(中央调度器)直接将请求转给 HandlerMapping(处理器映射器)
3HandlerMapping(处理器映射器)会根据请求,找到处理该请求的Handler(处理器),并将其封装为HandlerExecutionChain(处理器执行链)返回给 DispatcherServlet(中央调度器)
4DispatcherServlet(中央调度器)根据HandlerExecutionChain(处理器执行链)中的Handler(处理器),找到能够执行该Handler(处理器)的HandlerAdapter(处理器适配器)
5HandlerAdapter(处理器适配器)执行Handler(处理器)
6Handler(处理器)将处理结果及要跳转的视图封装到对象ModelAndView 中,并将其返回给HandlerAdapter(处理器适配器)
7HandlerAdapter(处理器适配器)直接将结果返回给DispatcherServlet(中央调度器)
8DispatcherServlet(中央调度器)调用ViewResolver(视图解析器),将ModelAndView中的视图名称封装为视图对象
9ViewResolver(视图解析器)将封装的视图对象返回给DispatcherServlet(中央调度器)
10DispatcherServlet(中央调度器)调用视图对象,让其自己进行渲染,形成响应对象
11DispatcherServlet(中央调度器)响应浏览器

四、简单注解的SpringMVC项目

简述:项目只有Controller层,做简单演示,无数据库连接,业务处理等操作。

1、项目目录结构

2、新建Maven Web 项目

3、pom依赖

  <dependencies>
    <!--SpringMVC-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>

    <!--Servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>

    <!--Junit-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

4、Spring MVC 配置文件

 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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--SpringMVC的配置文件-->

    <!--声明注解组件扫描器-->
    <context:component-scan base-package="com.dgs" />

    <!--声明视图解析器,帮助处理视图-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/view/" />
        <!--后缀-->
        <property name="suffix" value=".jsp" />
    </bean>
    
</beans>

5、DispatcherServlet

 web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <!--声明SpringMVC的核心对象DispatcherServlet-->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <!--
        DispatcherServlet继承的类FrameworkServlet中有个contextConfigLocation属性
        作用:用于设置 SpringMVC 配置文件的路径及文件名
        默认:<servlet-name>标签里面的值 加 -servlet.xml:/WEB-INF/SpringMVC-servlet.xml
      -->
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:SpringMVC.xml</param-value>
    </init-param>
    <!--
      表示服务器tomcat创建对象的顺序,是个整数值,大于等于0;数值越小,创建对象的时间越早
      作用:标记是否在 Web 服务器(这里是 Tomcat)启动时会创建这个 Servlet 实例,即是否在 Web 服务器启动时调用执行该 Servlet 的 init()方法,而不是在真正访问时才创建
    -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <!--url-pattern 作用:把一些请求交给指定的Servlet处理,可以写为 / -->
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>
        

六、Controller

 MyController.java

package com.dgs.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/*
* @Controller:创建控制器(处理器)对象
*   控制器:后端控制器,自定义的类处理请求
* */
@Controller
public class MyController {
    /*
    * @RequestMapping:请求映射
    *   属性:value 请求中的url地址,唯一值,以“/”开头
    *   位置:1、在方法的上面(必须的) 2、在类的上面(可选)
    *   作用:把指定的请求,交给指定的方法处理,等同于url-pattern
    * */
    @RequestMapping(value = "/some.do")
    public ModelAndView doSome(ModelAndView model){
        //存放数据
        model.addObject("msg","1111");
        model.addObject("fun","2222");
        //要返回的前端界面
        model.setViewName("show");
        return model;
    }

    /**
     * 当框架调用完doSome()方法后,得到返回中ModelAndView
     * 框架会在后续的处理逻辑值,处理mv多选里面的数据和视图
     * 对数据执行request.setAttribute("msg","处理了some.do请求");把数据放入到request作用域
    * */
}

七、前端界面

 show.jsp

<%--
  Created by IntelliJ IDEA.
  User: 15015
  Date: 2022/5/27
  Time: 11:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
${fun}
</body>
</html>

八、Tomcat配置

九、测试

http://localhost:8080/SpringMVC01/some.do

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值