springmvc的使用方法及运行原理

        Spring MVC 是 Spring 框架中用于开发 Web 应用程序的一部分,它基于 MVC(Model-View-Controller)设计模式,提供了一种灵活且强大的方式来构建 Web 应用。

运行原理:

  1. 客户端发送请求:浏览器向服务器发送 HTTP 请求。
  2. 前端控制器(DispatcherServlet)接收请求:Spring MVC 中的 DispatcherServlet 充当前端控制器的角色,它接收所有客户端请求。
  3. 处理器映射器(HandlerMapping)找到处理器:DispatcherServlet 使用处理器映射器来确定请求对应的处理器(Controller)。
  4. 处理器执行请求:处理器执行请求并调用适当的业务逻辑。
  5. 模型数据处理:处理器将处理结果存储在模型中,可以包含要在视图中显示的数据。
  6. 视图解析器找到视图:DispatcherServlet 使用视图解析器来确定要渲染的视图。
  7. 视图渲染:视图负责将模型数据渲染为最终的输出(HTML、JSON 等)。
  8. 响应返回给客户端:渲染的视图作为 HTTP 响应返回给客户端,显示在浏览器中。

使用方法:

  1. 配置 DispatcherServlet:在 web.xml 文件中配置 DispatcherServlet,并指定 Spring MVC 的配置文件。
  2. 编写 Controller:创建处理请求的 Controller 类,使用注解标记该类和方法。
  3. 配置 HandlerMapping:配置 HandlerMapping 将请求映射到对应的 Controller。
  4. 编写视图:创建视图模板(JSP、Thymeleaf 等)用于渲染页面。
  5. 配置 ViewResolver:配置 ViewResolver 将逻辑视图名称解析为实际视图。
  6. 处理请求和响应:在 Controller 中编写处理请求的方法,并返回相应的数据或视图。
  7. 使用注解:使用@Controller、@RequestMapping 等注解简化开发。

        Spring MVC 提供了丰富的注解,可以帮助开发人员简化代码结构并提高开发效率。下面详细介绍一些常用的 Spring MVC 注解:

常用注解:

  • @Controller:用于标识一个类是 Spring MVC 的 Controller,处理用户请求并返回相应的视图。

    import org.springframework.stereotype.Controller;// 用于标识一个类是 Spring MVC 的 Controller,处理用户请求并返回相应的视图
    @Controller
    public class MyController {// Controller 类的具体实现
    }
    
  • @RequestMapping:用于映射 HTTP 请求到处理器方法,可用在类或方法上,指定处理的 URL 路径。

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;// 用于映射 HTTP 请求到处理器方法,可用在类或方法上,指定处理的 URL 路径
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello() {// 方法的具体实现
    }
    
  • @RequestParam:用于获取请求参数的值,可以指定参数名、是否必需等。

    import org.springframework.web.bind.annotation.RequestParam;// 用于获取请求参数的值,可以指定参数名、是否必需等
    public String myMethod(@RequestParam("name") String name) {// 方法的具体实现
    }
    
  • @PathVariable:用于将 URL 中的模板变量映射到方法参数。

    import org.springframework.web.bind.annotation.PathVariable;// 用于将 URL 中的模板变量映射到方法参数
    @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
    public String getUser(@PathVariable("id") Long id) {// 方法的具体实现
    }
    
  • @ResponseBody:用于将方法的返回值直接写入 HTTP 响应体中,通常用于返回 JSON 或 XML 数据。

    import org.springframework.web.bind.annotation.ResponseBody;// 用于将方法的返回值直接写入 HTTP 响应体中,通常用于返回 JSON 或 XML 数据
    @ResponseBody
    @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
    public User getUser(@PathVariable("id") Long id) {// 返回一个 User 对象,将会被转换成 JSON 或 XML 数据
    }
    
  • @ModelAttribute:用于将方法的返回值添加到模型中,供视图渲染使用。

    import org.springframework.web.bind.annotation.ModelAttribute;// 用于将方法的返回值添加到模型中,供视图渲染使用
    @ModelAttribute
    public void addAttributes(Model model) {// 将属性添加到模型中
    }
    
  • @SessionAttributes:用于指定模型属性存储在会话中,跨请求访问。

    import org.springframework.web.bind.annotation.SessionAttributes;// 用于指定模型属性存储在会话中,跨请求访问
    @SessionAttributes("myAttribute")
    public class MyController {// Controller 类的具体实现
    }
    
  • @Valid@Validated:用于验证请求参数,配合 JSR-303(Bean Validation)使用

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

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

