SpringMVC使用:类型转换数据格式化数据验证

news/2024/9/17 3:31:37/ 标签: java, spring, maven, servlet, hibernate, tomcat, xhtml

01-类型转换器

先在pom.xml里面导入依赖,一个是mvc框架的依赖,一个是junit依赖

然后在web.xml里面导入以下配置(配置的详细说明和用法我在前面文章中有写到)

创建此测试类的方法用于测试springmvc是具备自动类型转换功能的

user属性如下

show.jsp内容如下

在客户端输入如下数据

输出如下重点看日期他给转换了,说明springmvc底层以及做好了自动类型转换

我们在客户端上写的内容是在request.getparammer的所有不管你写的是数字还是什么,源数据都会是string,然后springmvc会自动转换类型为目标类型

如果我们运用springmvc没有的数据类型的话springmvc是不会提供自动转化的这时候我们需要自己创建一个类来实现,比如我们在客户端上输入2019-01-01

创建的转化类型的类需要继承接口Converter<String, Date>     <,>里面的逗号前面为原类型(客户端写的默认是string类型)逗号后面为目标类型,source.split("-").length==3意思是只要客户端第4个符号是-就会进入if条件语句,DataFormat用来格式化数据的

spring-mvc.xml文件中配置自定义转换类型的转换器如下图bean class里的内容,此内容第一句话照写,set里面的内容需要写自定义的类对应的完整路径,写完后把id里的内容写入到静态配置文件里conversion-service="conversionService"加入这句话

最后输出成功

2、数据格式化

首选创建form表单,在add.jsp里面

在show.jsp中写入要显示的内容导入spring 标签库用于接收@DateTimeFormat和@NumberFormat注解格式化的内容,spring:eval一般用于显示格式化后数据的内容

配置spring-mvc.xml用于格式化注解可以使用

@NumberFormat注解内容解释

3、数据校验

首先要导入hibernate-validator的jar包

导入依赖后可以在类上用以下注解作用在属性上

然后再如下图解释创建方法

在add.jsp中写入errors.属性是为了获取错误信息显示到客户端上,user.属性是为了把提交后的数据重新写到文本上

SpringMVC是如何做到根据参数名动态绑定参数的?

用自动绑定的参数然后你转发它会自动的转发到model里面去,model在request域里面

基于spring form标签库的实现方式:

首先要用spring form标签库需要先传入一个空的User到model中

然后在add.jsp文件中写入form标签,一定要写下图这句话,然后form:form要写这样开头,modelAttribute="user"一定要写,因为我们获取到的数据都是user里面的属性,所以我们先创建了个user用@GetMapping

Springmvc form标签,动态获取数据源

先创建@ModelAttribute用于在每个方法被调用时都会先调用这个方法,先测试list,发现value的值和label的值是一样的,但是我们开发中不想让它俩一样咋办的,需要用到map了

创建@ModelAttribute用于在每个方法被调用时都会先调用这个方法,测试map的动态数据源value的值和label的值是不一样的


http://www.ppmy.cn/news/1521990.html

相关文章

数学建模_缺失值处理_拉格朗日、牛顿插值(全)

- 缺失值处理 1. 识别缺失值 在处理缺失值之前&#xff0c;首先需要识别数据中的缺失值。 1.1 使用 isna() 和 isnull() Pandas 提供了 isna() 和 isnull() 方法来检测缺失值&#xff0c;二者功能相同。 import pandas as pddf pd.DataFrame({A: [1, 2, None, 4],B: [None, 2,…

数据仓库: 6- 数据仓库分层

目录 6- 数据仓库分层6.1 简介6.1.1 数据仓库分层的优势6.1.2 常见的数据仓库分层模型6.1.2.1 四层模型6.1.2.2 三层模型 6.1.3 数据仓库分层原则6.1.4 数据仓库分层示例6.1.5 总结 6.2 ODS&#xff08;操作数据存储&#xff09;层6.2.1 ODS 层的主要功能6.2.2 ODS 层的特点6.2…

PHP批量修改MySQL数据表字符集为utf8mb4/utf8mb4_unicode_ci

编码大全 可参考我之前的文章&#xff1a; 快速理解ASCII、GBK、Unicode、UTF-8、ANSI 批量修改 注意这是DDL操作&#xff0c;操作过程会锁表&#xff08;元数据锁&#xff09;&#xff0c;平均1秒能够转码3张表&#xff08;数据量不大&#xff09;。 亲测操作过后没有数据异…

内网隧道:端口转发

目录 LCX端口转发 场景一 场景二 SSH的端口转发 一、本地转发&#xff08;正向访问A&#xff09;&#xff1a; 二、远程转发&#xff08;反向访问A&#xff09; 三.NETSH端口转发 端口转发和端口映射 端口转发,有时被称为做隧道,是安全壳( SSH)为网络安全通信使用的一种方…

[物理专题]经典浮力题目的Fh图像绘制

这段代码用于绘制物体在液体中受到的浮力变化的图像&#xff0c;它有多个好处&#xff1a; 直观展示数据&#xff1a;通过图形化展示&#xff0c;可以直观地看到物体在液体中浸入深度与受到的浮力之间的关系。 教育和学习工具&#xff1a;这种类型的图像常用于教育目的&#x…

tugraph在Ubuntu 20.04上安装

参考文档&#xff1a; https://tugraph-db.readthedocs.io/zh-cn/latest/5.installation%26running/7.tugraph-running.html 介质下载&#xff1a; Releases TuGraph-family/tugraph-db GitHub 安装记录&#xff1a; rootnode11:~# ll total 466780 drwx------ 8 root r…

