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

4.SpringWeb

一、创建项目

LomBok:辅助开发工具,减少代码编写

Spring Web:带上Spring MVC,可以做Web开发了

Thymleaf: Web开发末班引擎(不常用)

创建好,如下:

static/ 放置静态资源的根目录

templates/ 放置模板文件的根目录

二、资源配置

1、静态资源:全部放在src/main/resuorces/static/ 目录下即可

2、动态资源:

  1. 必须是被Spring管理的Bean对象&&要求必须使用@Controller修饰
  1. SpringMVC会去判断,只处理@Controller修饰的Bean对象
  1. 和Servlet不同,动态资源不是以一个个类作为基本单位。

而是以@Controller修饰的bean下的一个个方法作为基本单位。

换言之,一个类可以提供多个动态资源

  1. 方法通过@RequestMapping(url)来明确是动态资源+绑定资源路径

如图,提供了两个动态资源路径:

  1. 资源路径: /hello

支持的HTTP方法是:GET、POST等

  1. 资源路径: /world

支持的HTTP方法是:GET、POST等

三、必须掌握的

  1. 如何利用配置文件做最常见的修改: server.port=8080

  1. 静态资源所在根目录 src/main/resources/static [实际上就是配置中的默认的值,可以利用配置文件修改]

  1. 动态资源: M-V

(1)@Controller + @RequestMapping

(2)Model + src/main/resources/templates 前提(勾选了thymeleaf模板)


根据请求+ @RequestMapping可以确定本次请求是 DemoController#hello(Model)

内部的逻辑处理,此时是适配器:

此时真正执行我们的方法,然后返回一个ModelAndView


四、Spring Web

  1. 连接的功能:

将用户(浏览器)和Java程序连接起来,也就是访问一个地址能够调用我们的Spring程序。

那么如何关联动态资源,总的来说:通过

  1. @Contorller注解修饰类

把类注册成Spring bean ;

表示该bean用于控制器。

  1. @RequestMapping注解修饰方法,给出方法表示的资源的路径

控制台测试:出现了405状态,说明支支持get,不支持send

特殊之处:

可以通过@RequestMapping(method= .... )或者 @GetMapping / @PostMapping来限制动态资源支持的HTTP方法;

可以通过 @RequestMapping修饰类,给该类下的所有资源添加统一的URL前缀(prefix)

2.获取参数的功能

用户访问的时候,会带一些参数,在程序中要想办法获取到参数。

3.输出数据的功能:

执行了业务逻辑之后,要把程序执行的结果返回给用户。

4.方法的签名到底是什么样?

  1. 形参类型有哪些? https://docs.spring.io/spring-framework/docs/current/reference/html#mvc-ann-arguments

  1. 返回值类型有哪些?

只要是文档上的作为形参,Spring都可以正确的调用

mappedHandleer 指明了哪个方法要被执行。

HandleerAdapter(句柄 适配器) 根据方法签名中的形参,可以适配创建实参对象,利用反射去调用正确的方法。

5.方法签名中,最常用的几种模式

  1. 传统Servlet模式

  1. 使用ResponseBody注解

  1. 前后端分离,直接返回JSON

  1. @RequestPara注解,当变量名就是参数名时,可以省略

请求参数可以直接指定Int类型,Spring会帮我们转换

请求参数如果比较多,可以用一个对象进行接收(dog)


五、User登陆/注册/用户列表JSON的例子演示

1.SpringMVC(SpringWeb)的基本流程

  1. 从Servlet的流程,走到了Spring的DispatchServletdoDispatch的方法中

  1. 根据请求中的各种信息(方法、URL),在已注册的所有bean对象中(这些对象被@Controller修饰),查找对应的方法进行请求处理(依赖@RequestMapping注解)

  1. 根据方法中的不同请求参数类型以及返回值类型,生成调用的方法的参数(实参)信息

HandllerAdapter中完成

  1. 调用handle.invoke(...)得到ModelAndView对象

  1. 根据对应的解析引擎(视图引擎),得到view对象

  1. 渲染并生成Response对象

  1. 走Servlet流程发送响应对象

