SpringMVC注解及使用规则

文章目录

  • 前言
  • 一、SpringMVC注解是什么?
  • 二、使用步骤
    • 1.注解使用
    • 2创建JSP
    • 3 SpringMVC视图
      • 1. 逻辑视图(Logical View)
      • 2. 物理视图(Physical View)
      • 区别和关系
    • 4 SpringMVC注解总结
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

在学习SpringMVC中,我们会经常用到注解来简化我们的工作,接下来将为大家简单介绍一下常用的注解


提示:以下是本篇文章正文内容,下面案例可供参考

一、SpringMVC注解是什么?

Spring MVC 是一种基于注解的开发方式,它使得开发者可以更加便捷地编写控制器、映射请求和处理请求。以下是一些常用的 Spring MVC 注解及其功能:

  1. @Controller:用于标识一个类作为 Spring MVC 中的控制器。Spring 会自动检测并注册这些类。

  2. @RequestMapping:用于映射 HTTP 请求到相应的处理方法上。可以用在类级别或方法级别。在类级别上指定了基本的 URL 路径,在方法级别上指定了额外的路径或请求方法。

  3. @GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping:分别用于处理 GET、POST、PUT、DELETE、PATCH 请求,是 @RequestMapping 的缩写形式。

  4. @RequestParam:用于从请求中获取参数值。可以指定参数名、是否必需以及默认值。

  5. @PathVariable:用于从请求路径中获取参数值。

  6. @RequestBody:用于将 HTTP 请求体转换为 Java 对象。常用于处理 POST 请求中的 JSON 或 XML 数据。

  7. @ResponseBody:用于将方法的返回值直接作为 HTTP 响应体返回给客户端。常用于返回 JSON 或 XML 格式的数据。

  8. @ModelAttribute:用于将请求参数绑定到方法的参数上,也可以用于在请求处理方法执行之前为模型对象添加属性。

  9. @SessionAttribute:用于将模型对象添加到 session 中,这样可以在多个请求之间共享数据。

  10. @SessionAttributes:类级别的注解,用于指定哪些模型属性应该存储在 session 中。

  11. @InitBinder:用于定制数据绑定规则,例如日期格式化、数据校验等。

  12. @ExceptionHandler:用于捕获并处理控制器中抛出的异常。

这些注解使得 Spring MVC 的开发变得更加简洁和灵活,提高了开发效率和代码的可读性。

二、使用步骤

1.注解使用

首先我们想要开启SpringMVC注解要开启注解支持,所以我们在springmvc.xml文件中添加以下配置:

    <!--开启注解支持--><context:component-scan base-package="com.llf"/><!--配置视图解析器 也就是逻辑视图配置 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 返回视图页面的前缀 --><property name="prefix" value="/WEB-INF/jsp/"/>  <!-- 返回页面的后缀 --><property name="suffix" value=".jsp"/></bean><bean id="charsetFilter" class="org.springframework.web.filter.CharacterEncodingFilter"><property name="encoding" value="UTF-8"/><property name="forceEncoding" value="true"/></bean>

2.在控制层添加注解

@Controller//将类声明为控制层类
public class UserController {@GetMapping("/user")  //get请求地址映射为"/user"public String query(Model model) {model.addAttribute("name", "张三");model.addAttribute("age", "18");return "user";}@PostMapping("/user")  //posst请求地址映射为"/user"public String addUser(User user, Model model) { //User 为javaaBean用于接受多个参数  Model视图对象,用于传递参参数model.addAttribute("name", user.getName());model.addAttribute("age", user.getAge());System.out.println(user.getName() + "------------" + user.getAge());return "user";}
}

2创建JSP

简单写一个添加用户的操作jsp页面:
在这里插入图片描述

addUser.jsp代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form method="post" action="user">姓名:<label><input type="text" name="name">
</label><br>年龄:<label><input type="number" name="age">
</label><br><input type="submit" value="保存">
</form>
</body>
</html>

user.jsp用于查看用户信息,代码如下:
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head><title>无敌暴龙战神</title>
</head>
<body>
<label>姓名:${name}
</label><br/>
<label>年龄:${age}
</label>
</body>
</html>

注意:isELIgnored="false"千万别忘记写上,不如el表达式无效,页面渲染不上。

3 SpringMVC视图

在 Spring MVC 中,视图(View)是用于呈现用户界面的组件。Spring MVC 中的视图可以分为逻辑视图和物理视图。

1. 逻辑视图(Logical View)

逻辑视图是一个视图的逻辑名称,它通过控制器(Controller)返回的字符串来表示。当控制器处理完请求后,会返回逻辑视图的名称,Spring MVC 根据这个名称来决定使用哪个物理视图来渲染最终的用户界面。逻辑视图的名称通常与视图解析器(View Resolver)相关联,视图解析器负责将逻辑视图映射到实际的物理视图。

2. 物理视图(Physical View)

物理视图是真正呈现给用户的视图,它可以是一个 JSP、Thymeleaf 模板、FreeMarker 模板、Velocity 模板或者其他类型的视图技术。物理视图可以包含 HTML、CSS、JavaScript 等前端资源,以及从控制器传递过来的数据,最终呈现给用户。

区别和关系

  • 逻辑视图是控制器返回的视图名称,它是一个逻辑标识符,而不是真正的视图文件名或路径。
  • 物理视图是实际用于渲染用户界面的视图文件或模板文件。
  • Spring MVC 中的视图解析器(View Resolver)负责将逻辑视图映射到实际的物理视图。