Unity(2022.3.41LTS) - UI详细介绍- Toggle(切换)

目录 零.简介 一、基本功能 二、属性和设置 三、使用方法 四、优化和注意事项 零.简介 在 Unity 中&#xff0c;Toggle 是一种常用的 UI 组件&#xff0c;用于表示一个布尔值的状态&#xff0c;类似于复选框。 一、基本功能 状态切换&#xff1a;Toggle 有两种状态&…

Java重修笔记 第四十八天 TreeSet 类、TreeMap 类

TreeSet 类 1. TreeSet 底层是 TreeMap 2. 使用默认构造器创建的 TreeSet 对象&#xff0c;添加顺序和取出顺序不是有序的 3. 如果添加的是字符串或数字&#xff0c;它们默认会按照字母顺序或数值顺序进行排序 4. 可以在构造器中传入一个 Comparator 比较器来手动制定比较…

【最新整理】大佬都在用的10款3DMax建筑插件!

在3Dmax建筑领域中&#xff0c;有许多受欢迎的插件能够大大提升设计师的工作效率和创作质量。以下是10款被广泛应用且备受推崇的3Dmax建筑插件&#xff1a; 1.Building&#xff08;建筑设计插件&#xff09; 3DMAX参数化建筑建模插件Building&#xff0c;一键生成各种自定义参…

机器人外呼有哪些优势?

机器人外呼&#xff0c;作为一种结合了计算机技术和人工智能技术的自动化工具&#xff0c;具有多重显著优势。以下是其主要优势的详细阐述&#xff1a; ### 1. 高效性 * **大幅提升工作效率**&#xff1a;机器人外呼可以全天候、不间断地进行工作&#xff0c;不受时间、地点和…

Fréchet Inception Distance(FID)原理

原理概述&#xff1a; FID 的核心思想是通过比较真实图像和生成图像在 Inception 模型特征空间中的分布差异&#xff0c;来评估生成模型的性能。它假设从真实数据和生成数据中提取的特征都近似服从高斯分布。 具体步骤&#xff1a; 特征提取&#xff1a;使用预训练的 Incepti…

ansible--yaml

语法 #列表 fruits:-Apple-Orange-banada########################################### fruits顶格写&#xff0c;下面的参数空两个空格&#xff0c;必须得对齐 #字典martin: name: Mysqlenvironoment: dd################################ 第一行的冒号号有空格&#xff0c;…

【网络安全】CSRF漏洞—CSRF基础漏洞防御

CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;是一种常见的网络安全攻击手段&#xff0c;它利用用户已经认证的身份&#xff0c;通过第三方网站诱导用户点击链接或提交表单&#xff0c;从而在用户不知情的情况下&#xff0c;以用户的名义执…

redis分布式锁和lua脚本

业务场景&#xff1a;多个线程对共同资源的访问&#xff1a;库存超卖/用户重复下单的原因 解决方法一&#xff1a;利用jvm内置锁&#xff0c;将非原子性操作变成原子性操作 Synchronized锁的是对象&#xff0c;对象必须是单例的。锁的是this,代表当前所在的类&#xff0c;这个…

06_React ajax

React ajax 一、理解1、前置说明2、常用的 ajax 请求库浏览器插件推荐 二、axios1、跨域实际上是请求发出了&#xff0c;但是没有接收到数据。使用代理服务器进行解决2、React 脚手架配置代理2.1 前端项目在 package.json 中的文件添加配置&#xff0c;可以解决跨域2.2 方式二2…

工厂模式与策略模式(golang示例)

一、工厂模式简介 工厂模式是一种创建型设计模式&#xff0c;主要用于封装对象的创建过程。通过使用工厂模式&#xff0c;客户端代码无需直接实例化对象&#xff0c;而是通过工厂类来创建对象。这样可以将对象的创建与使用分离&#xff0c;从而提高代码的灵活性。 1.1 工厂模…

004: VTK读入数据---vtkImageData详细说明

VTK医学图像处理---vtkImageData类 目录 VTK医学图像处理---vtkImageData类 简介&#xff1a; 1 Mricro软件的安装和使用 (1) Mricro安装 (2) Mricro转换DICOM为裸数据 2 从硬盘读取数据到vtkImageData 3 vtkImageData转RGB或RGBA格式 4 练习 总结 简介&#xff1a;…

Dify 与 FastGPT 流程编排能力对比分析

Dify 与 FastGPT 流程编排能力对比分析 一、引言 在人工智能快速发展的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;应用平台正在重塑各行各业的工作流程。其中&#xff0c;Dify 和 FastGPT 作为两款具有重要影响力的工具&#xff0c;凭借各自独特的流程编排能力&a…

SimD:基于相似度距离的小目标检测标签分配

摘要 https://arxiv.org/pdf/2407.02394 由于物体尺寸有限且信息不足&#xff0c;小物体检测正成为计算机视觉领域最具挑战性的任务之一。标签分配策略是影响物体检测精度的关键因素。尽管已经存在一些针对小物体的有效标签分配策略&#xff0c;但大多数策略都集中在降低对边界…

Faker在pytest中的应用

Faker在pytest中的应用主要体现在测试数据的准备上&#xff0c;通过生成逼真的伪数据来模拟真实场景&#xff0c;从而提高测试的覆盖率和可靠性。以下是一些具体的应用例子&#xff1a; 用户信息测试 在测试用户注册、登录等功能时&#xff0c;Faker可以生成大量的用户信息&a…