SpringMVC---详细介绍+使用

文章目录

  • 什么是SpringMVC?
  • 使用SpringMVC
    • SpringMVC创建和连接
      • 创建
      • 连接
        • @RequestMapping的基础使用
    • 获取参数
    • 返回数据
      • 返回静态页面
      • 返回非页面的普通数据(text/html)
      • 返回JSON对象
      • 请求转发或者请求重定向

什么是SpringMVC?

SpringMVC它的正式名称是“Spring Web MVC”,是一个基于Servlet API构建的原始Web框架。MVC是Model View Controller 的缩写,它是软件工程中的一种软件架构模型,把软件系统分为模型、视图和控制器三部分。MVC是一种思想,而SpringMVC是对MVC思想的具体实现。

我们要学习SpringMVC是因为绝大多数Java项目都是基于Spring(SpringBoot)的,而Spring的核心就是SpringMVC。我们学习SpringMVC主要学习下面介绍的三个方面:

  • 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。
  • 获取参数的功能:⽤户访问的时候会带⼀些参数,在程序中要想办法获取到参数。
  • 输出数据的功能:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤户。

使用SpringMVC

SpringMVC创建和连接

创建

在这里插入图片描述

连接

@Controller  //让spring框架启动时就加载类
@ResponseBody    //返回非页面数据
@RequestMapping("/user")
// 可以把@Controller和@ResponseBody两个注解合并为一个@RestController注解
public class UserController {@RequestMapping("/sayHi")public String sayHi() {return "hi,spring mvc";}}

注:

  1. 我们要创建一个类来做路由映射,借此建立起浏览器页面与后端程序的连接
  2. @RequestMapping是被用来做接口的路由映射的,当用户访问某一个url时,会将用户的请求对应到程序中的某个类的某个方法上。
@RequestMapping的基础使用
	//接收GET请求的三种方法//方法一@RequestMapping("/sayHi")//方法二@RequestMapping(value = "/sayHi",method = RequestMethod.GET)//方法三@GetMapping("/sayHi")
    //接收POST请求的三种方法//方法一@RequestMapping("/sayHi")//方法二@RequestMapping(value = "/sayHi",method = RequestMethod.POST)//方法三@PostMapping("sayHi")

注:

  1. @RequestMapping即可以修饰类也可以修饰方法。当修饰类和方法的时候,访问的地址是类+方法;当 url 路径唯一时可以只修饰方法,访问的地址是方法。
  2. @RequestMapping即可以用来接收 Get请求 也可以用来接收 Post请求。
  3. 接收 Get请求 和接收 Post请求分别有三种方法,上面的代码示例已经给出。

获取参数

我们对十一种传来的参数的类型进行处理:传递单参数、传递对象、传递多个参数、参数重命名、传递JSON对象、直接从 url 中传递参数、上传文件、得到Cookie、得到header、设置session、读取session。

由于篇幅太长,单独总结为一篇博客大家点击此链接查看!详细介绍+代码演示SpringMVC获取参数的十一种方法

返回数据

  1. 在返回前端静态页面时,不需要加上@ResponseBody注解;在返回前端普通数据时,要加上@ResponseBody注解。

  2. @ResponseBody返回的值如果是字符,将转化成 text/html;如果是对象,将转化成 application/json。

  3. @ResponseBody即可以修饰类也可以修饰方法,修饰类表示类中的所有方法都会返回 html 或者 json

返回静态页面

//返回前端一个静态的页面   需要多添加一个依赖  然后设置配置文件
@Controller
@RequestMapping("/toFront")
public class FrontController {@RequestMapping("/front")public Object toFront(){return "front.html";}
}

在这里插入图片描述

返回非页面的普通数据(text/html)

//返回非页面的普通数据
@Controller
@ResponseBody
@RequestMapping("/p")
public class ResponseController {@RequestMapping("/index")public String index(){return "index.html";}
}

返回JSON对象

