SpringMVC基础Controller
文章目录
- Controller 的编写和配置
- 1. Controller 注解类型
- 2. @RequestMapping 注解类型
- 3. 编写请求方法
- 4. 请求参数和路径变量
Controller 的编写和配置
@Controller 注解和 @RequestMapping 注解是 Spring MVC 最重要的两个注解。
使用基于注解的控制器的优点如下:
-
一个 Controller 类可以处理多个动作,而实现了一个 Controller 接口的控制器只能处理一个动作。
-
基于 Controller 注解的控制器的请求映射不需要写在配置文件中。使用 @RequestMapping 注解类型,可以对一个方法进行请求处理。
1. Controller 注解类型
Spring 使用扫描机制来找到应用程序中所有基于注解的控制器类。为了保证 Spring 能找到你的控制器,必须完成两件事:
// ...
@ComponentScan("...")
public class SpringWebConfig implements WebMvcConfigurer {...
}
-
自定义一个配置类,实现 WebMvcConfigurer 接口;
-
在配置类上标注,@ComponentScan 扫描你的 @Controller 所在的包。
注意,不要让 Spring 扫描一个太广泛的包,这会包含无意义的行为。
2. @RequestMapping 注解类型
@RequestMapping 注解类型的作用如同起名字所暗示:映射一个请求和一个方法。可以使用它注解一个方法或类。
被 @RequestMapping 注解的方法将成为一个 请求处理方法 ,在接收到URL请求时被调用。
@RequestMapping(value="/hello", method = {RequestMethod.GET, RequestMethod.POST})
public ModelAndView printHello() {System.out.println("Hello World");ModelAndView mav = new ModelAndView();mav.addObject("message", "Hello Spring MVC Framework!");mav.setViewName("hello");return mav;
}
value 属性是 @RequestMapping 的默认属性,唯一时可省略属性名。
method 属性用来指示该方法仅处理哪些 HTTP 方法。若 method 属性只有一个值时,则无须花括号。若没有指定 method 属性值,则请求方法可处理任意 HTTP 方法。
此外,如果用 @RequestMapping 注解一个控制器类,那么,所有的方法都将映射为『相对于』类级别的请求。
3. 编写请求方法
每个请求处理方法的参数和返回值『既灵活又严格』。
最为常见的参数类型有:
-
HttpServletRequest、HttpServletResponse、HttpSession
-
Map、Model、ModelMap
-
表单对象(次常用)
-
带指定注解的参数(最常用)
最为常见的返回值类型有:
-
ModelAndView(最常用)
-
Model、View
-
String(次常用)
-
被当作 View 的模型对象的任意类型
对于初学者而言,如果你觉得『参数类型和返回值类型过于灵活多样,以至于你无法确定你使用哪个种更合适』,那么你就使用 HttpServletRequest、HttpServletResponse 和 ModelAndView ,这是 100% 不会有问题的百搭组合。当然,使用过程中代码会略显罗嗦。
@RequestMapping("...")
public ModelAndView demo(HttpServletRequest request, HttpServletResponse response) {...
}
4. 请求参数和路径变量
Spring MVC 提供了一个更简单的方法来获取 Get 请求参数:通过使用 @RequestParam 注解。
@RequestMapping("/hehe/{id}")
public ModelAndView printGoodbye(@PathVariable int id) {System.out.println(id);ModelAndView mav = new ModelAndView();mav.setViewName("hello");return mav;
}
此处需要注意的是,拦截规则是拦截所有请求,还是拦截特定后缀(无法拦截并触发该方法的执行)?!
相关文章:
SpringMVC基础Controller
文章目录 Controller 的编写和配置1. Controller 注解类型2. RequestMapping 注解类型3. 编写请求方法4. 请求参数和路径变量 Controller 的编写和配置 Controller 注解和 RequestMapping 注解是 Spring MVC 最重要的两个注解。 使用基于注解的控制器的优点如下: …...
spark 参数
spark.yarn.executor.memoryOverhead 默认值是384M Configuration - Spark 3.5.1 Documentation...
java调用jacob进行文件转换ppt转pdf或者png
java调用jacob进行文件转换ppt转pdf或者png 前情提要 最近项目上,遇到一个复杂的ppt,最终要求是要将ppt每一页转成图片原本这个是不难,网上一搜一大堆案例,外加我本身也比较精通aspose,那还不是分分钟搞定。结果就是…...
鸿蒙HarmonyOS应用开发之使用DevEco Studio模板构建NDK工程
NDK通过CMake和Ninja编译应用的C/C代码,编译过程如下图所示。 核心编译过程如下: 根据CMake配置脚本以及build-profile.json5中配置的externalNativeOptions构建参数,与缓存中的配置比对后,生成CMake命令并执行CMake。 执行Ninja…...
uniapp流浪动物救助小程序Java宠物领养小程序springboot
uniapp流浪动物救助小程序Java宠物领养小程序springboot 代码40块,需要的私聊 前台基于uniapp小程序 后台管理基于springbootvue前后端分离项目 开发语言:Java 框架:springboot vue JDK版本:JDK1.8(或11…...
工程企业的未来选择:Java版工程项目管理系统平台与数字化管理的融合
在现代化的工程项目管理中,一套功能全面、操作便捷的系统至关重要。本文将介绍一个基于Spring Cloud和Spring Boot技术的Java版工程项目管理系统,结合Vue和ElementUI实现前后端分离。该系统涵盖了项目管理、合同管理、预警管理、竣工管理、质量管理等多个…...
Vue使用el-statistic和el-card显示大屏中的统计数据
一、页面内容: <el-row :gutter"20"><el-col :span"6"><el-card class"box-card"><div><el-statisticgroup-separator",":precision"2":value"value2":title"tit…...
12.2024
如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。 1 2 6 7 15 16 28 29... 35 8 14 17 27 30... 4 9 13 18 26 31... 10 12 19 25 32... 11 20 24 33... 21 23 34.. 22 35... 容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少…...
【学习心得】Jupyter常用操作与魔法方法
一、安装与打开 Jupyter是什么我就不啰嗦了,直接安装: pip install jupyter 安装完后,在你想要打开的项目路径下,唤出CMD执行下面命令就可以使用jupyter notebook了 jupyter notebook 也可以用更加好用的jupyter lab࿰…...
Linux命令别名
别名是命令的快捷方式。对于需要经常执行,并需要很长时间输入的长命令创建快捷方式很有用。 临时修改 语法: alias 别名原命令 [选项] [参数][rootdd ~]# alias cdtcd /test #切换到/test下的快捷命令 删除别名: unalias 别名 unalias cd…...
Docker和 Containerd 的区别
自 Docker 开启了使用容器的爆发式增长,有越来越多的工具和标准来帮助管理和使用这项容器化技术,与此同时也造成了有很多术语让人感到困惑。 容器生态系统 容器生态系统是由许多令人兴奋的技术、大量的专业术语和大公司相互争斗组成的。 幸运的是&…...
Qt实现TFTP Server和 TFTP Client(二)
3 实现 3.1 Core Core模块包括下面4个类: TFTPBaseUdpTFtpClientFileTFtpServerFile 3.1.1 TFTP TFTP类实现了TFTP协议。 3.1.1.1 TFTP定义 class TFtp { public:TFtp();enum Code {RRQ 0x0001,//Read requestWRQ 0x0002,//Write requestDATA 0x0003…...
【b站李炎恢】Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢
课程地址:【Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢】 https://www.bilibili.com/video/BV1U54y127GB/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 备注:虽然标题声明还在更新中,但是看一些常用…...
AI大语言模型工程师学习路线
文章目录 运行LLMSLLM APIS开源的大语言模型Prompt engineering1. 明确目标2. 理解模型能力3. 使用示例4. 精确和具体的指令5. 考虑上下文6. 避免偏见和不准确的信息7. 测试和迭代8. 使用模板9. 考虑多语言能力10. 注意伦理和合规性结构化输出1. 使用明确的提示(Prompts)2. 采…...
基于树莓派实现 --- 智能家居
最效果展示 演示视频链接:基于树莓派实现的智能家居_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tr421n7BM/?spm_id_from333.999.0.0 (PS:房屋模型的搭建是靠纸板箱和淘宝买的家居模型,户型参考了留学时短租的公寓~&a…...
基于Arduino IDE 野火ESP8266模块 一键配网 的开发
一、配网介绍 ESP8266 一键配网(也称为 SmartConfig 或 FastConfig)是一种允许用户通过智能手机上的应用程序快速配置 ESP8266 Wi-Fi 模块的方法,而无需手动输入 SSID 和密码。为了实现这一功能,则需要一个支持 SmartConfig 的智能…...
左手医生:医疗 AI 企业的云原生提效降本之路
相信这样的经历对很多人来说并不陌生:为了能到更好的医院治病,不惜路途遥远奔波到大城市;或者只是看个小病,也得排上半天长队。这些由于医疗资源分配不均导致的就医问题已是老生长谈。 云计算、人工智能、大数据等技术的发展和融…...
ceph集群部署
1. 每台服务器各增加2块硬盘(类型最好是相同的) 2. 将三台主机名设为node1.openlab.edu、node2.openlab.edu、node3.openlab.edu 3. 登录所有主机,配置 /etc/hosts 文件 192.168.136.55 ceph1.openlab.edu ceph1 192.168.136.56 ceph2.openlab.edu ceph2 192.168…...
C#WPF控件Label宽度绑定到父控件的宽度
如何将Label的宽度绑定到它所在Grid的宽度。跟随父控件的宽度的改变而改变。 <Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml&q…...
HMI的学习
什么是HMI?了解HMI或人机界面的一些基础知识_哔哩哔哩_bilibili Human Machine Interface 人机界面 在工业中使用HMI来控制和监视设备 常见的HMI是ATM机 通过屏幕和按钮来完成取款或存款 工业中,操作员或维护人员可以从HMI操作和监视设备。 它们可能…...
别再乱填了!手把手教你配置Keil的IROM1和IRAM1,让STM32程序跑得更稳
深度解析Keil内存配置:从原理到实战的STM32开发指南 当你第一次在Keil MDK的"Target"选项卡中看到IROM1和IRAM1的配置项时,是否感到困惑?这些看似简单的地址和大小设置,实际上关系到整个嵌入式系统的稳定运行。许多开发…...
Realistic Vision V5.1镜像部署实操:解决‘模型路径不存在’异常的完整排查链
Realistic Vision V5.1镜像部署实操:解决‘模型路径不存在’异常的完整排查链 1. 引言:从“模型路径不存在”说起 如果你在部署Realistic Vision V5.1虚拟摄影棚时,满怀期待地启动程序,结果却在控制台看到一行冰冷的“模型路径不…...
PlayCover 2.0重构Mac游戏体验:社交与云服务双引擎驱动革新
PlayCover 2.0重构Mac游戏体验:社交与云服务双引擎驱动革新 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover 在Mac平台运行iOS游戏长期面临两大痛点:缺乏社交连接与跨设备数据同…...
双摆控制系统:LQR、LQG、LQI控制器及龙伯格观测器文件清单
移动小车上双摆的LQR、LQG、LQI控制器和龙伯格观测器文件列表: LQG.m LQG_non_linear.m LQI.m LQR.m LQR_Non_linear.m Luenberger_observer.m Observer_non_linear.m 最近蹲在实验室的工位上啃移动小车双摆的控制代码,翻来覆去调了快两周,终…...
OpenRocket:从设计到飞行的全链路火箭仿真实战指南
OpenRocket:从设计到飞行的全链路火箭仿真实战指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 火箭爱好者与工程师的终极工具:…...
全网最详细的AI产品经理学习路线,非常详细收藏这一篇就够了
前言 AI产品经理作为一个新兴且热门的职业,不仅需要具备传统产品经理的能力,还需要对AI技术有深入的理解和应用。本学习路线旨在帮助有志于成为AI产品经理的学习者系统地掌握所需的知识和技能。 前排提示,文末有大模型AGI-CSDN独家资料包哦…...
专访越擎科技创始人: 外骨骼的设计与仿真该如何入门
具身智能机器人领域的技术创新如火如荼,从轮式机器人,人形机器人,四足机器狗等不一而足。而从分类来看,外骨骼机器人作为增强人的能力的典型应用,不仅在医疗领域发挥重要作用,在工业应用等场景中也大大的增…...
保姆级教程:给你的ClickHouse 23.8装上‘仪表盘’(Prometheus+Grafana监控配置详解)
ClickHouse 23.8全链路监控实战:从Prometheus埋点到Grafana告警设计 当你的ClickHouse集群查询延迟突然从200ms飙升到5秒,是内存不足?磁盘IO瓶颈?还是并发查询堆积?本文将带你构建一套完整的监控告警体系,让…...
Fun-ASR-MLT-Nano-2512快速上手:Web界面操作,无需代码基础
Fun-ASR-MLT-Nano-2512快速上手:Web界面操作,无需代码基础 1. 语音识别新选择:Fun-ASR-MLT-Nano-2512 1.1 模型简介 Fun-ASR-MLT-Nano-2512是阿里通义实验室推出的轻量级多语言语音识别模型,经过开发者by113小贝的二次开发优化…...
利用通义千问模型辅助C语言学习:从基础语法到指针难题解析
利用通义千问模型辅助C语言学习:从基础语法到指针难题解析 学C语言,是不是经常卡在某个概念上,比如那个让人又爱又恨的“指针”?或者写了一段代码,运行结果和预想的完全不一样,却死活找不到原因࿱…...