相关文章

贷齐乐错误的waf引起的SQL注入漏洞复现

君衍. 一、环境介绍1、第一道WAF2、第二道WAF 二、环境部署1、模拟源码2、连接数据库源码3、数据库创建4、测试 三、源码分析1、模拟WAF2、注入思路3、PHP下划线特性4、完成假设 四、联合查询注入1、测试回显字段2、爆出库名3、爆出表名4、爆出表下的列名4、爆出flag 一、环境介…

CleanMyMac X4.14.7永久免费Mac电脑清理和优化软件

CleanMyMac X 是一款功能强大的 Mac 清理和优化软件,适合以下几类人群使用: 需要定期清理和优化 Mac 的用户:随着时间的推移,Mac 设备上可能会积累大量的无用文件、缓存和垃圾,导致系统运行缓慢。CleanMyMac X 的智能扫…

【Java JVM】Class 文件

Java 的口号 “一次编写, 到处运行 (Write Once, Run Anywhere)” 的基础: JVM 和 所有平台都统一支持的程序存储格式 – 字节码 (Byte Code)。 只要在对应的平台安装对应的 JVM, 将我们编写的源码编译为 Class 文件, 就能达到了一次编写, 导出运行的目标, 中间的所有细节由不同…

形容passwd和shadow区别

/etc/passwd 存账户信息一般不存密码 /etc/shadow主要用来存密码 /etc/passwd默认是任意用户可读只有root用户可修改 /etc/shadow 默认只有root用户可读可写 /etc/passwd 包含系统用户和用户的主要信息 /etc/shadow 用于储存系统中用户的密码,又称为影子文件 /etc/g…

11.WEB渗透测试-Linux系统管理、安全加固(上)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:10.WEB渗透测试-Linux基础知识-Linux用户权限管理(下)-CSDN博客 进…

【论文笔记】Language Models are Few-Shot Learners

Language Models are Few-Shot Learners 本部分是 GPT-3 技术报告的第一部分:论文正文、部分附录。 后续还有第二部分:GPT-3 的广泛影响、剩下的附录。 以及第三部分(自己感兴趣的):GPT-3 的数据集重叠性研究。 回顾…

部署运维 防火墙,进程 常用命令

防火墙: 1. 查看是否安装了firewalld sudo systemctl status firewalld 查看防火墙状态或者sudo systemctl is-active firewalld 查看防火墙是否是开启状态 2. 开放6379port sudo firewall-cmd --add-port6379/tcp --permanent 刷新防火墙 sudo firewall-cmd --reload 3…

ranger的使用

安装 macOS brew install rangerubuntu sudo apt-get install ranger配置 启动之后ranger会创建一个目录~/.config/ranger 可以使用以下命令复制默认配置文件到这个目录 ranger --copy-configallrc.conf-选项设置和快捷键commands.py-能通过:执行的命令commands_full.py-全套…

产品展示型wordpress外贸网站模板

孕婴产品wordpress外贸网站模板 吸奶器、待产包、孕妇枕头、护理垫、纸尿裤、孕妇装、孕婴产品wordpress外贸网站模板。 https://www.jianzhanpress.com/?p4112 床品毛巾wordpress独立站模板 床单、被套、毛巾、抱枕、靠垫、围巾、布艺、枕头、乳胶枕、四件套、浴巾wordpre…