@RestController
@RequestMapping("/retJson")
public class JsonController {@RequestMapping("/respJson")public HashMap<String,String> retJson(){//注 HashMap的key不能相同  相同时下一次插入的值会替换掉上一次的值  使HashMap中只有一个值HashMap<String,String> hashMap = new HashMap<>();hashMap.put("say1","hello");hashMap.put("say2","hi");hashMap.put("say3","spring muc");return hashMap;}
}

请求转发或者请求重定向

@Controller
@RequestMapping("/toSend")
//@RestController  返回页面不是数据
// redirect和forward的三点区别
public class ResendController {@RequestMapping("/redirect")//请求重定向public String redirect(){return "redirect:/front.html";}@RequestMapping("/forward")//请求转发public String forward(){return "forward:/front.html";}
}

请求转发和请求重定向的区别:

  1. 请求重定向将请求重新定位到资源,不需要经过服务器;请求转发需要经过服务器进行转发。
  2. 请求重定向地址发生变化;请求转发地址不发生变化。
  3. 请求重定向和直接访问新地址效果一致,不存在原来的外部资源不能访问的问题;请求转发需要经过服务器转发,有可能造成原外部资源不能访问的问题。

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

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

相关文章

【Spring】14 ApplicationEventPublisherAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动3.5 工作流程图 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点&#xff0c;其中之一是 Bean 生命周期中的回调接口。本文将专注介绍一个与事件发布相关的接口 Applicatio…

【SQLite】SQLite数据库简单使用与Navicat安装-加密

Sqlite为免安装数据库&#xff0c;安装步骤总结&#xff1a; 官网下载Sqlit数据库&#xff0c;官网下载地址:https://www.sqlite.org/download.html 下载: sqlite-dll-win64-x64-3390400.zip或者32位sqlite-dll-win32 sqlite-tools-win-x64-3440200.zip或者32位sqlite-tools-wi…

Opencv入门五 (显示图片灰度值)

源码如下&#xff1a; #include <opencv2/opencv.hpp> int main(int argc, char** argv) { cv::Mat img_rgb, img_gry, img_cny; cv::namedWindow("Example Gray",cv::WINDOW_AUTOSIZE); cv::namedWindow("Example Canny", cv::WINDOW_…

若依vue前端 报错error:0308010C:digital envelope routines::unsupported一步到胃的解决方法

第一步: 直接打开package.json 第二步: 直接替换scripts的内容为下面的内容 "scripts": {"dev": "SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-service serve","build:prod": "SET NODE_OPTIONS--openssl-leg…

无源晶振电路中两端电阻和电容的作用

无源晶振电路中两端电阻和电容的作用是什么&#xff0c;今天晶发电子就详细讲讲&#xff0c;具体如下&#xff1a; 一、并联电阻的作用 配合IC内部电路组成负反馈、移相&#xff0c;使放大器工作在线性区。 并联降低谐振阻抗&#xff0c;使无源晶振易启动。 并联电阻取值大小…

【vCenter Converter】VMware vCenter Converter Standalone 理论, 下载与安装要求

目录 1. vCenter Converter 概述1.1 作用与特征&#xff08;1&#xff09;性能和可靠性&#xff08;2&#xff09;互操作性&#xff08;3&#xff09;管理 2. 下载 vCenter Converter Standalone3. 安装 vCenter Converter Standalone3.1 系统要求&#xff08;1&#xff09;支持…

文件消失但是有占用内存的恢复方法

文件消失但占用内存是一个常见的问题&#xff0c;通常是由于文件系统错误或病毒攻击引起的。在这种情况下&#xff0c;文件虽然从目录结构中消失&#xff0c;但它们仍然占用存储空间。本文将分析这一问题的原因&#xff0c;并探讨解决该问题的几种方法。 文件消失但占用内存的原…

android11-开机自启脚本

1. 编写myshell脚本 diff --git a/device/rockchip/rk356x/ok3568_r/myshell.sh b/device/rockchip/rk356x/ok3568_r/myshell.sh new file mode 100644 index 0000000000..c78b6d93bd --- /dev/nullb/device/rockchip/rk356x/ok3568_r/myshell.sh-0,0 1,4 #!/vendor/bin/shec…

抢先看!Salesforce Spring ‘24中的10个亮点功能!

Spring 24来临在即&#xff0c;Preview Orgs已上线。在Spring 24中&#xff0c;将会为管理员、开发人员和顾问带来更多新功能。在这片云计算的海洋里&#xff0c;一些亮点功能总能在Salesforce生态系统中引起强烈反响。本篇文章为学习者们盘点了Spring 24中的10个亮点功能&…

Vue项目搭建过程

Vue项目搭建过程 1、安装NodeJs 1.1 下载安装包 在 http://nodejs.cn/download/ 上下载64位安装包&#xff0c;然后进行安装&#xff0c;和普通软件的安装一样。 C:\Users\Administrator>node -v v16.13.1C:\Users\Administrator>npm -v 8.5.51.2 安装cnpm # 安装cn…

C语言,数组循环哪家好,指针or下标?

日常工作中&#xff0c;我们经常会用到循环遍历数组元素。不考虑只能使用某一特定方式的情况下&#xff0c;有人喜欢用数组下标遍历&#xff0c;有人则喜欢用指针遍历。那么这两者是否有性能差异呢&#xff1f; 我们先来看两个例子&#xff1a; 代码一 /* a.c */ #include &…

【QML】QML复制文件或文件夹,显示进度,多线程复制

1. 效果 可以显示复制文件和文件夹的进度 复制文件&#xff1a; bool copyFileFunc(QString _from, QString _to);复制文件夹&#xff1a;bool copyDirectoryFiles(const QString &_from, const QString &_to);举例&#xff1a; //复制文件copyhelper.copyFileToDir(&…

推荐12款好用的在线平面设计工具,让设计更简单

平面设计是图形表达和信息展示的重要手段&#xff0c;在游戏场景和角色造型、插画、广告制作等艺术设计领域有着重要的应用&#xff0c;如海报设计、包装设计等。 平面设计强调视觉传达&#xff0c;一般以图像、图形和文字等视觉元素为主要手段&#xff0c;通过排版、配色、构…

SpringBoot、Java AOP实现方式

SpringBoot、Java AOP实现方式 搭建项目环境 我这里直接使用Maven创建项目之后再pom.xml中导入包 Spring版本 如果你的版本有最新的&#xff0c;最简单的办法就是&#xff0c;将版本都换成统一的&#xff0c;因为发布时候都是每个版本统一发布的&#xff0c;如果出现不兼容的…

大模型讲座

盘古NLP大模型典型场景 千亿大模型训练难点和解决方案 训练状态不稳定&#xff08;经常训练中断等&#xff09; 解决1&#xff1a;对loss和梯度等多维状态实时监测。对数据、学习率、参数精度、模型梯度进行针对性调整和断点恢复。 调整学习率的代码如下。调整参数、梯度类似…

kali安装HTTrack报错Unable to locate package httrack

kali安装后&#xff0c;直接安装Httrack导致报错 Unable to locate package httrack &#xff08;这里因为解决了&#xff0c;无法重现&#xff0c;则使用错误的包httrackttttt&#xff09; 原因&#xff1a;安装kali后第一次使用系统&#xff0c;则应该运行update命令 sudo …

基于ssm省出口基地公共信息服务平台论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本n省出口基地公共信息服务平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞…

算法训练营Day19

#Java #二叉树 #双指针 开源学习资料 Feeling and experiences&#xff1a; 二叉搜索树的最小绝对差&#xff1a;力扣题目链接 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的…

eNSP小实验--实现全网互通

目录 一、建立以下拓扑图&#xff0c;并实现全网互通 二、分析 1、接入层交换机SW4、SW5划分vlan 2、汇聚层交换机SW2,SW3配置ip作为vlan网关&#xff0c;与SW1直连 3、核心交换机SW1配置ip 与汇聚层交换机和R1直连 4、SW1,SW2,SW3,R1配置静态路由&#xff0c;使得vlan10,…

算法学习——回溯算法

回溯算法 理论基础回溯法的效率回溯法解决的问题回溯法模板 组合思路回溯法三部曲 代码 组合&#xff08;优化&#xff09;组合总和III思路代码 电话号码的字母组合思路回溯法来解决n个for循环的问题回溯三部曲代码 组合总和思路代码 组合总和II思路代码 理论基础 什么是回溯法…