springMVC概念(第一个入门案例)

news2024/9/20 16:54:59

目录

一、概念

1.什么是mvc?

2.mvc的工作流程?

3.什么是springMVC?

4.springMVC的特点

二、入门案例

准备工作:

正式代码例子 :


一、概念

1.什么是mvc?

答:MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分

M:Model,模型层,指工程中的JavaBean,作用是处理数据

V:view,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据

C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器

2.mvc的工作流程?

答:用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终响应给浏览器

3.什么是springMVC?

(1)springMVC是spring的一个后续的产品,是spring的一个字项目,是基于Java实现MVC模型的轻量级Web框架

(2) springMVC技术与servlet技术功能等同,均属于web层开发技术

(3)springMVC是spring为表述层开发提供的一整套完备的解决方案,在表述层框架历经Strust、WebWork、Strust2等诸多产品的历代更迭之后,目前业界普遍选择了springMVC作为JavaEE项目表述层开发的首选方案。

4.springMVC的特点

(1)spring家族原生产品,与IOC容器等基础设施无缝连接

(2)基于原生的servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理

(3)表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案

(4)代码清新简洁,大幅度提升开发效率

(5)内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可

(6)性能卓越,尤其适合现代大型、超大型互联网项目要求

二、入门案例

准备工作:

1.创建一个maven web项目(已经有的就不用了):

IDEA2022版本创建maven web项目(两种方式)_云边的快乐猫的博客-CSDN博客 

2.配置tomcat运行环境(已经有的就不用了):

IDEA配置部署tomcat详细步骤(maven web 和Javaweb)_云边的快乐猫的博客-CSDN博客

3.pom.xml文件中创建<dependencies>标签,然后在里面内导入依赖

        <!--导入servlet依赖-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!--导入springmvc的依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>

依赖导入成功

正式代码例子 :

1.创建一个类(UserController),制作bean

package com.springMVC.controller;

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

//1.定义@Controller:告诉类这是一个控制器
@Controller
public class UserController {
    //3.1设置当前方法的网页访问路径
    @RequestMapping("eat")
    //3.2设置返回值类型
    @ResponseBody
    //2.创建一个方法
    public String eat(){
        return "eat666";
    }
}

 

 2.创建一个类(Config),用于扫描访问创建出来的那个bean

package com.springMVC.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

//创建springmvc的配置文件,加载controller对应的bean
//1.@Configuration注解:说明这是一个配置类
@Configuration
//2.ComponentScan:扫描另一个类,括号里面填到包名
@ComponentScan("com.springMVC")
public class Config {
}

 

 3.定义一个servlet容器启动的配置类,在里面加载spring的配置

package com.springMVC.config;

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

//定义一个servlet容器启动的配置类,在里面加载spring的配置
//1.继承AbstractDispatcherServletInitializer
public class ServletConfig extends AbstractDispatcherServletInitializer {

    //加载springMVC的容器配置
    protected WebApplicationContext createServletApplicationContext() {
        //2.new一个AnnotationConfigWebApplicationContext
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        //3.加载配置类(Config)
        ctx.register(Config.class);
        //4.设置返回ctx
        return ctx;
    }

    //设置哪些请求归属springMVC处理器
    protected String[] getServletMappings() {
        //5.把[0]里面的0删掉,后面添加{"/"}代表访问所有的请求归springmvc处理
        return new String[]{"/"};
    }

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

