SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目

这篇具有很好参考价值的文章主要介绍了SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目,# JavaEE,spring,java,mvc

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaweb

石可破也,而不可夺坚;丹可磨也,而不可夺赤。

一、Spring MVC概述

web程序工作流程:web程序通过浏览器访问页面,前端页面使用异步提交的方式发送请求到后端服务器,后端服务器采用表现层、业务层、数据层的三层架构的形式进行开发,页面发送的请求,由表现层接收,获取用户的请求参数号将参数传递到业务层,再由业务层访问数据层,得到用户需要访问的数据后,将数据返回给表现层,表现层拿到数据后,将数据转换成json格式发送给前端页面,前端页面接收数据后解析数据并组织成用户浏览的最终页面信息交给浏览器。

  • Spring MVC是一种基于Java实现的MVC模型的轻量级Web框架
  • 优点
      • 使用简单,开发便捷(相比于Servlet)
      • 灵活性强

二、入门案例

2.1导入Spring MVC坐标与Servlet坐标

<dependencies>
    <!--导入springmvc与servlet坐标-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

  </dependencies>

2.2创建Spring MVC控制器类(等同于Servlet功能)

//2.定义Controller,使用@Controller定义bean
@Controller
public class UserController {
    //2.1设置当前操作的访问路径
    @RequestMapping("/save")
    //2.2设置当前操作的返回值类型
    @ResponseBody
    public String save() {
        System.out.println("user save...");
        return "{'module':'springmvc'}";
    }
}

2.3初始化Spring MVC环境(同Spring环境)

  • 设定Spring MVC加载对应的bean
//3.创建Springmvc配置文件,加载controller对应的bean
@Configuration
@ComponentScan("com.practice.controller")
public class SpringMvcConfig {
}

2.4初始化Servlet容器,加载Spring MVC环境

  • 设置Spring MVC技术处理的请求
package com.practice.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

/**
 * @Author YJ
 * @Date 2023/8/3 11:01
 * Description:定义一个Servlet容器启动的配置类,在里面加载spring配置
 */
public class ServletContainsInitConfig extends AbstractDispatcherServletInitializer {
    /**
     * 加载springmvc容器配置
     *
     * @return
     */
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    /**
     * 设置哪些请求归属springMVC处理
     *
     * @return
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     * 加载spring容器配置
     *
     * @return
     */
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目,# JavaEE,spring,java,mvc
SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目,# JavaEE,spring,java,mvc


  • AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类
  • AbstractDispatcherServletInitializer提供三个接口方法供用户实现
      • createServletApplicationContext()方法,创建Servlet容器时,加载SpringMVC对应的bean并放入
      • WebApplicationContext对象范围中,而WebApplicationContext的作用范围为ServletContext容器范围
protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }
  • getServletMappings()方法,设定SpringMVC对应的请求映射路径,设置为“/”表示拦截所有请求,任意请求都将转入到SpringMVC进行处理
protected String[] getServletMappings() {
        return new String[]{"/"};
    }

三、入门案例工作流程

  • 1.服务器启动,执行ServletContainsInitConfig类,初始化web容器
public class ServletContainsInitConfig extends AbstractDispatcherServletInitializer
  • 2.执行createServletApplicationContext方法,创建了WebApplicationContext对象
protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }
  • 3.加载SpringMvcConfig
@Configuration
@ComponentScan("com.practice.controller")
public class SpringMvcConfig {
}
  • 4.执行@ComponentScan加载对应的bean
@ComponentScan("com.practice.controller")
  • 5.加载UserController,每个@RequestMapping的名称对应一个具体的方法
@Controller
public class UserController {
    //2.1设置当前操作的访问路径
    @RequestMapping("/save")
    //2.2设置当前操作的返回值类型
    @ResponseBody
    public String save() {
        System.out.println("user save...");
        return "{'module':'springmvc'}";
    }
}
  • 6.执行getServletMappings方法,定义所有的请求都通过SpringMVC
@Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

四、Controller加载控制

4.1Controller加载控制与业务bean加载控制

  • SpringMVC相关bean(表现层bean)

  • Spring控制的bean

    • 业务bean(Service)
    • 功能bea(DataSource等)
  • SpringMVC相关bean加载控制

    • SpringMVC加载的bean对应的包均在com.practice.controller包内
  • Spring相关bean加载控制

    • 方式一:Spring加载的bean设定扫描范围为com.practice,排除controller包内的bean
    • 方式二:Spring加载的bean设定扫描范围为精准范围,例如service包、dao包等
    • 方式三:不区分Spring和SpringMVC环境,加载到同一环境中。
  • 名称:@ComponentScan

  • 类型:类注解

  • 范例:文章来源地址https://www.toymoban.com/news/detail-631236.html

@ComponentScan(value = "com.practice",
        excludeFilters = @ComponentScan.Filter(
        type = FilterType.ANNOTATION,
        classes = Controller.class
)
)
public class SpringConfig {
}
  • 属性
    • excludeFilters:排除扫描路径中加载的bean,需要指定类别(type)与具体项(classes)
    • includeFilters:加载指定的bean,需要制定类别(type)与具体项(classes)

