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

SSM编程---Day 07

目录

SpringMVC

一、概念

二、springMVC的请求处理流程

三、mvc:annotation-driven 标签的作用

四、HandlerMapping、Handler和HandlerAdapter的介绍

五、SpringMVC 体系结构

六、SpringMVC的常用注解

七、view和controller之间的传值

SpringMVC

一、概念

        1、 SpringMVC spring 提供的一种基于 MVC 架构模式的轻量级 web 开发框架,其本质相当于 Servlet
        2、mvc介绍:
        model、 view controller 的缩写,是一种软件设计规范
        是将业务逻辑、数据、显示分离的方法来组织代码
        MVC主要作用降低视图与业务之间数据的双向耦合
        MVC不是一种设计模式, MVC 是一种架构模式,当然不同的 MVC 存在差异。

        3、为什么要学习springMVC

        轻量级、简单易学
        约定优于配置 --------- springboot 约定优于配置
        高效!基于请求响应的mvc 框架。
        4、Servlet 和 SpringMVC 的区别
        SpringMVC其实就是 Servlet ,只不过对 Servlet 进行的封装
        (1) Servlet 一个请求 URL 映射为一个类
        (2) SpringMVC 一个请求 URL 映射为一个方法。

二、springMVC的请求处理流程

        1、用户发送请求到 springMVC 的前端控制器( DispatcherServlet
        2、前端控制器会将我们的请求,委托给我们的处理器( HanlderMapping , 根据请求的路径,来映射哪一个方法来执行。(@RequestMapping("/")
        3、会执行到我们写的处理器,控制器( Handler,Controller
        4、然后调用对应的 model 或者直接返回对应的结果(逻辑视图名)

三、mvc:annotation-driven 标签的作用

        1、这个注解会帮助我们自动注册两个 bean
        HandlerMapping :映射(请求地址,映射到具体的方法上面)
        HandlerAdapter :适配器()
        2、@Controller
        当配置该文件之后,spring 就知道我们使用注解的方式,来完成 springmvc 的创建,他就会扫描带有 controller 的注解。
        HadlerMappering实现类的主要作用,就是将请求映射到带有 RequestMapping 注解的控制器( controller )方法中,将URL 路径映射到控制器的 bean
        HandlerAdapter实现类的主要作用,实现类 RequestMappingHandlerAdapter ,处理请求的适配器,确定调用哪个类的哪个方法,构造方法,参数,返回值。

四、HandlerMappingHandlerHandlerAdapter的介绍

        1、Handler (对应的方法, @RequestMappering
        Handler,也就是处理器,它直接对应着 MVC 中的 C 层,即 Controller 层,它可以表现为多种形式,可以是类,也可以是方法或者是其他的形式,它的类型是Object 。我们用的最多的就是用 @RequestMapping 注解标注的方法,它就对应着一个Handler
        2、HandlerMapping
        HandlerMapping,是用来查找 Handler 的,在 spingmvc 中会处理很多请求,每一个请求都需要一个 Handler 进行处理,具体接受到一个请求后使用哪个Handler 来处理,就是 HandlerMapping 需要做的事情
        3、HandlerAdapter
        HandlerAdapter,即 Handler 的适配器,也是这 3 个概念中理解起来比较模糊的一个概念。上面说 Handler 的时候,我们说Handler 是有多种的表现形式,只要能处理请求就可以,而 dispatchServlet 处理请求的方式却是固定的 ——doService(request,response),那么怎么让固定的 doService 调用灵活的 Handler 来进行处理呢,这就是HandlerAdapter需要做的事情。
        适配器模式, 有很多种控制器(Controller) 一种是带 @Controller 注解的, 还可以写一个 servlet 当做 controller, 所以用适配器做适配,你看看HandlerAdapter 有几个子类,每个子类都是适配某一种类型的控制器,有了HandlerAdapter,你只需要调用 handle 方法,屏蔽了不一致的细节,否则在 DispatcherServlet 里面要 if else if else了。

五、SpringMVC 体系结构

 

 

六、SpringMVC的常用注解

        1、 @Controller 注解
        标识在类上面,表示当前这个类,可以用于处理我们的用户请求。
        2、 @RequestMapping 注解
        可以标识在类上面、也可以标识在方法上面,他的主要作用就是配置我们的请求路径和方法之间的关系。标识在类上面的作用,主要用于模块之间的区分。

七、viewcontroller之间的传值

        1、 view 传值给 controller
        @RequestParam
        如果参数的前面添加这个注解,默认当前参数就是必填项,你请求该方法上面url 的时候,必须要携带当前参数,如果不携带该参数,就会显示400 错误,因为 requestParam 的注解的默认值是 true。
        总的来说,有三种方式:简单数据类型(参数少的时候,直接入参) 、对象(参数多的时候,对象入参) 、json格式 
        2、controller传值给view
        (1)通过 modelAndView 来传值
        (2)Model 来传参数
        (3)Map集合的方式,需要用到 jstl el 表达式
        一个类中,我们需要做到的就是 @RequestParam("") 路径全局唯一: 类上面+ 方法上面 +get/post 请求,三个加起来唯一就行。因此你会看到在一个类中存在相同的请求路径,但是请求方式是不一样的。
        如果jsp 页面中通过 el 表达式无法获取值的时候,可以在 jsp 页面添加如下代码解决:
<%@ page isELIgnored="false" %>

 

相关文章:

SSM编程---Day 07

目录 SpringMVC 一、概念 二、springMVC的请求处理流程 三、mvc:annotation-driven 标签的作用 四、HandlerMapping、Handler和HandlerAdapter的介绍 五、SpringMVC 体系结构 六、SpringMVC的常用注解 七、view和controller之间的传值 SpringMVC 一、概念 1、 Spring…...

Seata术语

1.什么是Seata Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网 2.Seata能干嘛 一个典型的分布式事务过程 分布式事务处理过程的一ID三组件模型&#xff1a; Transaction ID XID 全局唯一的事务ID三组…...

【Axure教程】通过文本框维护下拉列表选项

下拉列表&#xff08;Dropdown List&#xff09;是一种常见的用户界面元素&#xff0c;用于提供一组选项供用户选择。它通常以一个展开的列表形式出现&#xff0c;用户可以点击或选择列表中的一个选项。一般来说&#xff0c;他的选项值是由系统代码组成的&#xff0c;所以一般是…...

【C++】基础知识--输入/输出(5)

前面部分的示例程序几乎没有提供与用户的交互&#xff08;如果有的话&#xff09;。他们只是在屏幕上打印简单的值&#xff0c;但标准库提供了许多其他方式通过其输入/输出功能与用户交互。本节将简要介绍一些最有用的方法。 cin标准输入cout标准输出cerr标准错误&#xff08;输…...

经典文献阅读之--PIBT(基于可见树的实时规划方案)

0. 简介 作为路径规划而言&#xff0c;不单单有单个机器人自主路径规划&#xff0c;近年来随着机器人行业的兴起&#xff0c;多机器人自主路径规划也越来越受到关注&#xff0c;对于多智能体寻路(MAPF)。一般的操作会给定一个地图、机器人集群、以及它们的初始位置和目的地&am…...

SAP-MM-计算方案字段解析

01、 “步骤”&#xff1a;标识此条件类型在计算方案中的顺序编号&#xff0c;此编号会影响到后续业务中条件类型的排序&#xff0c;不同条件类型之间的编号最好间隔大一些&#xff0c;这样设置便于以后对计算方案进行扩展&#xff1b; 02、 “计数器”&#xff1…...

go-gf框架两个表以事务方式写入示例

下面是对每一行代码的中文解释&#xff1a; // 创建数据库连接对象 var tx gdb.TX这行代码声明了一个名为tx的变量&#xff0c;类型为gdb.TX&#xff0c;表示数据库事务对象。 // 开启事务 if tx, err g.DB().Ctx(ctx).Begin(ctx); err nil {这行代码通过在数据库连接&…...

2023-5-31第三十一天

conform顺从&#xff0c;遵从&#xff0c;一致 squeeze挤压 proprietary专卖权&#xff0c;专利的&#xff0c;所有的 endeavor努力&#xff0c;尽力 comprise由...组成&#xff0c;包含 compose组成&#xff0c;写作 compact小型的 consult咨询&#xff0c;查阅 expan…...

什么是MQTT?mqtt协议和http协议区别

摘要&#xff1a; 什么是MQTT&#xff1f;MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;译为&#xff1a;消息队列遥测传输&#xff0c;是一种轻量级的通讯协议&#xff0c;用于在网络上传输消息。MQTT 最初由 IBM 发布&#xff0c;后来成为 OASIS&#xf…...

平台使用篇 | 批处理(bat)脚本使用教程(四)

导读 一个开启多机软件在环仿真的批处理文件 (对应卓面RflyTools文件夹中SITLRun快捷方式)&#xff0c;双击它&#xff0c;输入想要生成的飞机数量&#xff0c;即可生成多机软件在环仿真&#xff0c;等待RflySim3D显示3DFixed 4/4&#xff0c;然后可通过QGC控制飞机起飞。运行…...

接口的讲解

在这里之前我想童鞋们都学习过了springmvc。mybatis-plus。Springboot等一些框架 那么下面我们就整合这些框架 我们通过写crud这些接口 写接口的第一步就是引入pom文件 在pom文件里引入一下几种依赖 引入父级工程 thymeleaf导入模版工具类 SpringMVCjar包文件 热部署工具 l…...

G0第21章 :gin框架介绍、RESTful API、Gin渲染

G0第21章 &#xff1a;gin框架 01 内容介绍 https://gin-gonic.com/zh-cn/docs/ web本质 Web是基于HTTP协议进行交互的应用网络Web就是通过使用浏览器/APP访问的各种资源 package mainimport ("fmt""net/http" )func sayHello(w http.ResponseWriter, r…...

python list,dict操作

一、list 操作 Python中的列表是一种有序、可变的数据类型&#xff0c;可以存储任意类型的数据。以下是Python中常用的列表操作&#xff1a; 创建列表&#xff1a;使用[]或list()函数创建一个空列表&#xff0c;或者使用[value1, value2, ...]创建一个包含初始值的列表。 访问…...

我有一个页面a,在页面a中调用了一个组件,然后组件中要切换页面a的一块区域,该怎么实现?

你可以在组件中使用路由的编程式导航&#xff0c;通过访问路由实例来切换页面a的对应区域。具体来说&#xff0c;你可以先在页面a中设置一个具有唯一标识的占位符元素&#xff0c;然后在组件中通过路由实例访问这个元素并修改其内容或样式来实现区域切换。路由的编程式导航可以…...

ChatGPT唤醒AI游戏:AIGC持续走深,游戏或成AI最佳抓手

随着人工智能技术的不断发展&#xff0c;AI在游戏行业的应用日益深入。本文将详细探讨ChatGPT在AI游戏领域的应用&#xff0c;以及游戏如何成为AI技术的最佳抓手。让我们一起探讨这个有趣且充满潜力的领域。 一、引言 人工智能在各行各业都取得了巨大的成功&#xff0c;而游戏…...

远程服务和web服务和前端,三方通过socket和websocket进行双向通信传输数据

1. 什么是socket? 在计算机通信领域&#xff0c;socket 被翻译为“套接字”&#xff0c;它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定&#xff0c;一台计算机可以接收其他计算机的数据&#xff0c;也可以向其他计算机发送数据。 2. 什么是websocket?…...

Linux 网络基础(2)应用层(http/https协议、请求格式、响应格式、session、cookie、加密传输)

说明&#xff1a;网络基础2讲解的是应用层的典型协议&#xff0c; 通过对于典型协议的理解&#xff0c;来体会数据的网络传输的软件层面的流程与原理。 面试中网络通信相关问题占了很大的比重&#xff0c;而网络通信相关的问题大多都集中在网络基础2这个单元中 下面是应用层的位…...

解决sshfs挂载报错

使用ssh命令和sshfs命令报错 read: Connection reset by peer rootjiangcheng01:~/common/remote# sshfs -o allow_other htrdxxx.xxx.xxx.xxx:/home/htrd /root/common/remote/dev01 read: Connection reset by peer 报错问题排查&#xff0c;追加命令 -o debug -o sshf s_d…...

由于过多的连接错误而被 MySQL服务器 阻止

Caused by: com.mysql.cj.exceptions.CJException: null, message from server: "Host 10.105.***.** is blocked because of many connection errors; unblock with mysqladmin flush-hosts" 这个错误可能表示当您尝试使用 IP 地址为 "10.105.***.**" 的…...

Go语言实现JDBC

Go语言操作数据库 Go语言提供了关于数据库的操作,包下有sql/driver 该包用来定义操作数据库的接口&#xff0c;这保证了无论使用哪种数据库&#xff0c;操作方式都是相同的; 准备工作: 下载驱动 需要在代码所在文件夹下执行相应的命令 go get github.com/go-sql-driver/mys…...

别再手动下载DLL了!用Windows自带工具SFC/SCANNOW一键修复kernel32.dll错误

别再手动下载DLL了&#xff01;用Windows自带工具SFC/SCANNOW一键修复kernel32.dll错误当电脑屏幕上突然弹出"无法定位程序输入点kernel32.dll"的红色警告框时&#xff0c;大多数人的第一反应是打开浏览器搜索"如何下载kernel32.dll"。这个看似合理的操作背…...

ARM Trace Buffer扩展与调试同步机制详解

1. ARM Trace Buffer扩展与调试状态同步机制解析在嵌入式系统和处理器架构设计中&#xff0c;调试与追踪技术是开发人员不可或缺的工具。ARM架构通过Trace Buffer Extension&#xff08;TBE&#xff09;提供了强大的指令级执行流追踪能力&#xff0c;其核心原理是通过专用硬件单…...

胖瘦 AP 网络仿真实验

一.实验概述实验名称&#xff1a;胖瘦 AP 网络仿真实验实验目的&#xff1a;掌握胖 AP&#xff08;FAT AP&#xff09;与瘦 AP&#xff08;FIT AP&#xff09;两种无线组网模式的工作原理与配置方法&#xff0c;理解两者的核心差异实现指定网络连通性要求&#xff1a;瘦 AP 侧静…...

OpenCV实战:用Python从零实现Canny边缘检测(含完整代码与调参技巧)

OpenCV实战&#xff1a;用Python从零实现Canny边缘检测&#xff08;含完整代码与调参技巧&#xff09;计算机视觉领域中&#xff0c;边缘检测是图像分析的基础步骤之一。1986年由John F. Canny提出的Canny边缘检测算法&#xff0c;至今仍是效果最佳的边缘检测方法之一。本文将带…...

BetterGI:解放双手的5大自动化场景终极解决方案

BetterGI&#xff1a;解放双手的5大自动化场景终极解决方案 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹饪…...

化学教学平台——数据可视化与电化学AI动画推演

化学教学平台——数据可视化与电化学AI动画推演 1 项目概述 本化学教学平台是一套完整的前端Web应用,旨在为化学教育工作者和学生提供两个核心功能模块:数据智能查询与化学性质可视化(基于ECharts和D3.js),以及反应模拟预判——基于电化学原理的AI动画推演(基于Three.j…...

混合量子-经典机器学习在HPC环境下的性能调优与实战

1. 项目概述与核心价值在人工智能和计算科学的前沿&#xff0c;我们正站在一个关键的十字路口。一方面&#xff0c;以卷积神经网络为代表的经典机器学习模型&#xff0c;在处理图像识别、自然语言理解等任务上取得了巨大成功&#xff0c;但其对计算资源的需求正以惊人的速度膨胀…...

市场有效的透明化矿场安全防护系统

在矿场作业中&#xff0c;安全问题一直是重中之重。近年来&#xff0c;矿场事故时有发生&#xff0c;给生命和财产带来了巨大损失。据统计&#xff0c;过去十年间&#xff0c;全球矿场事故造成的直接经济损失高达数千亿美元&#xff0c;伤亡人数更是数以万计。因此&#xff0c;…...

【2026必藏】6款智能降AI率软件全揭秘,一键把AI检测率精准控到安全区!

步入 2026 年&#xff0c;学术界的风向早已悄然转变。曾经只需担心查重率的焦虑&#xff0c;如今已经被更严苛的 AI 检测标准彻底覆盖。各大高校的审核系统不断迭代升级&#xff0c;AI 痕迹的识别能力越来越强&#xff0c;连最细微的语言风格都逃不过算法的审视。单靠改写句子、…...

网站内容创作团队如何利用多模型聚合平台提升效率

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 网站内容创作团队如何利用多模型聚合平台提升效率 对于网站内容运营或编辑团队而言&#xff0c;持续产出高质量、多样化的内容是一…...