【JavaEE】Spring Web MVC

【JavaEE】Spring Web MVC

目录

一、Spring Web MVC简介

官方文档介绍:

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.

Parallel to Spring Web MVC, Spring Framework 5.0 introduced a reactive-stack web framework whose name, “Spring WebFlux,” is also based on its source module (spring-webflux). This chapter covers Spring Web MVC. For reactive-stack web applications, see Web on Reactive Stack.

For baseline information and compatibility with Servlet container and Jakarta EE version ranges, see the Spring Framework Wiki.

翻译:

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从一开始就包含在 Spring 框架中。正式名称“Spring Web MVC”来自其源模块的名称 (spring-webmvc),但更常见的名称是“Spring MVC”。

与 Spring Web MVC 并行,Spring Framework 5.0 引入了一个反应式堆栈 Web 框架,其名称“Spring WebFlux”也基于其源模块 (spring-webflux)。本章介绍 Spring Web MVC。对于反应式堆栈 Web 应用程序,请参阅反应式堆栈上的 Web。

有关 Servlet 容器和 Jakarta EE 版本范围的基线信息和兼容性,请参阅 Spring Framework Wiki。

servlet:

Servlet 是⼀种实现动态⻚⾯的技术. 准确来讲Servlet是⼀套 Java Web 开发的规范,或者说是⼀套 Java Web 开发的技术标准. 只有规范并不能做任何事情,必须要有⼈去实现它. 所谓实现 Servlet 规范,就是真正编写代码去实现 Servlet 规范提到的各种功能,包括类、⽅法、属性等.
Servlet 规范是开放的,除了 Sun 公司,其它公司也可以实现 Servlet 规范,⽬前常⻅的实现了
Servlet 规范的产品包括 Tomcat、Weblogic、Jetty、Jboss、WebSphere等,它们都被称
为"Servlet 容器". Servlet 容器⽤来管理程序员编写的Servlet 类.

1.1 MVC简介

MVC:

MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分.
  • View(视图) 指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.
  • Model(模型) 是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.
  • Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型

1.2 Spring MVC

MVC 是⼀种架构设计模式, 也是⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现.
除此之外, Spring MVC还是⼀个Web框架.
总结来说,Spring MVC 是⼀个实现了MVC 模式的 Web 框架.

Spring Boot 只是实现Spring MVC的其中⼀种⽅式⽽已.Spring Boot 可以添加很多依赖, 借助这些依赖实现不同的功能. Spring Boot通过添加Spring WebMVC框架, 来实现web功能.

1.3 @RequestMapping注解

@RequestMapping 是Spring Web MVC 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的
路由映射的.
表⽰服务收到请求时, 路径为 /sayHi 的请求就会调⽤ sayHi 这个⽅法的代码.

路由映射:

当⽤⼾访问⼀个 URL 时, 将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射.

1.3.1 使用

@RequestMapping 既可修饰类,也可以修饰⽅法 ,当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径.

@RestController@RequestMapping("/user")publicclassUserController{@RequestMapping("/hello")publicStringhello(){return"hello Spring";}}

此时访问的就是:http://127.0.0.1:8080/user/hello

路径命名:

@RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断,如果前⾯没有加 / , Spring会拼接上⼀个 / ,但是习惯加上。

1.3.2 @RequestMapping的请求设置

@RequestMapping支持所有请求
指定请求⽅法类型:
我们可以显⽰的指定@RequestMapping 来接收POST的情况,如下所⽰:

1.3.2.1 方法1

形式:在注解中value设置为路径,method设置为需要的请求,可以是数组。
@RequestMapping(value = 路径, method ={RequestMethod.POST, 请求2})
@RestController@RequestMapping("/user")publicclassUserController{@RequestMapping(value ="/hello", method =RequestMethod.POST)publicStringhello(){return"hello Spring";}}

再次使用浏览器访问就会报错:报客户端的错误,因为我们发的请求方式错误

当我们使用Postman发送POST请求就可以成功。

1.3.2.2 方法2

直接使用对应的请求的注解即请求+Mapping。

@RestControllerpublicclassUserController{@PostMapping(value ="/hello")publicStringhello(){return"hello Spring";}}

二、Postman介绍

Postman就是专门测试后端代码的,可以发送不同的请求。
下载链接:https://www.postman.com/downloads/

2.1 创建请求

2.2 界面如下:

2.3 传参介绍

