Spring MVC 系列2 -- 创建连接、获取与输出

        上个系列总结了关于Spring MVC 项目的一些基础 ,Spring MVC就是在Spring Boot的基础上引入了Spring Web依赖.接下来就进行总结一下Spring MVC项目的创建,连接,获取参数,输出响应.

目录

1. Spring MVC 创建和连接

1.1 创建Spring MVC 项目实现与浏览器互通

1.2 @RequestMapping注解 

2. 获取参数 

2.1 传递单个参数​编辑

2.2 传递对象

2.3 表单参数传递/传递多个参数(⾮对象)​编辑

2.4 后端参数重命名(后端参数映射)

2.5 @RequestBody 接收JSON对象

2.6 获取URL中参数@PathVariable

2.7 上传文件@RequestPart

2.8  获取Cookie/Session/header

3.  返回数据

3.1 返回静态页面

3.2 返回json

3.3 请求转发或请求重定向

3.4 @ResponseBody 说明

3.5 组合注解 @RestController


1. Spring MVC 创建和连接

        Spring MVC 项目创建和 Spring Boot 创建项目相同(Spring MVC 使⽤ Spring Boot 的方式创建),在创建的时候选择 Spring Web 就相当于创建了 Spring MVC 的项目。在 Spring MVC 中使用@RequestMapping 来实现 URL 路由映射,也就是浏览器连接程序的作用。

1.1 创建Spring MVC 项目实现与浏览器互通

写一个容器类,实现用户到 Spring 程序的互联互通.

package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@RequestMapping("/test") // 路由注册
@ResponseBody // 响应的主体是数据而不是一个静态页面
@Controller  // 将Bean注入到框架中
//@RestController // @ResponseBody + @Controller
// 以上三个缺一不可public class TestController {@RequestMapping("/hi")public String SayHi(String name){return "hi: " + name;}
}

当访问地址:http://localhost:8080/test/hi?name="张三"时,就会输出hi:张三

1.2 @RequestMapping注解 

  • @RequestMapping 是 Spring Web 应用程序中最常被用到到的注解之⼀,它是⽤来注册接口的路由映射的。 
  • @RequestMapping 即可修饰类,也可以修饰方法,当修饰类和⽅法时,访问的地址是类 + 方法。
  • @RequestMapping 也可以直接修饰方法

那么使用 @RequestMapping是进行发送的是Post请求还是Get请求呢?

通过抓包软件可以进行抓包,@RequestMapping默认的是Get请求,但是可以通过设置属性method进行设置.

 也可以不进行设置属性来设置不同类型的方法.

@GetMapping 和 PostMapping

上面两个注解可以直接设置路由的方法类型.

2. 获取参数 

2.1 传递单个参数

2.2 传递对象

传递一个Personl类型的对象

 PostMan构造请求

 控制台打印

2.3 表单参数传递/传递多个参数(⾮对象)

 控制台

2.4 后端参数重命名(后端参数映射)

        某些特殊的情况下,前端传递的参数 key 和我们后端接收的 key 可以不⼀致,比如前端传递了⼀个time 给后端,而后端又是有 createtime 字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使用@RequestParam 来重命名前后端的参数值。

 2.5 @RequestBody 接收JSON对象

 

2.6 获取URL中参数@PathVariable

2.7 上传文件@RequestPart

2.8  获取Cookie/Session/header

1. 获取了Request对象,在SpringMVC中内置了httppSerlvetRequest 和 httpSerlvetResponse 

 访问设置Cookie的地址

控制台打印,获取的cookies

 也可以指定cookies进行返回

获取header 

 2. 获取header 中的userAgent

3. 获取会话session 

 创建会话成功

 获取会话成功

 4. 根据指定的session进行返回

3.  返回数据

3.1 返回静态页面

我们之前加了注解@ResponseBody所以返回的是数据本身,不加这个注解返回的是静态页面

 

 

 抓包结果的响应信息

3.2 返回json

 

3.3 请求转发或请求重定向

1. forward VS redirect

return 不但可以返回⼀个视图,还可以实现跳转,跳转的⽅式有两种:

  • forward 是请求转发;
  • redirect:请求重定向。

2. 区分forward 和  redirect

举例说明:

forward(请求转发)和 redirect(请求重定向)的区别,举例来说,例如,你告诉你妈妈,你想吃辣条,如果你妈妈,说好,我帮你去买,这就是 forward 请求转发;如果你妈妈让你⾃⼰去买,那么就是请求 redirect 重定向。
 

