SSM整合1

news2024/9/30 5:33:52

请求参数

(这里的形参数据都是SpringMvc注入的)

controller里的方法不是我们来调用的 是由SpringMvc的前端控制器所调用的(前端控制器调用了处理器 由处理器和适配器去调用我们controller里的方法),controller里的方法叫handler->处理器

SpringMVC的Controller方法形参数据类型:
Controller方法(处理器)是SpringMVc调用,形参的值由SpringMVC注入(传递参数)

 javaWeb核心的api接口对象

  • HttpServletRequest请求对象
  • HttpServletResponse 响应对象
  • HttpSession session对象
  • Model/ModelMap Model是一个接口,ModelMap是一个接口实现。作用:将model数据填充到request域。
  • ps:如果只是往域中存数据推荐用model/modelmap

kv键值对是我们的请求参数  之前写的通过?传值 表单传值都是kv键值对

而现在在springmvc里面使用conventer组件把数据绑定到我们的方法形参实现数据的传输

如果只是往request添加数据,推荐使用Model,而不直接注入Request对象,与JavaWeb解耦

 如果调用request对象其他方法,只能注入Request对象

TestController.java

1.参数注入

方法返回一个逻辑视图名

@controller:交给spring管理

@RequestMapping:加上前缀  然后这个方法呢可以注入javaWeb的核心api对象

以后写SpringMvc写javaWeb的东西东西时注入就行了

只有不转发之后才能展示

(写这个的用处:后期写的是java对象 用通过这种方式写数据)

请求参数 客户端请求参数时基于key/value对的方式 

当然了客户端请求参数:还可通过以json形式的方式

如果是key-value :我们只要在自己的方法形参定义参数来接收这个请求参数就可以了

前端传过来的时字符串类型 跨平台数据传输都是字符串格式的

字符串

但是对于这种数据我们需要一种协议、格式  来对我们我们的参数的值进行一个说明

参数的类型

1.简单数据类型 保证类型 int String 日期

2.自定义类类型 

3.集合类型

4.数据类型

简单数据类型

要求形参参数名与请求参数名一样(不一样会映射失败)

kv键值对用?传值

写一个controller我来接受这些传过来的参数

记得上面说的- >我们只要在自己的方法形参定义参数来接收这个请求参数就可以了

但是要求:要求形参参数名与请求参数名一样 spring可以进行数据类型转换

这是效果:而且他还会把String数据类型的id转换成int类型

特殊问题:如果是日期呢?

405:你发送的请求时post请求 但是我只能处理get请求

404:文资源找不到

400:参数有问题 错误的请求

原因:他无法解析日期 导致不能进行类型转换

如果前端传递时一个日期字符串, Controller方法使用日期类型接收,默认转换失败,报400错误

对日期类型,需要自定义转换器:

  1. 全局的日期转换器类,编写一个转换器类,在springMVC的配置文件进行配置
  2. 使用SpringMVC提供的日期转换注解,局部

方法一:全局的日期转换器类,编写一个转换器类,在springMVC的配置文件进行配置

1.实现接口

这个实现类交给spring管理 @Componnet

扫描这个包:

注册到注解驱动上

转换服务工厂bean  -> 

beans不用加扫描配置了  以及不用@Componnet了

添加一个bean

配置一个转换服务的工厂beanConversionServiceFactoryBean 需要在我们项目中导入这个依赖

这个类在spring-context-support

外部bean配置

内部bean配置

使用条件:只在外部bean内部使用或者需要其他地方使用

转换器此时已经注入到我们的转工厂服务bean 但是最终转换器是SpringMVC的前端控制器

它在请求参数传过来时,调用自己的conventer 把字符串转换为日期类型

下一步就是在SpringMVC的注解驱动上注册转换器服务 ConversionServiceFactoryBean

 优点:整登项目只需要配置一次,整个项目的所有日期类型都可以通过该转换器

缺点:配置繁琐

方法二:使用SpringMVC提供的日期转换注解,局部

