SpringMVC入门案例

news2025/1/9 17:12:13

引言

Spring MVC是一个基于MVC架构的Web框架,它的主要作用是帮助开发者构建Web应用程序。它提供了一个强大的模型驱动的开发方式,可以帮助开发者实现Web应用程序的各种功能,如请求处理、数据绑定、视图渲染、异常处理等。

开发步骤

1.创建web工程(maven结构)

项目结构:

2.导入依赖:
  • Spring MVC框架的核心依赖,包含了Spring MVC框架的所有必要组件和功能。
  <!--SpringMVC环境依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.18.RELEASE</version>
    </dependency>
  • Java Servlet API的标准实现,Spring MVC依赖于Servlet容器来处理HTTP请求和响应。
<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <!--如果使用插件配置Tomcat,那么必须给Servlet依赖指定以下作用域-->
        <scope>provided</scope>
    </dependency>
3.定义处理请求的功能类
//定义表现层控制器bean
@Controller
//responseBody注解设置当前操作返回结果为JSON数据
@ResponseBody
public class DemoController {
    //设置映射路径
    @RequestMapping("/demo")

    public String show(){
        System.out.println("user save....");
        return "springMVC demo....";
    }
}
4.编写springMVC配置类,加载请求的bean
@Configuration
//IOC组件扫描
@ComponentScan("com.yaorange.springmvcdemo1.controller")
//开启SpringMVC注解支持
@EnableWebMvc
public class SpringMVCconfig {
    
}
5.加载springMVC配置,并设置请求拦截路径
public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    //加载Spring配置,初始化Spring容器
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {};
    }

    @Override
   //加载SpringMVC配置,初始化SpringMVC容器
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] {SpringMVConfig.class};
    }

    @Override
    //配置SpringMVC处理请求的映射地址,配置/代表处理所有请求
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }
}
6.修改URL
7.运行结果:

使用postman测试

打开postman

如果点击发送后报错,那么查看返回体是否设置为JSON格式,或者可能后端没打开

正确运行结果:

SpringMVC常用注解解析

  1. @Controller:用于标注Controller层,即控制层。它用于标记在一个类上,使用@Controller标记的类就变成一个SpringMVCController对象。分发处理器将会扫描使用了该注解的类的方法。
  2. @RequestMapping:这是一个处理请求地址映射的注解,可用于类或方法上。用于类上表示该类中的所有响应请求的方法都会以该地址作为父路径;作用于方法时,则会在已有父路径的基础上添加相应路径。
  3. @ResponseBody注解的作用是将Controller的方法返回的对象转换为指定的格式后,写入到Response对象的body数据区。这意味着当方法上使用了@ResponseBody注解时,方法的返回值将直接写入到HTTP响应的body中,而不是被解析为视图路径或者跳转路径。
  4. @RequestBody注解的作用是将请求体中的数据绑定到后端方法的参数上。当客户端发送一个包含数据的请求体时,Spring框架会自动将该数据转换为Java对象,并将其作为参数传递给后端方法。

    需要注意的是,在使用@RequestBody注解时,前端发送的请求方法必须是POST或PUT,因为GET请求没有请求体。此外,如果你希望在方法参数上使用@RequestBody注解,那么该参数的类型必须是一个Java对象,而不是基本类型或字符串。

  5. @RequestParam它的作用是将HTTP请求参数绑定到Controller方法的参数上。这个注解通常用于处理GET、POST等请求,并且可以接收简单类型的属性。

  6. @PathVariable是Spring 3.0中引入的新特性,用于接收URL路径中的参数。通过使用@PathVariable注解,可以将URL中的占位符参数绑定到控制器处理方法的参数上。

@RequestMapping的常用属性
  • value:指定请求的实际地址,指定的地址可以是URI Template模式。
  • method:指定请求的method类型,例如GET、POST、PUT、DELETE等。
  • consumes:指定处理请求的提交内容类型(Content-Type),例如application/json,text/html。
  • produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
  • params:指定request中必须包含某些参数值才让该方法处理。
  • headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
@RequestParam注解通常有以下几个属性:
  • value:指定参数的名称,这个名称应该是唯一的。
  • required:指定参数是否必须,默认为true。如果设置为false,则请求中可以不包含该参数。
  • defaultValue:指定参数的默认值,如果请求中没有提供该参数,则使用默认值。通常分页查询中会使用默认值
