Spring MVC

一、什么是MVC

MVC就是一种思想,而Spring MVC是对MVC思想的具体实现

MVC是Model View Controller的所缩写,是一种软件架构模式,它将软件系统Fenwick墨香,视图和控制器三个基本部分。

Model:是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据

View:是应用程序中处理数据显示的 部分,通常视图是一句模型数据创建的

Controller:是应用程序中处理用户交互的部分。通常控制器负责从视图中读取数据,控制用户输入并且向模型发送数据。

MVC执行流程:

  1. 用户的请求首先先到Controller

  2. Controller将请求转发给Model

  3. Model处理业务并且将数据结果给Controller

  4. Controller会将数据给View引擎

  5. View转换数据生成最终的页面给用户

二、什么是Spring MVC

Spring MVC是一个Web框架,是基于Servlet API构建的框架。

它是对MVC思想的具体实现。

在构建项目时,Spring Web就是Spring MVC框架,是Spring boot里的核心。

三、Spring MVC功能

1.连接的功能:将用户浏览器和java程序连接起来,也就是访问一个地址能够调用到Spring程序。

2.获取参数的功能:用户访问的时候会带一些参数,在程序中获取到参数

3.返回数据的功能:执行了业务逻辑以后,要把程序的执行结果返回给用户

🍅Spring MVC创建和连接

        🎈使用@RequestMapping

使用@RequestMapping来实现URL路由映射,使得浏览器连接程序。

@RestController
//可以设置请求类型,规定路径,也可以只写一个name
//name小写
@RequestMapping(path="/sayhi",method = RequestMethod.GET) //必须通过path来
public class TestController {@RequestMapping("/sayhi")public String sayHi(){return "hello";}
}

访问http://localhost:8080/test/sayhi

        🎈@GetMapping

实现HTTP连接,但是只支持GET类型的请求。

如果有规定之只能使用get类型的请求,就直接使用

@GetMapping("/sayhi2")public String sayHi2(){return "hello";}

 访问2http://localhost:8080/test/sayhi2

 @PostMapping就是只支持Post类型的请求。

🍅获取参数

        🎈获取单个参数

得到name。

@RestController
@RequestMapping("/test")
public class TestController2 {@RequestMapping("/getname")
//使用servletpublic String getName(HttpServletRequest request){return "Name:"+request.getParameter("name");}@RequestMapping("/getnam2")
//使用Spring的方式
public String getName2(String name) { //依赖注入return "Name:" + name;
}