2.如何进行动态资源绑定

@Controller

@RequestMapping、@GetMapping、@PostMapping

3.参数的形式

  1. void (HttpServletRequest request,HttpServletResponse resp) 完全按照Servlet的模式处理即可

  1. @ResponseBody

String(@RequestParam(....) String paramName) 直接处理

其中,@RequestParam可以省略 修饰形参,表示形参的值来自请求参数

可以不写String

可以直接包装成对象

  1. @ResponseBody 用来修饰方法表示返回值会被完整的当成响应体

XXXObject(...) 返回JSON串

4.....(HttpSession session)

相关文章:

4.SpringWeb

一、创建项目LomBok:辅助开发工具,减少代码编写Spring Web:带上Spring MVC,可以做Web开发了Thymleaf: Web开发末班引擎(不常用)创建好,如下:static/ 放置静态资源的根目录templates/ 放置模板文件的根目录 二、资源配置…...

C++中的枚举与位域

枚举在传统 C中,枚举类型并非类型安全,枚举类型会被视作整数,则会让两种完全不同的枚举类型可以进行直接的比较(虽然编译器给出了检查,但并非所有),甚至同一个命名空间中的不同枚举类型的枚举值…...

第19章 MongoDB Limit与Skip方法教程

第19章 MongoDB Limit与Skip方法教程 MongoDB Limit() 方法 如果仁兄需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。 语法 limit()方法基本语法请…...

进程间通信——消息队列

多线程 进程间通信——消息队列 消息队列——发送 测试代码 #include <sys/types.h> #include <sys/msg.h> #include <sys/ipc.h>#include <stdlib.h> #include <stdio.h> #include <string.h>#define MAX_BUF_SIZE 255struct msgtype {…...

OpenMMLab 实战营打卡 - 第 7 课

OpenMMLab MMSegmentation内容概要MMSegmentation统一超参MMSegmentation 的项目结构分割模型的模块化设计分割模型的配置文件主干网络的配置ResNet v1c主解码头的配置辅助解码头的配置数据集配置数据处理流水线常用训练策略参考资料内容概要 • MMSegmentation 项目概述 • M…...

MAC Boook打印长图

有时老师给留的作业是一张长图&#xff0c;直接打印或者通过把图放入word打印都不能实现把长页分成多页进行打印。通过网上找到思路可以通过EXCEL实现将长图分成多页打印。 测试版本 macos&#xff1a;ventura 13.1 office 365 注&#xff1a;同样适用windows版本的excel 第…...

web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法

web3相关学习一并收录至该博客&#xff1a;web3学习博客目录大全 前情衔接&#xff1a;web3:区块链常见的几大共识机制及优缺点 目录前言算法公式与原理算法公式运作原理以Peer Coin为例缺陷优点缺点特点分类发展历程casper协议1.什么是无成本利益关系问题2.引入casper协议解决…...

Linux fork()系统调用流程解析

1. fork()函数介绍&#xff08;百度百科&#xff09; fork系统调用用于创建一个新进程&#xff0c;称为子进程&#xff0c;它与进程&#xff08;称为系统调用fork的进程&#xff09;同时运行&#xff0c;此进程称为父进程。创建新的子进程后&#xff0c;两个进程将执行fork&…...

自定义软件帮助文档(qt assistant实现)

网上搜了一下&#xff0c;软件的帮助文档&#xff0c;三个都可以&#xff1a;https://github.com/zealdocs/zeal&#xff0c;https://zealdocs.org/&#xff0c;看看这个博客说的 https://blog.csdn.net/libaineu2004/article/details/125028913&#xff0c;这个也是开源的&…...

ESP32设备驱动-GPIO外部中断

GPIO外部中断 文章目录 GPIO外部中断1、GPIO中断介绍2、GPIO中断使用步骤3、软件准备4、硬件准备5、代码实现在前面的文章 ESP32设备驱动-GPIO数字输入与输出中介绍如何对GPIO进行控制操作。本文将在该基础上使用GPIO中断进一步优化按键输入。即演示如何使用GPIO中断。 1、GPI…...