@PathVariable与@RequestParam的区别
  • 请求参数的位置:@PathVariable用于从URL路径中获取参数,而@RequestParam用于从HTTP请求的参数(query string或form data)中获取参数。
  • 参数值的绑定:@PathVariable注解的参数值直接绑定到URL路径中的占位符上,而@RequestParam注解的参数值绑定到HTTP请求的参数上。
  • 参数值的类型:@PathVariable注解的参数值类型通常是基本类型或字符串,而@RequestParam注解的参数值类型可以是任何Java对象。
  • 参数值的可选性:@PathVariable注解的参数值是必需的,因为URL路径中的占位符是固定的,而@RequestParam注解的参数值是可选的,因为HTTP请求的参数可能不存在或为空。
  • 默认值:@PathVariable注解没有提供默认值的概念,如果URL路径中的占位符不存在,将导致404错误或无法找到资源。而@RequestParam注解允许设置默认值,如果请求参数不存在或为空,将使用默认值。

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

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

相关文章

PDF转PowerPoint - Java实现方法

通过编程实现PDF转PPT的功能&#xff0c;可以自动化转换过程&#xff0c;减少手动操作的工作量&#xff0c;并根据需要进行批量转换。将PDF文件转换为PPT文档后&#xff0c;可以利用PPT的丰富功能和动画效果&#xff0c;达到更好的演示效果。 在Java中&#xff0c;我们可以使用…

构建中国人自己的私人GPT—限时免费部署

在现实生活中&#xff0c;很多公司或个人的资料是不愿意公布在互联网上的&#xff0c;但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢&#xff1f;于是我们构建自己或公司的本地专属GPT变得非常重要。 先看效果&#xff1a; 解方程&#xff0c;24小…

12.云原生之kubesphere中应用部署方式

云原生专栏大纲 文章目录 k8s中应用部署Kubernetes常用命令 kubesphere中可视化部署应用创建工作负载服务暴露 helm部署应用helm命令行部署应用kubesphere中使用应用仓库 k8s中应用部署 在k8s中要想部署应用&#xff0c;需要编写各种yaml文件&#xff0c;一旦应用依赖比较复杂…

抖音矩阵云混剪系统源码(免授权版)多平台多账号一站式管理,附带系统搭建教程

搭建教程 MySQL 5.6 PHP 7.2 Apache 数据库名称 juzhen Nginx环境切换伪静态 1、解压安装包到项目根目录&#xff0c;找到application/database.php 更换自己的数据库密码 2、阿里云现有的配置不要动 其他按照文档进行添加 3、项目访问目录&#xff1a;public 4、域名…

RK3568平台开发系列讲解(Linux系统篇)中断下文 tasklet

🚀返回专栏总目录 文章目录 一、什么是 taskle二、tasklet 相关接口函数2.1、静态初始化函数2.2、动态初始化函数2.3、关闭函数2.4、使能函数2.5、调度函数2.6、销毁函数三、测试程序沉淀、分享、成长,让自己和他人都能有所收获!😄

【openwrt】【overlayfs】Openwrt系统overlayfs挂载流程

overlayfs是一种叠加文件系统&#xff0c;在openwrt和安卓系统中都有很广泛的应用&#xff0c;overlayfs通常用于将只读根文件系统(rootfs)和可写文件系统(jffs2)进行叠加后形成一个新的文件系统&#xff0c;这个新的文件系统“看起来”是可读写的&#xff0c;这种做法的好处是…

汽车生产污废水处理需要哪些工艺设备

对于汽车生产过程中产生的污废水处理&#xff0c;需要运用一系列的工艺设备来实现有效的清洁和回收利用。下面让我们一起来探索一下吧&#xff01; 首先&#xff0c;汽车生产工艺设备中最常见的是物理处理设备。物理处理包括沉淀、过滤和吸附等过程。其中&#xff0c;沉淀操作可…

C语言——整数和浮点数在内存中的存储

目录 一、整数在内存中的存储 二、大小端字节序和字节序判断 2.1 什么是大小端&#xff1f; 2.2 为什么有大小端? 2.3 练习 2.3.1 练习1 2.3.2 练习2 三、浮点数在内存中的存储 3.1练习 3.2 浮点数的存储 3.2.1浮点数存的过程 3.2.2浮点数取的过程 3.3 题目解…