3. forward 和 redirect 具体区别如下:

  • 1. 请求重定向(redirect)将请求重新定位到资源;请求转发(forward)服务器端转发。
  • 2. 请求重定向地址发生变化,请求转发地址不发生变化。
  • 3. 请求重定向与直接访问新地址效果⼀致,不存在原来的外部资源不能访问;请求转发服务器端转发有可能造成原外部资源不能访问(发生数据丢失)。
  • 4. 请求转发如果资源和转发的页面不在⼀个目录下,会导致外部资源不可访问,而重定向就可以进行访问

3.4 @ResponseBody 说明

  • @ResponseBody 返回的值如果是字符会转换成 text/html,如果返回的是对象会转换成application/json 返回给前端。
  • @ResponseBody 可以用来修饰方法或者是修饰类,修饰类表示类中的所有方法都会返回 html 或者json,而不是视图

3.5 组合注解 @RestController

@RestController = @Controller + @ResponseBody
 


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

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

相关文章

DEVICENET转ETHERNET/IP网关devicenet怎么读

远创智控YC-EIP-DNT,你听说过吗?这是一款自主研发的ETHERNET/IP从站功能的通讯网关,它能够连接DEVICENET总线和ETHERNET/IP网络,从而解决生产管理系统中协议不同造成的数据交换互通问题。 这款产品在工业自动化领域可谓是一大利…

【Linux】Linux工具

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 一、Linux安装软件: 1.yum安装 2.Linux和Windows文件互传 问题: 3.yum卸载软件 二、vim编辑器 1.命令模式 2.vim配置项说明 3.vim操作总结 一、Linux安装软件&#…

flask计算pin码

目录 Flask计算pin码 <1> 概念 什么是pin码&#xff1f; pin码生成条件&#xff1f; 读取相关文件绕过过滤 <2> 源码分析 werkzeug 1.0.x版本 计算PIN的源码 werkzeug 2.0.x版本 计算PIN的源码 <3> 计算生成pin的脚本 CTF中 flask-pin的应用 <1…

利用windows恶意软件获取windows主机shell

实验目的&#xff1a; 模拟黑客利用windows恶意软件获取windows主机shell权限的过程 熟悉操作使用的命令实验准备&#xff1a; kali 同网段的windows主机&#xff08;关闭防火墙&#xff09; msfvenom是一个Metasploit独立的有效负载生成器&#xff0c;也是msfpayload和msfenco…

科技成果鉴定报告的重要性

科技成果鉴定是评估科技成果价值、可行性和科学性的过程&#xff0c;鉴定结果直接关系到科技成果的应用和推广。科技成果鉴定报告是鉴定结果的呈现和总结&#xff0c;对于科技成果的评估和利用具有重要的价值和意义。 1、科技成果价值评估&#xff1a;在科技创新和技术发展中…

使用SpringBoot+React搭建一个Excel报表平台

摘要&#xff1a;本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 Excel报表平台是一款功能强大、操作简单的系统平台&#xff0c;可以帮助用户上传…

漏洞复现 || eGroupWare spellchecker.php 远程命令执行漏洞

0x01 阅读须知 我爱林的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用…

多肽合成定制756500-22-8,cyclo(Arg-Gly-Asp-d-Phe-Glu),试剂信息说明

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ 英文名称&#xff1a;cyclo(Arg-Gly-Asp-d-Phe-Glu) 规格标准&#xff1a;1g、5g、10g CAS&#xff1a;756500-22-8 分子式&#xff1a;C26H36N8O9 分子量&#xff1a;604.61 ------cyclo(Arg-Gly-Asp-d-Phe-Glu)结构式-…

windows安装使用 tesseract-ocr

OCR&#xff08;Optical character recognition&#xff0c;光学字符识别&#xff09;是一种将图像中的手写字或者印刷文本转换为机器编码文本的技术。 tesseract-ocr 是由Google开发&#xff0c;支持100多种语言 文档 tessdoc&#xff1a; https://tesseract-ocr.github.io…

【LeetCode】HOT 100(26)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

Web训练项目相关

一、简述 一直没有机会整理前面做过的内容&#xff0c;特此文章整理所学过的web相关训练内容,方便查阅&#xff0c;并在其中参杂对代码理解。 二、相关项目 1.getparameter的url传值 index.jsp <% page language"java" contentType"text/html; charsetu…

利用ffmpeg使用脚本+excel批量合成视频

起因是忘了是什么时候&#xff0c;下载的视频是被切割的一个一个的&#xff0c;所以网上找了方法&#xff0c;利用ffmpeg批量进行了批量合成&#xff0c;这里记录一下&#xff0c;并用gpt解释一下脚本含义。 1、文件名批量转mp4格式 如果文件名不规范&#xff0c;可以利用exce…