4.2bean的加载格式

package com.practice.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

/**
 * @Author YJ
 * @Date 2023/8/3 11:01
 * Description:定义一个Servlet容器启动的配置类,在里面加载spring配置
 */
public class ServletContainsInitConfig extends AbstractDispatcherServletInitializer {
    /**
     * 加载springmvc容器配置
     *
     * @return
     */
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    /**
     * 设置哪些请求归属springMVC处理
     *
     * @return
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     * 加载spring容器配置
     *
     * @return
     */
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringConfig.class);
        return ctx;
    }
}

  • 简化开发:
public class ServletContainsInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

总结

本文介绍了SpringMVC的概念及如何创建SpringMVC的项目。 欢迎各位小伙伴点赞+关注!!!

到了这里,关于SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringMVC的简介及工作流程

    Spring MVC是一个基于Java的开发框架,用于构建灵活且功能强大的Web应用程序。它是Spring Framework的一部分,提供了一种模型-视图-控制器(Model-View-Controller,MVC)的设计模式,用于组织和管理Web应用程序的各个组成部分。 MVC架构:Spring MVC借鉴了MVC设计模式,它将应用程序的逻辑

    2024年02月09日
    浏览(36)
  • SpringMvc拦截器和手写模拟SpringMvc工作流程源码详解

    目录 1. SpringMvc简介 1.1 什么是MVC 1.2 什么是SpringMvc 1.3 SpringMvc 能干什么 1.4 SpringMvc 工作流程 2. SpringMvc拦截器和过滤器 2.1 拦截器 2.1.1 拦截器作用 2.1.2 拦截器和过滤器的区别 2.1.3 拦截器方法说明 2.1.4 多个拦截器执行顺序 2.1.5 自定义拦截器 2.2 过滤器(附加) 3. 手写模拟Spri

    2024年02月09日
    浏览(36)
  • 【SpringMVC】一文带你彻底搞懂SpringMVC的工作流程(最强详解!!)

    目录 首先来说明一下,SpringMVC的各个组成部分 DispatcherServlet  HandlerMapping Handler(通常就是Controller)  HandlerAdapter  ViewResolver View  SpringMVC具体的工作流程  是SpringMVC的核心部分,是 一种前端控制器 ,由框架所提供 作用:统一处理请求和响应。除此之外也是 整个控制流程的

    2024年02月11日
    浏览(33)
  • SpringMVC基础入门及工作流程---全方面详细介绍

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

    2024年02月10日
    浏览(33)
  • MapReduce概述及工作流程

    mapreduce原语(独创) mapreduce工作流程(重点) MR作业提交流程(重点) YARN RM-HA搭建(熟练) 运行自带的wordcount(了解) 动手写wordcount(熟练) MapReduce原语 hadoop MapReduce框架可以让你的应用在集群中 可靠地 容错地 并行 处理TB级别的数据 1024TB=1PB  1024PB=1EB  1024EB=1ZB MapReduc

    2023年04月08日
    浏览(36)
  • Kubernetes概述架构与工作流程简述

    Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。 Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因

    2024年02月07日
    浏览(31)
  • Mac 创建和删除 Automator 工作流程,设置 Terminal 快捷键

    本文以创建一个快捷键启动 Terminal 的自动操作为示例。 点击打开 自动操作 ; 点击 新建文稿 点击 快速操作 选择 运行 AppleScript 填入以下内容 保存名为 “Open Terminal” 打开 设置 键盘 ,选择 键盘快捷键 以此选择 服务 通用 Open Terminal ,并设置快捷键为 “control + command + T”

    2024年02月14日
    浏览(35)
  • git工作原理、从仓库创建到代码拉取提交整套流程

    1、先看 Git 工作原理图,该图参考 gitee简单使用_gitea新建vue仓库选择什么.gitignore模板-CSDN博客 git 工作原理图理解: (1)Workspace:工作区,也就是我们的代码所在的地方 (2)Index / Stage:暂存区 (3)Repository:仓库区(或本地仓库 .git) (4)Remote:远程仓库 2、创建仓库流程

    2024年03月14日
    浏览(35)
  • 工业互联网项目开发工作流程及核心问题

    工业互联网项目开发全流程V3.0   工业互联网项目开发工作流程及核心问题 一、需求分析 1、共享平台需求分析 这个平台要解决什么问题? 这个平台的用户群体是谁? 这个平台应该具备哪些主要功能? 这个平台的使用场景是什么? 这个平台如何与现有的系统集成? 2、需求

    2024年02月09日
    浏览(32)
  • VUE项目devServer.proxy匹配请求中的地址工作流程

    在Vue项目的开发过程中,为了本地调试方便,通常会在vue.config.js 中配置 devServer。在devServer中配置proxy属性,可以将指向本地的请求(例如: http://localhost:8080/api/action) 代理到后端的开发服务器上(例如: http://localhost:8089/personal-management/action)。 如何理解正向代理:代理服

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包