js实现iframe内容加载失败自动重新加载功能

最近一个项目上的程序经常出现掉线的情况&#xff0c;经排查是该单位的网络不稳定&#xff0c;存在网络丢包现象。导致有时候程序运行加载页面失败&#xff0c;开机自启动应用时出现请求失败的概率非常大&#xff0c;为了解决这个问题我在网上东找西找也没有找到有效的解决办法…

RocketMQ 源码解析:生产者投递消息 DefaultMQProducer#send(一)

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现GRU-Adaboost-ABKDE的集成门控循环单元自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

Linux shell美化 zsh+oh-my-zsh+power10k

文章目录 安装zsh安装on-my-zsh安装power10k主题安装power10k将oh-my-zsh主题改为power10k字体 设置安装字体配置字体 power10k配置相关插件安装zsh-autosuggestionszsh-syntax-highlighting安装插件完成&#xff0c;重新加载配置文件 美化效果示意&#xff1a; 安装zsh 安装…

连接超时的问题

连接超时的问题 通用第三方工具连接超时 connect timeout 方案一&#xff1a; /etc/ssh/sshd_config node1上操作&#xff0c;图是错的 方案二&#xff1a; windows上Hosts文件域名解析有问题 比如&#xff1a; 192.168.xx.100 node1 192.168.xx.161 node1 两个都解析成node…

Failed to start OpenSSH server daemon-SSH启动失败

一、SSH服务启动失败 或者报错误&#xff1a; journalctl -xe sshd.service 二、查看SSHD的服务状态 3、重新安装openssh [rootzbx ~]# yum -y remove openssh 卸载原来的 [rootzbx ~]# yum -y install openssh openssh-clients openssh-server 重新安装 [rootzbx ~]# system…

阿里云云原生助力安永创新驱动力实践探索

云原生正在成为新质生产力变革的核心要素和企业创新的数字基础设施。2023 年 12 月 1 日&#xff0c;由中国信通院举办的“2023 云原生产业大会”在北京召开。在大会“阿里云云原生”专场&#xff0c;安永科技咨询合伙人王祺分享了对云原生市场的总览及趋势洞见&#xff0c;及安…

代码随想录算法训练营第三十六天 | 435.无重叠区间、763.划分字母区间、56.合并区间

435.无重叠区间 题目链接&#xff1a;435.无重叠区间 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 文章讲解/视频讲解&#xff1a;https://programmercarl.com/0435.%E6%9…

Git学习笔记(第2章):Git安装

官网地址&#xff1a;Githttps://git-scm.com/ Step1&#xff1a;查看Git的GNU协议 → 点击“Next” Step2&#xff1a;设置Git的安装位置(非中文、无空格的目录) → 点击“Next” Step3&#xff1a;选择Git的选项配置(推荐默认设置) → 点击“Next” Step4&#xff1a;设置Git…

What is `addFormattersdoes` in `WebMvcConfigurer` ?

addFormatters 方法在SpringMVC框架中主要用于向Spring容器注册自定义的格式化器&#xff08;Formatter&#xff09; SpringMVC内置了一系列的标准格式化器&#xff0c;用于处理日期、数字和其他常见类型的转换。 开发者也可以通过实现 WebMvcConfigurer 接口&#xff0c;并重写…

笔记本电脑如何连接显示屏?

目录 1.按下快捷键 winP,选择扩展 2.连接显示器&#xff0c;连好接线 3.笔记本驱动有问题&#xff0c;显示错误如下&#xff1a; 4.驱动已经下载完成&#xff0c; 按下快捷键&#xff0c;还是显示第3步中的错误 5.驱动已经下载完成&#xff0c; 按下快捷键&#xff0c;参照…

Page268~270 11.3.4 wxWidgets项目配置

项目w28_gui的项目配置&#xff1a; 一&#xff0c;编译选项&#xff0c; -pipe -mthreads [[if (GetCompilerFactory().GetCompilerVersionString(_T("gcc")) > _T("4.8.0")) print(_T("-Wno-unused-local-typedefs"));]] 1, -pipe&#…