 4.运行结果(成功) 

ps:斜杠后面加上注解昵称eat

如果你觉得本篇文章对你有所帮助的,多多支持吧!!!

点赞收藏评论,抱拳了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/343777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leaflet 上传包含shp的zip文件,在map上解析显示图形(059)

第059个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中本地上传包含shp的zip文件,利用shapefile读取shp数据,并在地图上显示图形。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果加载shapefile.js方式安装引用jszip(…

大数据框架之Hadoop:HDFS(四)HDFS的数据流(面试重点)

4.1HDFS写数据流程 4.1.1 剖析文件写入 HDFS写数据流程&#xff0c;如下图所示。 1&#xff09;客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件&#xff0c;NameNode检查目标文件是否已存在&#xff0c;父目录是否存在。 2&#xff09;NameNode 返回是否可…

c++函数指针进阶

c中有两种函数指针 普通函数指针成员函数指针 而对于成员函数指针&#xff0c;又分为两种 静态成员函数指针非静态成员函数指针 定义普通函数指针与静态函数指针的语法类似 void (*pa)(); 定义非静态成员函数指针 void (A::* pa)(); 在调用非静态成员函数时&#xff0c;实…

Spring循环依赖问题,Spring是如何解决循环依赖的?

文章目录一、什么是循环依赖1、代码实例2、重要信息二、源码分析1、初始化Student对Student中的ClassRoom进行Autowire操作2、Student的自动注入ClassRoom时&#xff0c;又对ClassRoom的初始化3、ClassRoom的初始化&#xff0c;又执行自动注入Student的逻辑4、Student注入Class…

8. QT_OpenGL--1. 在QtWidget中搭建OpenGL加载框架

1. 说明&#xff1a; 在 Qt 中使用 OpenGL&#xff0c;实际上时严格遵循一种代码开发框架的&#xff0c;在 QtWidget 中&#xff0c;需要使用 openGlWidget 控件&#xff0c;并自定义类&#xff0c;类中还需继承 QOpenGLWidget,QOpenGLFunctions_3_3_Core 两个类&#xff0c;并…

Word控件Spire.Doc 【Table】教程(14): 如何在C#中为word表格设置AutoFit选项

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

【沁恒WCH CH32V307V-R1的单线半双工模式串口通讯】

【沁恒WCH CH32V307V-R1的单线半双工模式串口通讯】1. 前言2. 软件配置2.1 安装MounRiver Studio3. UASRT项目测试3.1 打开UASRT工程3.2 编译项目4. 下载验证4.1 接线4.2 演示效果5. 小结1. 前言 该模块包含 3 个通用同步异步收发器&#xff08;USART1/2/3&#xff09;和 5 个通…

vivo 自研Jenkins资源调度系统设计与实践

作者&#xff1a;vivo 互联网服务器团队- Wu Qinghua 本文从目前业界实现Jenkins的高可用的实现方案&#xff0c;分析各方案的优缺点&#xff0c;引入vivo目前使用的Jenkins高可用方案&#xff0c;以及目前Jenkins资源的调度方案的设计实践和目前的落地运行效果。 一、前言 现…

微服务实战--高级篇:分布式事务seata

分布式事务 1.分布式事务问题 1.1.本地事务 本地事务&#xff0c;也就是传统的单机事务。在传统数据库事务中&#xff0c;必须要满足四个原则&#xff1a; 1.2.分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下&#xff0c;产生的事务&#xff0c…

PPP协议

PPP协议PPP协议概述PPP链路建立过程PPP链路接口状态机LCP报文格式LCP协商过程—正常协商&#xff08;链路层协商过程&#xff09;LCP协商过程—参数不匹配&#xff08;链路层协商过程&#xff09;LCP协商过程—参数不识别&#xff08;链路层协商过程&#xff09;PPP认证模式PAP…

vTESTstudio - VT System CAPL Functions - General/Trigger Function

前面文章中我们已经介绍了常用的几种板卡的基本信息&#xff0c;那这些板卡该如何去通过软件调用呢&#xff1f;带着这个问题我们开始新的一块内容 - VT系统相关的自动化控制函数介绍&#xff0c;我会按照不同的板卡来分类&#xff0c;对其可控制的函数进行介绍&#xff0c;方便…

快速理解 JVM 原理 - 【基础概念篇】

快速理解 JVM 原理 - 【基础概念篇】 Java虚拟机 是什么&#xff1f; Java 虚拟机 本质就是一台”虚拟的“计算机 &#xff0c;大家通俗的理解是一款 “软件”安装在电脑上 虚拟机通常分为两类&#xff1a; 系统虚拟机【可运行完整操 作系统的软件平台】程序虚拟机 【为执行…

AA-PEG-AA,Acetic Acid-PEG-Acetic Acid,羧酸-聚乙二醇-羧酸供应

英文名称&#xff1a;Acetic Acid-PEG-Acetic Acid&#xff0c;AA-PEG-AA 中文名称&#xff1a;羧酸-聚乙二醇-羧酸 AA-PEG-AA是一种线性双功能PEG羧酸试剂。PEG和COOH基团之间存在亚甲基&#xff08;CH2&#xff09;键。AA-PEG-AA也称为CM-PEG-CM&#xff0c;CM&#xff1a;…

【GD32F427开发板试用】使用TinyMaix进行手写数字识别

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;xusiwei1236 一、TinyMaix简介 TinyMaix是国内sipeed团队开发一个轻量级AI推理框架&#xff0c;官方介绍如下&#xff1a; TinyMaix 是面向单…

django+mysql实现一个简单的web登录页面

目录 一、使用pyacharm创建一个django项目 二、启动django项目验证 三、配置mysql数据库 1、本地安装mysql数据库 1&#xff09;安装mysql数据库 2&#xff09;自己创建一个数据库 2、安装 pymysql 3、配置mysql数据库 1&#xff09;在项目同名包下的_init_.py里面添加…

OpenGL渲染管线介绍

一、概述 OpenGL是跨平台计算机图形应用程序的应用规范&#xff0c;广泛应用于仿真、游戏、GIS系统等领域&#xff0c;实现二三维图形的渲染。OpenGL渲染过程需要经历CPU、GPU两个阶段&#xff0c;CPU中进行图形计算&#xff0c;完成之后调用OpenGL开发接口在GPU中创建缓存区缓…

前后端一些下载与配置(第二篇 第10天过后)nuxt banner redis

NUXT 应该是不用怎么装&#xff1f; 有现成的 axios 还需要在npm吗 好像已经有现成的了 banner banner 笔记汇总P396 Redis Linux安装redis tar -xzvf redis-6.2.6.tar.gz cd redis-6.2.6 照着他做 然后 cd /usr/local/redis/bin ./redis-server /usr/local/redis…

图数据建模基础

Neo4j 图的组件 节点&#xff08;Nodes&#xff09;标签&#xff08;Labels&#xff09;关系&#xff08;Relationships&#xff09;属性&#xff08;Properties&#xff09;建模过程 了解领域并为应用程序定义特定用例&#xff08;问题&#xff09;。开发初始图形数据模型。 对…

ansible的剧本(playbook)

一、playbooks 概述以及实例操作 1、playbooks 的组成 playbooks 本身由以下各部分组成 &#xff08;1&#xff09;Tasks&#xff1a;任务&#xff0c;即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 &#xff08;2&#xff09;Variables&#xff1…

多模式支持无线监控技术:主动式定位、被动式定位

物联网空间信息与数字技术发展至今&#xff0c;已经催生了一大批优秀的践行者。在日常与商业应用中&#xff0c;室内外定位领域依托于这一技术的发展&#xff0c;更是在近几年风光无限。但是并不是说室内定位与室外定位都已经相当成熟&#xff0c;相对来说&#xff0c;室内定位…