        🎈上传文件

@RequestMapping("/upload")public String upLoad(@RequestPart("myfile")MultipartFile file) throws IOException {//1.生成一个唯一的id | UUID = 全球唯一ID -> MAC + 随机种子 + 加密算法String name = UUID.randomUUID().toString().replace("-","");//2.得到源文件的后缀名name += file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));String path = "D:\\image\\ " + name;file.transferTo(new File(path));return path;}

        🎈获取Cookie/Session/header

获取Cookie

//获取cookie@RequestMapping("/getcookie")public String getCookie(@CookieValue("java")String ck){return ck;}

获取session 

//设置session@RequestMapping("/set_session")public String doPostConstruct(HttpServletRequest request){HttpSession session = request.getSession();if (session != null){session.setAttribute(_SESSION_KEY,"张三");return "session set success";}else {return "session set fail";}}//获取session@RequestMapping("/getsession")public String getSession(@SessionAttribute(required = false,value = "SESSION_KEY")String name){return name;}

获header

@RequestMapping("/header")
@ResponseBodypublic String header(@RequestHeader("User-Agent") String userAgent) {return "userAgent:"+userAgent;

🍅返回数据

       🎈 返回静态页面

首先创建一个静态页面:

 

@Controller
public class TestController3 {@RequestMapping("/index")public String index(){return "hello.html";}}

        

        🎈返回text/html 

@Controller
@ResponseBody//当成数据返回
public class TestController3 {@RequestMapping("/index")public String index(){return "hello.html";}
}

四、请求转发和请求重定向的区别

 1.请求重定向(redirect)将请求重新定位到资源;

        请求转发(forward)服务器端转发

2.请求重定向地址发生变化;

        请求转发地址不发生变化

3.请求重定向与直接访问新地址效果一致,不存在原来的外部资源不能访问;

        请求转发服务器端转发有可能会造成原外部资源不能访问

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

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

相关文章

对各种项目梳理Maven、SpringBoot等介绍

对于maven 项目 首先结束pom.xm依赖库 https://www.cnblogs.com/zhangweizhong/p/13582903.html plugin插件 maven项目中pom.xml的build中的plugin你真的了解过吗?都是干货_pom 中plugin_is me monday的博客-CSDN博客

7.27 Qt

制作简易小闹钟 Timer.pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # dep…

网站SEO优化:提升搜索排名与流量引爆

导言: 在互联网时代,网站SEO(搜索引擎优化)是提高网站搜索排名、吸引流量、增加曝光的重要策略。通过优化网站结构、内容和链接等方面,让搜索引擎更好地理解和收录网站内容,从而为网站带来更多有价值的有机…

Cisco 路由器配置管理

大多数网络中断的最常见原因是错误的配置更改。对网络设备配置的每一次更改都伴随着造成网络中断、安全问题甚至性能下降的风险。计划外更改使网络容易受到意外中断的影响。 Network Configuration Manager 网络更改和配置管理 (NCCM)解决方案&#xff…

「JVM」性能调优工具

「JVM」性能调优工具 一、jcmd1、jcmd 能干嘛?2、与JVM相关的命令3、示例 二、jmap1、jmap有什么用?2、jmap的命令大全3、示例 三、jps1、jps有什么用?2、jps命令以及示例 四、jstat1、jstat有什么用?2、jstat命令以及示例 五、js…

Python(四十五)二层循环中的break和continue

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

剑指Offer-学习计划(四)双指针(下)

剑指 Offer 57. 和为s的两个数字 剑指 Offer 58 - I. 翻转单词顺序 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 题目一:调整数组顺序使奇数位于偶数前面 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的…

WPF实战学习笔记08-创建数据库

创建数据库 创建文件夹 ./Context 创建文件 ./Context/BaseEnity.cs ./Context/Memo.cs ./Context/MyTodoContext.cs ./Context/Todo.cs ./Context/User.cs 创建数据对象 ./Context/BaseEnity.cs namespace MyToDo.Api.Context {public class BaseEnity{public int Id…

C#之泛型

目录 一、概述 二、C#中的泛型 继续栈的示例 三、泛型类 (一)声明泛型类 (二)创建构造类型 (三)创建变量和实例 (四)比较泛型和非泛型栈 四、类型参数的约束 (一…

elementUI --- el-select 下拉框 日历 级联选择

element UI 组件库中的 select 选择器 中下拉列表的样式,在页面渲染的时候,总是渲染为仅次于body级别的div ,这样子覆盖样子会影响全局其他的select选择器下拉框样式,试图通过给el-select加父标签来覆盖,然而并没有卵用…

【FAQ】关于无法判断和区分用户与地图交互手势类型的解决办法

一. 问题描述 当用户通过缩放手势、平移手势、倾斜手势和旋转手势与地图交互,控制地图移动改变其可见区域时,华为地图SDK没有提供直接获取用户手势类型的API。 二. 解决方案 华为地图SDK的地图相机有提供CameraPosition类&…

Linux 之 Vi 编辑器

文章目录 1. vi/vim介绍2. vi/vim使用详解2.1 vi/vim的特点2.2 vi/vim三种编辑模式2.3 文本编辑方式 1. vi/vim介绍 vi编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi是效率很高的文本编辑器。尽管在linux上也有很多…

手机视频聊天分享

在人际互动的手机APP中,增加语音视频聊天功能是一个常见的需求。而现在,更进一步,在某些场景下,我们需要能将自己的手机屏幕分享给他人,或者是观看他人的手机屏幕。那么,这些常见的功能是如何实现的了&…

哈希表及其模拟实现

文章目录 一、解决哈希冲突1.1闭散列1.1.1线性探测1.1.2二次探测 1.2开散列 二、模拟实现哈希表三、HashMap源码的一些相关内容 哈希(散列)方法:构造一种存储结构,通过某种函数使元素的存储位置与它的关键码之间能够建立 一 一 映…

【JavaWeb】Tomcat底层机制和Servlet运行原理

🎄欢迎来到dandelionl_的csdn博文,本文主要讲解Java web中Tomcat底层机制和Servlet的运行原理的相关知识🎄 🌈我是dandelionl_,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一…

Java ServletRequest 类源码解析

ServletRequest 是 Java Servlet API 中的接口,用于提供对客户端发起的请求的访问。它代表一个客户端的请求,并包含了请求的信息,例如请求头、请求参数、请求体等。 以下是 ServletRequest 接口的一些主要属性和方法的解析: 属性…

HCIA实验二

实验要求: 1.R2为ISP,只能配置IP 2.R1-R2之间为HDLC封装 3.R2-R3之间为PPP封装,pap认证,R2为主认证方 4.R2-R4之间为PPP封装,chap认证,R2为主认证方 5.R1、R2、R3构建MGRE,仅R1的IP地址固定…

【Nginx12】Nginx学习:HTTP核心模块(九)浏览器缓存与try_files

Nginx学习:HTTP核心模块(九)浏览器缓存与try_files 浏览器缓存在 Nginx 的 HTTP 核心模块中其实只有两个简单的配置,这一块也是 HTTP 的基础知识。之前我们就一直在强调,学习 Nginx 需要的就是各种网络相关的基础知识&…

AndroidStudio设计一个计算器

界面设计 activity_calcuator.xml 设计&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto&qu…

Spring 官方文档及相关资料的网址集合

文章目录 MavenSpringSpring FrameworkSpring BootSpring Cloud AlibabaNacos Maven Maven 仓库依赖包官方查询通道&#xff1a;https://mvnrepository.com/ Maven 插件官方文档&#xff1a;https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*&#xff1a;https://m…