职场中的团队合作与个人成长

在职场中,团队合作和个人成长是两个不可或缺的要素。一个优秀的团队可以带来更高的工作效率和更好的业绩,而个人的成长则是职场成功的关键。本文将探讨如何在职场中实现团队合作与个人成长的平衡。 一、团队合作的重要性 在职场中,团队合作是…

ARM GNU 汇编 “每日读书“

在GNU ARM汇编程序中,如果我们想定义一个浮点数,那么可以使用下面的伪操作来定义。 标签,命令 f: .float 3.14 .equ f,3.1415 我们可以使用.float 伪操作定义一个浮点数f, 并初始化为3.14 如果你想将这个浮点数重新赋值为3.1415,则…

【Ubuntu】将多个python文件打包为.so文件

1.为什么要将python打包为.so文件? 保护源码 2.实战例子 a.安装相应的包 pip install cython 验证安装是否成功 cython --version b.实战的文件目录和内容 hi.py # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your…

线性代数 --- 特征值与特征向量

特征值与特征向量 已知任意向量x,现有矩阵A对x进行操作后,得到新的向量Ax。这就好比是自变量x与函数f(x)的关系一样,向量x通过类似“函数”的处理得到了一个新的向量Ax。这个新的向量可能和原向量x方向相同,也可能不同(事实上大多…

Java开发工程师面试题(Spring)

一、Spring Bean的生命周期 生命周期可以分为以下几步: 通过Spring框架的beanFactory工厂利用反射机制创建bean对象。根据set方法或者有参构造方法给bean对象的属性进行依赖注入。判断当前bean对象是否实现相关aware接口,诸如beanNameAware、beanFactor…

P1305 新二叉树题解

题目 输入一串二叉树,输出其前序遍历。 输入输出格式 输入格式 第一行为二叉树的节点数n。(1≤n≤26) 后面n行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。空节点用*表示。 …

Java-常见面试题收集(一)

一 Java 基础 1 列举 Java 的 8 大基础类型,并写出对应的占用大小 数据类型占位(字节)数据范围byte1[ -128 , 127 ]short2[ -32768 , 32767 ]int4[ -231 , -231 - 1 ] ≈ [-21 亿,21 亿]long8[ -263 , -263-1 ]float4[-3.4x1038 , ~ 3.4x1038]double8[…

Java的堆如何分代的?

前言: java对象一般都是朝生夕死,也有部分对象是一直存在的。两种对象如何都放在一起,进行垃圾回收的时候效率较低。所以通过将不同时期的对象放在不同的内存池中,节省垃圾回收的时间,提高性能。 组成: 新生…

HUAWEI华为MateBook D 14 2022款 12代酷睿版集显(NbF-16)工厂模式原厂Windows11预装OEM系统,含F10智能还原功能

系统下载链接:https://pan.baidu.com/s/1kgJvwSq5eOdme7J9PDXIxQ?pwdxvz8 提取码:xvz8 华为笔记本电脑原装出厂系统工厂安装包,含F10功能、系统自带所有驱动、系统属性专属联机支持标志、Office办公软件、华为电脑管家等预装程序&#xf…

刷怪日记-01背包理论问题(二维矩阵实现)

01背包理论问题(二维矩阵实现) 题目 解题思路 确定dp数组以及下标的含义 本题采用二维数组进行解题,那么dp[i] [j]表示从下标0-i的物品任意选择,放进容量为j背包,价值总合最大是多少 i 表示物品第几个物品,j 表示背包容量大小 …

Spring MVC PathPatternMatchableHandlerMapping原理解析

在Spring MVC框架中,路由机制是实现HTTP请求到具体处理器方法映射的核心。PathPatternMatchableHandlerMapping是Spring 5之后引入的一个新特性,它基于PathPattern来提供更为灵活和强大的URL路径匹配能力。与传统的RequestMappingHandlerMapping相比&…