去掉

把请求参数的日期字符串转换为Date类型

自定义类类型   pojo

登录页面:login.jsp

java写一个User对象 而你前端表单提交的数据可以映射到我这个User对象对应的属性上去

SpringMVC帮助你创建对象

之前方法形参名要与前端的请求参数名一样,如果不一样会返回null 映射不成功 现在我要求不一样

如果请求参数名与形参名不一样 默认会映射失败 使用注解进行手动映射 @RequestParam 而且这个注释还必要要传值来进行映射 不然会报错(不同于之前的)

@RequestParam注解的属性

  • name/value;请求参数名
  • required:是否必须有这个参数,默认值: true,如果没有这个参数,报错,如果false,如果没有参数,不报错,参数值: null
  • defaultValue:默认值

id不能重复 for的作用是关联id 

表单里的数据,我不能一个一个的去接收  就会很麻烦

springmvc提供了对象类型->类类型

此时SpringMVC会自动的把请求参数名映射到对应的属性名上去了,要求请求参数名与属性名一样就行了

改一下css样式:

注册不能时get请求 密码啥的都暴露了 用post

集合类型

多个User对象

inti()方法报错:没有构造方法

mybatis当中含有的包装类型  -> vo(前端传过来的)

数据的接收 需要我们后台服务器经行一个数据的封装来对接

拿到数据users  然后调用service里的方法把数据添加到我们的数据了

以后开发中,批量修改和批量添加需要时,可以用到这个。

后台Controller,把集合属性封装到一个类中 作为该类的一个属性

数组类型:

批量删除,批量查询(根据一组id)

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

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

相关文章

分布式锁之基于redis实现分布式锁(二)

2. 基于redis实现分布式锁 2.1. 基本实现 借助于redis中的命令setnx(key, value),key不存在就新增,存在就什么都不做。同时有多个客户端发送setnx命令,只有一个客户端可以成功,返回1(true);其他…

快速排序演示和代码介绍

快速排序的核心是(以升序为例):在待排序的数据中指定一个数做为基准数,把所有小于基准数的数据放到基准数的左边,所有大于基准数的数据放在右边,这样的话基准数的位置就确定了,然后在两边的数据中重复上述操作

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏 一、proxx小游戏介绍1.1 proxx小游戏简介1.2 开源地址 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署Node.js环境4.1 下载Node.js安装包4.…

使用docker命令_进入容器_登录mysql服务_并执行sql语句---Docker工作笔记005

今天就用到了,不得不说用docker用到的还是少,记录一下,常用的也就这些吧. 首先执行: docker ps [root@localhost dataease-1.18.9]# docker ps CONTAINER ID IMAGE COMMAND CREATED …

itext - PDF模板套打

项目需求:获取列表数据之后直接将数据生成一个pdf。因此需要使用到 itext 对pdf进行直接操作。 环境配置 需要为pdf添加文字域,因此需要安装Adobe Acrobat 准备一个空的PDF文件,如果有现成的模板更好 依赖配置,我们使用itext的7版…

设计模式-16-Spring源码中的设计模式

1-Spring之观察者模式 Java、Google Guava都提供了观察者模式的实现框架。Java提供的框架比较简单,只包含java.util.Observable和java.util.Observer两个类。Google Guava提供的框架功能比较完善和强大:通过EventBus事件总线来实现观察者模式。实际上&am…

mac电脑文件比较工具 UltraCompare 中文for mac

UltraCompare是一款功能强大的文件和文件夹比较工具,用于比较和合并文本、二进制和文件夹。它提供了丰富的功能和直观的界面,使用户能够轻松地比较和同步文件内容,查找差异并进行合并操作。 以下是UltraCompare软件的一些主要特点和功能&…

并行与分布式计算 第9章 算法设计