普通传参, 就是通过查询字符串来传参。
URL结构:

Postman通过这个板块传参:

Read more

【白话前端 09】HTML网页结构搭建:从语义化标签到整站规划

早期写网页,前端只有一个容器标签可用:<div>。 结果就是页面里堆叠了几百个 <div>。人眼能通过 CSS 样式看出哪里是头部、哪里是侧边栏。但对于搜索引擎爬虫、或是视障者的屏幕阅读器来说,这只是一坨没有主次的文本碎片。机器根本不知道 <div> 这几个英文字母代表核心内容。 HTML5 引入 <header>、<main> 等语义化标签,本质不是为了给页面换个长相,而是给网页写一份“机器能看懂的结构说明书”。 当把核心代码放进 <main>,把底部备案信息扔进 <footer>,爬虫一进来就明确知道:“抓取有效信息直接去 <main> 里找,底部的东西可以直接跳过。”这就是语义化的底层价值。 本文不背概念,

前端 + agent 开发学习路线

背景:团队启动Agent项目,从零开始学习工程化AI开发 感谢ai老师写的学习指南。存档! 引言:从困惑到清晰 最近团队要启动Agent项目,我第一次接触这个概念时,只停留在“接入大模型API+优化Prompt”的浅层理解。经过大量学习和实践探索,我才发现工程化Agent开发是系统化的架构设计,而不仅仅是API调用。 这篇文章记录我从前端视角出发,探索Agent工程化开发的学习路径和实践经验。如果你也是前端/全栈开发者,想要在AI时代找到自己的定位,这篇指南应该能帮到你。 一、认知重塑:什么是工程化Agent? 1.1 我的错误认知 vs 现实 我原来的理解: Agent = 大模型API + Prompt优化 实际上的工程化Agent: Agent = 系统架构 + 可控执行 + 安全审查 + 领域适配 + 可观测性 1.2 Agent的分层架构(医疗场景示例) 你的主战场 任务分解器 工具路由器 记忆管理器 状态监控器

AI学习笔记:LM studio大模型加载参数说明

AI学习笔记:LM studio大模型加载参数说明

LM Studio加载大模型时参数设置页面的常见参数及设置方法如下: 上下文长度(Context Length) * 意义:表示模型可以处理的最大上下文长度,即模型一次能够考虑的输入文本的最大token数量。较大的上下文长度能让模型更好地理解长文本的语义和逻辑关系,提高对复杂问题的回答准确性,但会增加内存占用和计算量。 * 设置方法:若进行简单问答,可设置为4096;若是处理小红书文案等较长文本,可设为10000以上;写作文、小说等则可尝试设置为100000左右,不过也要根据模型和硬件性能调整,硬件资源有限时,过大的上下文长度可能导致模型运行缓慢甚至无法运行。 GPU卸载(GPU Offload) * 意义:指模型的多少层将被卸载到GPU上进行计算。增加该值可让更多模型计算任务利用GPU的强大算力,提高运行速度和效率,但会占用更多GPU内存。 * 设置方法:一般建议先设置为可使用GPU显存的一半,然后根据模型运行情况和GPU显存占用状况调整。如使用1060显卡可设为4,2060显卡设为8,3060显卡设为16,4060显卡设为32。 CPU线程池大小(CPU Thre

只花了几分钟,用AI开发了一个微信小程序!(附教程)

只花了几分钟,用AI开发了一个微信小程序!(附教程)

现在就直接做了一个微信小程序,为了顺利落地,我做了一个比较简单的小程序。 就是一个加水印的小程序,特别是下图这种满屏水印。 以前用PS一个一个摆上去,现在只要上传图片就能搞定! 整个小程序都是 AI 搞定的,包括名字、头像、设计和代码。 可以直接点下方的小程序👇👇👇体验体验这个 AI 做的小程序~ 那如何做一个自己的微信小程序呢? 话不多说,我们直接上教程! 一、下载AI工具 AI工具用什么都可以比如Cursor、Claude code、trae等等。 我比较喜欢用Codex,没下载的可以跟着我一步一步走。 先下载Codex,这步我也在之前的文章写过,看过的可以直接跳过。 codex下载mac地址:https://openai.com/zh-Hans-CN/codex/ codex下载windows地址:https://apps.microsoft.com/detail/9plm9xgg6vks?hl=zh-CN&gl=CN 下载完成后,