【安全】nginx反向代理+负载均衡上传webshel

Nginx负载均衡下上传webshell 什么是反向代理&#xff1f; 正向代理就是代替客户端进行各种服务的访问以及获取&#xff1b;那么反向代理自然就是代替服务器进行事务处理&#xff0c;就是此时的代理服务器负责将用户的各项请求做一个汇总、分类&#xff0c;将其分发到不同的服务…...

华为OD机试 - 单词接龙(Python)| 真题,思路,知识点

单词接龙 题目 单词接龙的规则是: 可用于接龙的单词,首字母必须要与前一个单词的尾字母相同; 当存在多个首字母相同的单词时,取长度最长的单词; 如果长度也相等,则取字典序最小的单词; 已经参与接龙的单词不能重复使用; 现给定一组全部由小写字母组成的单词数组, 并指…...

[ 系统安全篇 ] window 命令禁用用户及解禁方法

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

Https 协议超强讲解(二)

浏览器是如何确保 CA 证书的合法性&#xff1f; 1. 证书包含什么信息&#xff1f; 颁发机构信息 公钥 公司信息 域名 有效期 指纹 …… 2. 证书的合法性依据是什么&#xff1f; 首先&#xff0c;权威机构是要有认证的&#xff0c;不是随便一个机构都有资格颁发证书&am…...

C语言的程序环境和预处理详解

目录 一、程序的翻译环境和执行环境 二、编译和链接详解 2、1 翻译环境 2、2 编译过程详解 2、3 执行环境 三、预处理详解 3、1 预定义符号 3、2 #define 3、2、1 #define定义的符号 3、2、2 #define 定义宏 3、2、3 #define 替换规则 3、3 宏和函数的对比 3、4 条件编译 3、5…...

3.JUC【Java面试第三季】

3.JUC【Java面试第三季】前言推荐3.JUC06_闲聊AQS面试1.题目说明07_可重入锁理论2.可重入锁说明“可重入锁”这四个字分开来解释可重入锁的种类08_可重入锁的代码验证-上09_可重入锁的代码验证-下3.LockSupport10_LockSupport是什么LockSupport是什么11_waitNotify限制线程等待…...

Linux防火墙(7)

实验目的 通过该实验了解Linux防火墙iptables实现原理&#xff0c;掌握iptables基本使用方法&#xff0c;能够利用iptables对操作系统进行加固。预备知识基本原理 netfilter/iptables&#xff08;简称为iptables&#xff09;组成Linux平台下的包过滤防火墙&#xff0c;具有完成…...

2.11整理(2)(主要关于teacher forcing)

teacher forcing 训练迭代过程早期的RNN预测能力非常弱&#xff0c;几乎不能给出好的生成结果。如果某一个unit产生了垃圾结果&#xff0c;必然会影响后面一片unit的学习。RNN存在着两种训练模式(mode): free-running mode&#xff1a;就是常见的那种训练网络的方式: 上一个sta…...