举例来说,一个控制器方法返回字符串 “welcome” 作为逻辑视图名称。然后,视图解析器会根据这个逻辑视图名称找到对应的物理视图,比如一个 JSP 文件 welcome.jsp,最终将其呈现给用户。

Spring MVC 中通过配置视图解析器来实现逻辑视图到物理视图的映射,这样可以在控制器中更专注于业务逻辑,而视图的具体呈现则交由视图解析器处理。

4 SpringMVC注解总结

@Controller 用于传统的 MVC 应用,它处理 HTTP 请求并返回视图。
@RestController 用于构建 RESTful Web 服务,它处理 HTTP 请求并直接返回数据,通常以 JSON 或 XML 格式返回。
@ReponseBody 将方法返回值写入response中,既返回文本数据或json数据
@EnableWebMvc 启用MVC注解驱动
在这里插入图片描述


总结

SpringMVC注解有很多,主要用的都在上图上用”1“标记出来了,大家有空可以看看哦。

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

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

相关文章

Python批量提取图像灰度共生矩阵(GLCM)、支持批量处理、任意图像格式

目录 一、介绍 二、实现 1、特征计算 2、批量处理 3、结果 一、介绍 灰度共生矩阵(Grey Level Co-occurrence Matrix)也叫做空间灰度级依赖矩阵(SGLDM),它是一种基于统计的纹理特征提取的方法。 一般包括四个方向&#xff1a; (a,b)(1,0)&#xff0c;像素对是水平的&am…

千川素材投放效果如何追踪:精准识别爆款、潜力、首发、优质素材

在数字营销和广告领域&#xff0c;素材投放的效果直接关乎广告的成功与否。为了在竞争激烈的市场中脱颖而出&#xff0c;广告主和广告从业者需要密切关注素材投放效果&#xff0c;并及时识别出不同类型的素材&#xff0c;如爆款、潜力、首发和优质素材。本文将详细探讨如何进行…

淘宝订单中的涉及红包检测、优惠券检测方案|工具|API

首先&#xff0c;检测订单红包的核心价值是什么&#xff1f; “红包的本质就是薅平台羊毛&#xff1a;不用怀疑&#xff0c;平台对于这种损害平台利益的行为肯定是最高等级的稽查”。那么&#xff0c;在日常运营中&#xff0c;需要尽可能过滤这类订单。 其次&#xff0c;如何使…

一站式学习:iOS手机抓包工具使用指南及实例分享

&#x1f4f1; 最近又发现APP Store一款宝藏软件&#xff0c;克魔助手抓包工具&#xff0c;app刚上架&#xff0c;功能不断迭代中&#xff0c;目前18软妹币实惠价可享受终身版&#xff01;现在是下手的最好时机。 引言 移动端开发中&#xff0c;抓包工具已成为必备的工具之一…

设计模式——结构型——外观模式Facade

处理器类 public class Cpu {public void start() {System.out.println("处理器启动了...");} } 内存类 public class Memory {public void start() {System.out.println("内存启动了...");} } 硬盘类 public class Disk {public void start() {Syste…

C++:sizeof关键字(7)

sizeof用于统计数据所占用内存的大小 用法&#xff1a;sizeof( 变量名称 / 变量) 直接上代码&#xff0c;可以在让大家直观的感受到sizeof关键字的用法 #include<iostream> using namespace std;// 语法&#xff1a; sizeof&#xff08;数据类型|变量名&#xff09;// 用…

“直播曝光“有哪些媒体直播分流资源?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 我们线下举办活动时&#xff0c;往往希望活动进行更大的曝光&#xff0c;随着视频直播越来越被大众认可&#xff0c;甚至成了活动的标配&#xff0c;那么做活动视频直播的时候&#xff0…

C# 操作 Word 全域查找且替换(含图片对象)

目录 关于全域查找且替换 Word应用样本 SqlServer数据表部分设计样本 范例运行环境 配置Office DCOM 设计实现 组件库引入 实现原理 查找且替换的核心代码 窗格内容 页眉内容 页脚内容 形状内容 小结 关于全域查找且替换 C#全域操作 Word 查找且替换主要包括如下…

java 抠取红色印章(透明背景)

一个亲戚让我帮他把照片里的红色印章抠出来&#xff0c;&#xff0c;&#xff0c;记录下处理过程&#xff0c;代码如下&#xff0c;可直接用&#xff1a; public static void signatureProcess(String sourceImagePath, String targetImagePath) {Graphics2D graphics2D null…

鸿蒙原生应用开发-网络管理HTTP数据请求

一、场景介绍 应用通过HTTP发起一个数据请求&#xff0c;支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 二、接口说明 HTTP数据请求功能主要由http模块提供。 使用该功能需要申请ohos.permission.INTERNET权限。 涉及的接口如下表&#xff0c;具体的…

小白了解Pinia第2集 · 三大核心状态Getters、Actions以及Plugins 插件

三大核心状态 state 第1集有详细讲解&#xff1a;https://blog.csdn.net/qq_51463650/article/details/137137080?spm1001.2014.3001.5501 getters Getter 完全等同于 Store 状态的 计算值。 它们可以用 defineStore() 中的 getters 属性定义。 他们接收“状态”作为第一个…

QA测试开发工程师面试题满分问答2: 如何测试xx网站的评论功能?

针对 xx 网站的评论功能&#xff0c;可以从基础功能、用户交互、编辑撤回、权限相关、网络信号、异常、并发性能和安全性等方面的测试考虑&#xff1a; 基础功能测试 发布评论&#xff1a;验证用户是否可以成功发布评论&#xff0c;并确保评论内容正确显示在相关页面上。删除评…