文章目录 并行与分布式计算 第9章 算法设计9.1 设计过程9.1.1 PCAM设计过程9.1.2 划分9.1.3 通信9.1.4 组合9.1.5 映射 8.2 设计方法8.2.1 划分技术9.2.2 分治9.2.3 平衡树技术9.2.4倍增技术9.2.5 流水线技术9.2.6 破对称技术 并行与分布式计算 第9章 算法设计 9.1 设计过程 …

【LeetCode:1410. HTML 实体解析器 | 模拟+哈希表+字符串+库函数】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

2024年荆州中级工程师职称申报时间是什么时候?

甘建二十年耕耘职称。 2024年荆州中级工程师职称开始准备了,关于荆门中级职称具体申报时间,甘建二告诉你。 ​2024年荆州中级工程师职称申报时间: 1.水平能力测试报名3月份 2.水平能力测试考试4月份3.职称申报9月份,采取的是网上申…

多个视频怎么生成一个二维码?二维码看视频的制作方法

二维码能放入多个视频吗?现在用二维码看视频是很流行的一种方式,不仅符合现在人的行为习惯,而且还不需要占用自身的容量空间,能够即时的获取视频内容。那么当有多个视频需要展示,但是想要放到一个二维码中,…

【开源】基于Vue.js的天然气工程运维系统的设计和实现

项目编号: S 022 ,文末获取源码。 \color{red}{项目编号:S022,文末获取源码。} 项目编号:S022,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程…

界面组件Telerik UI for WinForms中文教程 - 创建明暗模式的桌面应用

黑暗模式现在在很多应用程序中都挺常见的,但如何在桌面应用程序中实现它呢?这很简单,本文将为大家介绍如何使用一个类和命令行调用来实现! Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI fo…

vue中列表渲染

列表渲染 实际开发中,使用每条数据的唯一标识作为key,也就是对于数组列表,对象中的属性如:id、手机号、身份证号、学号等唯一值,对象列表同理 只要不对列表的逆序添加,逆序删除等破坏顺序的操作,仅用于渲染…

设置滚动条样式

滚动条样式&#xff1a; 下面是代码&#xff1a; <!doctype html> <html lang"en"><head><meta charset"UTF-8"><title>CSS3自定义滚动条</title><style>header {font-family: Lobster, cursive;text-align: c…

查看sql语句执行计划并重建索引

晚上cpu报警显示当前cpu使用率达到90%以上&#xff0c;不到10%的空闲 先查询当前sql&#xff1a; #&#xff08;ORACLE&#xff09; SQL > set line 200 pages 1000 col event for a30 col program for a30 col username for a12 col sql_id for a15 col INST_ID for 9999 …

深入解析Java 8中HashMap的底层原理

引言 HashMap是Java中常用的集合类&#xff0c;用于存储键值对。其底层实现经过多次优化&#xff0c;包括哈希算法、数组扩容、链表转红黑树等。本文将深入研究HashMap的底层原理&#xff0c;并详细探讨如何解决哈希碰撞的技术。 1. 哈希算法 HashMap的核心是哈希算法&#…

openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数

文章目录 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数130.1 背景信息130.2 GUC参数设置130.3 操作步骤130.4 示例 openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数 130.1 背景信息 openGauss提供了多种修改GUC参数的方法&#xff0c;用户可…

vue2.0+elementui集成file-loader之后图标失效问题

背景 跑vue2elementUI项目时&#xff0c;由于前端这边需要在本地存放xlsx模板文件&#xff0c;供用户下载模板文件&#xff0c;所以需要在webpack构建的时候增加file-loader进行解析xlsx文件打包。 vue版本2.x element-ui 版本 2.13.x 注意 npm i -D file-loader版本号给vue项…

SpringMVC 基础知识

学习目标 掌握基于 SpringMVC 获取请求参数与响应 json 数据操作熟练应用基于 REST 风格的请求路径设置与参数传递能够根据实际业务建立前后端开发通信协议并进行实现基于 SSM 整合技术开发任意业务模块功能 1 SpringMVC 简介 1.1 概述 1.1.1 web程序开发流程 【执行过程】…