亿级高并发电商项目-- 实战篇 --万达商城项目 三(通用模块、商品服务模块、后台API模块、IDEA忽略文件显示等开发工作

专栏&#xff1a;高并发项目 &#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小童&#xff0c;Java开发工程师&#xff0c;CSDN博客博主&#xff0c;Java领域新星创作者 &#x1f4d5;系列专栏&#xff1a;前端、Java、Java中间件大全、微信小程序、微信支付、若依框…...

IDEA下java程序的调试(简易实例图示版)

在线排版不太好看&#xff0c;介意的读者可下载word下来看&#xff1a;https://download.csdn.net/download/xijinno1/87441301IDEA下java程序的简单调试-System.out.println首先本次进行调试的一个程序是实现从1累加到100的功能&#xff0c;是在IDEA下进行编写的。如图所示&am…...

Perplexity如何秒级定位IEEE顶会论文?:2024最新实测验证的7步精准检索法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity如何秒级定位IEEE顶会论文&#xff1f; Perplexity 是一款基于大语言模型的实时搜索增强工具&#xff0c;其核心优势在于将语义理解与权威学术数据库&#xff08;如 IEEE Xplore、ACM DL、ar…...

别再傻等下载了!手把手教你用wget离线搞定sentence_transformers模型(以all-MiniLM-L6-v2为例)

高效离线部署sentence_transformers模型&#xff1a;wget实战指南 1. 为什么需要离线下载方案 在自然语言处理领域&#xff0c;预训练模型已成为各类文本理解任务的基础设施。然而&#xff0c;当我们需要在生产环境或受限网络条件下部署这些模型时&#xff0c;直接通过Python库…...

告别机械生硬感:我熬夜实测了4款英文降AI工具,教你搞定结构级优化

最近不少学弟学妹跟我倒苦水&#xff0c;说查重率好不容易降下来了&#xff0c;结果偏偏卡在了英文降ai率上&#xff0c;眼看交稿DDL越来越近&#xff0c;心里特别着急。 我太懂这种感受了&#xff0c;我当时也因为英文降aigc率踩过不少坑&#xff0c;自己连夜纯手动改&#x…...

基于Apify与NLP的大麻监管情报系统架构与MCP集成实践

1. 项目概述&#xff1a;当AI遇见大麻监管情报如果你在合规、法律科技或者生命科学领域工作&#xff0c;最近可能听过“监管情报”这个词。简单说&#xff0c;它就是利用技术手段&#xff0c;从海量的、不断变化的法规文件中&#xff0c;自动提取、分析和监控关键信息&#xff…...

别再让图片拖慢你的Unity项目!手把手教你用AssetPostprocessor搞定尺寸与压缩

Unity项目性能优化&#xff1a;智能图片处理全攻略 1. 为什么图片处理对Unity项目至关重要 在Unity开发过程中&#xff0c;图片资源往往是项目体积膨胀的罪魁祸首。一个中型项目可能包含数千张纹理&#xff0c;如果不加控制&#xff0c;这些资源会迅速吞噬内存和存储空间。更糟…...

禅论技术分析插件:通达信量化交易系统的架构与实践

禅论技术分析插件&#xff1a;通达信量化交易系统的架构与实践 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 禅论作为中国特色的技术分析理论&#xff0c;其严谨的数学结构和逻辑体系为市场分析提供了…...

Windows上的APK安装革命:如何用开源工具无缝运行安卓应用

Windows上的APK安装革命&#xff1a;如何用开源工具无缝运行安卓应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows和安卓生态之间的鸿沟而烦恼吗&…...

3个战略理由选择ES-Client作为您的Elasticsearch管理平台

3个战略理由选择ES-Client作为您的Elasticsearch管理平台 【免费下载链接】es-client elasticsearch客户端&#xff0c;issue请前往码云&#xff1a;https://gitee.com/qiaoshengda/es-client 项目地址: https://gitcode.com/gh_mirrors/es/es-client 在当今数据驱动的业…...

FcμR识别IgM复杂机制的揭示:解锁人体免疫早期应答之谜

一、引言免疫系统是机体抵御病原体入侵、维持内环境稳定的关键防线。在免疫应答过程中&#xff0c;不同类型的免疫球蛋白发挥着独特的作用。其中&#xff0c;IgM作为人体五类免疫球蛋白之一&#xff0c;在免疫应答早期起着至关重要的作用。而Fc受体作为免疫系统中的重要组成部分…...

基于LLM的邮件智能体:从语义理解到自动化工作流实战

1. 项目概述&#xff1a;一个能“思考”的邮件智能体 最近在折腾一个挺有意思的开源项目&#xff0c;叫 XueJourney/mail-agent 。简单来说&#xff0c;它不是一个简单的邮件收发工具&#xff0c;而是一个能帮你“思考”和“行动”的邮件智能体。想象一下&#xff0c;你每天被…...