当前位置: 首页 > news >正文

Spring MVC

一、Spring MVC介绍

a. Spring MVC是一个Web框架
b. Spring MVC是基于Servlet API构成的
MVC 是 Model View Controller 的缩写。
MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。
学习Spring MVC目标:
a.连接功能:将用户(浏览器)和JAVA程序连接起来,也就是访问一个地址能调用到Spring程序。
b.获取参数的功能:用户访问的时候会带一些参数,在程序中想办法获得这些参数。
c.输出数据的功能:执行了业务逻辑之后,要把程序执行结果返回给用户。

二、连接功能实现

2.1 @RequestMapping 注解介绍

用来注册接口的路由映射
即可修饰类,也可以修饰⽅法

package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@RequestMapping("/user")
public class UserController {@RequestMapping("/sayhi")//路由映射(用户和程序的连接)@ResponseBody//当前方法返回的是一个非静态页面的数据public String sayHi(){return "Hello,Spring MVC";}
}

@RequestMapping默认支持GET请求,但也支持Post请求

2.2 只支持GET请求

三种写法:
在这里插入图片描述

2.3只支持Post请求

在这里插入图片描述

二、获取参数实现

2.1 获取单个参数

在这里插入图片描述

在这里插入图片描述

2.2 获取多个参数(或者表单参数)

在这里插入图片描述

在这里插入图片描述

2.3 获取对象

定义UserInfo对象:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4获取JSON对象

在这里插入图片描述
利用postman结果显示如下:
在这里插入图片描述

2.5 后端参数重命名(扩展知识)

当前端传递的参数和后端的参数不一致,就可以用这种方式。
使用注解@RequestParam
在这里插入图片描述
在这里插入图片描述

2.6获取URL中的参数

利用注解@PathVariable
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.7 上传文件(图片)

关键步骤:
a.接受前端传递的文件:
@RequestPart(“file”)MultipartFile file
b.将前端传递过来的文件保存到本地:
file.transferTo(new File(filePath + filename));

第一步:
在这里插入图片描述
具体实现:
在这里插入图片描述

@Controller
@Slf4j
@ResponseBody//当前方法返回的是一个非静态页面的数据
@RequestMapping("/user")
public class UserController {@Value("${myfile.path}")private String filePath;//从配置文件中获取图片的上传路径@RequestMapping("/upfile")public boolean upFile(String username, @RequestPart("file")MultipartFile file){boolean result = false;try {//获取原文件的名称String fileType = file.getOriginalFilename();//获取文件名称后缀fileType= fileType.substring(fileType.lastIndexOf("."));//文件名称String filename = UUID.randomUUID().toString() + fileType;file.transferTo(new File(filePath + filename));result = true;log.info(username+"上传图片成功!");} catch (IOException e) {System.out.println("图片上传失败");}return result;}

用postman模拟:
在这里插入图片描述

2.8获取cookie

2.8.1传统方式获取

在这里插入图片描述
在这里插入图片描述

2.8.2简洁方式获取

使用注解**@CookieValue**
在这里插入图片描述
在这里插入图片描述

2.9获取请求头header中的信息

使用注解@RequestHeader
在这里插入图片描述
在这里插入图片描述

2.10 获取Session

使用注解@SessionAttribute

 //定义全局的session keyprivate final String SESSION_KEY = "SESSION_KEY";/*** 设置 session** @param request* @return*/@RequestMapping("/setsess")public boolean setsess(HttpServletRequest request){boolean result =false;//1.得到session对象try {HttpSession session = request.getSession(true);session.setAttribute(SESSION_KEY, "java");result = true;}catch (Exception e){log.info("出现了异常:" + e.getMessage());}return result;}/*** 获取session* @param data* @return*/@RequestMapping("/getsess")public String getSess(@SessionAttribute(name = "SESSION_KEY",required = false) String data){return data;}

在这里插入图片描述

三、返回数据

默认情况下返回的是一个页面,而不是页面中的数据。
现在因为前后端分离,所以可以只返回数据就可以了。
例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
综上可以看到,当不加注解时,返回的是一个页面,而不是页面中的数据。

3.1使用注解@ResponseBody

当@ResponseBody加在类上,说明这个类中的所有方法,返回的都是一个非静态页面的数据。
在这里插入图片描述
在这里插入图片描述

3.2注解@RestController

@RestController = @Controller + @ResponseBody
源码:
在这里插入图片描述
使用@RestController一个注解可以代替之前的两个注解
在这里插入图片描述

四、请求转发和请求重定向

4.1具体实现

1.forward:请求转发
2.redirect:请求重定向

在这里插入图片描述
请求转发的结果:
在这里插入图片描述
请求重定向的结果:
在这里插入图片描述

4.2 forward和redirect的具体区别

1.请求重定向(redirect)将请求重新定位到资源;请求转发(forward)服务器端转发。
2.请求重定向地址发⽣变化,请求转发地址不发⽣变化。

http://www.lryc.cn/news/5828.html

相关文章:

  • 类与对象(上)
  • 正确安装 torch_geometric库
  • 【Unity VR开发】结合VRTK4.0:自身移动(滑动)
  • G1垃圾回收器详解
  • tws耳机哪个牌子音质好?tws耳机音质排行榜
  • TIA博途中DB数据块清零的具体方法示例
  • iptables防火墙屏蔽指定ip的端口
  • JavaScript Math(算数) 对象
  • 超详细的JAVA高级进阶基础知识04
  • Python 运算符?
  • linux nuxt 部署 问题汇总
  • C++内存管理
  • 电子招投标系统源码之 —采购数字化转型快人一步,以大数据支撑供应链管理未来
  • ie获取cookie数据,中文乱码;cookie中文乱码终极解决办法
  • day16_关键字this和super丶就近原则和追根溯源原则
  • MySQL 共享锁 (lock in share mode),排他锁 (for update)
  • 类与对象(下)
  • feign技巧 - form方式传值
  • MATLAB | 情人节来绘制更立体的玫瑰花吧
  • 【Python表白代码】 2.14“Valentine‘s Day”“没别的意思 就是借着特殊日子说声喜欢你”你在哪儿?我去见你~(各种玫瑰源码合集)
  • 压力应变电桥信号隔离放大变送器差分输入0-±10mV/0-±20mV转0-20mA/0-10v
  • Linux系统之部署个人导航页
  • 四、Windows 平台安装 MongoDB
  • 浅谈应用安全测试工具
  • 四类(七种)排序算法总结
  • [oeasy]python0083_十进制数如何存入计算机_八卦纪事_BCD编码_Binary_Coded_Decimal
  • 理解框架的编译时与运行时
  • 推挽电路---采用二极管消除交越失真----克服交越失真的互补推挽输出电路图
  • day11_面向对象
  • 大数据处理学习笔记1.1 搭建Scala开发环境