SpringMVC的快速简单搭建

前言

        该博客主要讲述SpringMVC的概念知识,以及它的工作流程,最后实现快速搭建了一个SpringMVC demo,并对整个搭建过程进行总结。

目录

前言

1、概念

2、SpringMVC的快速搭建

2.1、创建Maven项目

2.2、创建webapp目录

2.3、在web.xml文件中进行配置

2.4、编写SpringMVC配置文件

2.5、编写index.html文件

2.6、编写controller层

2.7、配置tomcat 

2.8、得到测试结果

3、总结


1、概念

(1)什么是MVC?

        MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范

  • 是将业务逻辑、数据、显示分离的方法来组织代码。
  • MVC主要作用是降低了视图与业务逻辑间的双向偶合
  • MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。

(2)什么是SpringMVC?

        Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

(3)SpringMVC的特点有哪些?

  1. Spring家族原生产品,与IOC容器等基础设施无缝对接
  2. 基于原生的Servlet,通过功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理
  3. 表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案
  4. 代码清晰简洁,大幅度提升开发效率
  5. 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可。
  6. 性能卓越,尤其适合现代大型、超大型互联网项目要求。

(4)SpringMVC的工作流程?

 

流程说明(重要):

  1. 客户端(浏览器)发送请求,直接请求到 DispatcherServlet。
  2. DispatcherServlet 根据请求信息调用 HandlerMapping,解析请求对应的 Handler。
  3. 解析到对应的 Handler(也就是我们平常说的 Controller 控制器)后,开始由 HandlerAdapter 适配器处理。
  4. HandlerAdapter 会根据 Handler 来调用真正的处理器来处理请求,并处理相应的业务逻辑。
  5. 处理器处理完业务后,会返回一个 ModelAndView 对象,Model 是返回的数据对象,View 是个逻辑上的 View。
  6. ViewResolver 会根据逻辑 View 查找实际的 View。
  7. DispaterServlet 把返回的 Model 传给 View(视图渲染)。
  8. 把 View 返回给请求者(浏览器)

2、SpringMVC的快速搭建

目录结构如下:

 

2.1、创建Maven项目

        在pom文件中引入相关的依赖,并记得把打包方式的改成war方式

        pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>SpringMVC</artifactId>
        <groupId>com.atguigu</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>

    <artifactId>SpringMVC-demo1</artifactId>

    <!-- 引入相关的依赖   -->
    <dependencies>
        <!-- SpringMVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.1</version>
        </dependency>

        <!--  日志  -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.11</version>
        </dependency>

        <!-- ServletAPI-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!--  Spring5和Thymeleaf整合包  -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.12.RELEASE</version>
        </dependency>
    </dependencies>


</project>

2.2、创建webapp目录

        在src/main下创建webapp目录

        找到下图中该位置,创建并修改路径

 

2.3、在web.xml文件中进行配置

        ①配置前端控制器,统一处理所有的请求

        ②初始化SpringMVC配置参数

        ③编写对应的路径映射,注意现在设置是“/”,会把jsp路径请求过滤掉

<?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">

    <!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理   -->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--  通过初始化参数指定SpringMVC配置文件的位置和名称      -->
        <init-param>
            <!--   contextConfigLocation为固定值-->
            <param-name>contextConfigLocation</param-name>
            <!--   使用classpath:表示从类路径查找配置文件,例如maven工程中的src/main/resources    -->
            <param-value>classpath:springMVC.xml</param-value>
        </init-param>
        <!-- 作为框架的核心组件,在启动过程中有大量的初始化操作要做
             而这些操作放在第一次请求时才执行会严重影响访问速度
             因此需要通过此标签将启动控制DispatchServlet的初始化时间提前到服务器启动时-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!--  设置SpringMVC的核心控制器所能处理的请求的请求路径
              所匹配的请求可以是/login或.html或.js或.css方式的请求路径
              但是不能匹配.jsp请求路径的请求-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

2.4、编写SpringMVC配置文件

        在resources包下编写配置文件SpringMVC.xml

                ①开启包的注解扫描

                ②配置Thymeleaf视图解析器(在里面又通过bean 的方式注入了参数),并设置了静态界面的存储位置    <property name="prefix" value="/WEB-INF/templates/"/>

<?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:aop="http://www.springframework.org/schema/aop"
       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 http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--开启注解扫描-->
    <context:component-scan base-package="com.atguigu.mvc.controller"></context:component-scan>

    <!--  设置Thymeleaf视图解析器  -->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        <!--     视图前缀    -->
                        <property name="prefix" value="/WEB-INF/templates/"/>

                        <!--     视图后缀    -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

</beans>

2.5、编写index.html文件

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h1>首页</h1>
</body>
</html>

2.6、编写controller层

package com.atguigu.mvc.controller;

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

/**
 * @Author 不要有情绪的  ljy
 * @Date 2022/10/13 9:45
 * @Description:
 */
@Controller
public class SpringMVCController {

    @RequestMapping("/")
    public String springMVC(){
        //返回视图名称
        return "index";
    }
}

2.7、配置tomcat 

 

2.8、得到测试结果

 

3、总结

        浏览器发送请求,若请求地址符合控制器的ur-pattern,该请求就会被前端控制器DispatchServlet处理。前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMappin注解的value属性值进行匹配,若匹配成功,该注解所标识的控制器方法就是处理请求的方法。处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀组成视图的路径,通过Thymeleaf对视图进行渲染,最终转发到视图所对应页面。

学习之所以会想睡觉,是因为那是梦开始的地方。
ଘ(੭ˊᵕˋ)੭ (开心) ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)
                                                                                                          ------不写代码不会凸的小刘

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值