案例13 Spring MVC参数传递案例
基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。
1. 创建项目
选择Maven快速构建web项目,项目名称为case13-springmvc02。
2. 配置Maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wfit.springmvc</groupId><artifactId>springmvc02</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!--spring mvc--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.25</version></dependency><!--servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.3</version></dependency></dependencies>
</project>
3. 更新Maven仓库
4. 创建java和resources目录
src.main路径下,执行new – Directory操作,选择java、resources后,执行回车键。
5. 创建Spring MVC配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--开启注解--><context:component-scan base-package="com.wfit"/><!--启用mvc--><mvc:annotation-driven></mvc:annotation-driven>
</beans>
6. 配置web.xml
在web.xml中配置DispatcherServlet。
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app><!--解决POST中文乱码问题 过滤器--><filter><filter-name>encoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--配置前端控制器DispatcherServlet--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--加载SpringMVC文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><!--启动容器时加载servlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><!--表示拦截所有请求--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
7. 创建Student实体类
src.main.java.com.wfit.entity目录下创建Student.java。
public class Student {public String id;public String name;public int age;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"id='" + id + '\'' +", name='" + name + '\'' +", age=" + age +'}';}
}
8. 创建ParamController类
在src.main.java.com.wfit.param目录下创建ParamController.java。
HttpServletRequest参数传递
@Controller
@RequestMapping("/param")
public class ParamController {/*** 通过HttpServletRequest接收参数*/@RequestMapping("/servlet")public void servlet(HttpServletRequest request, HttpServletResponse response) throws IOException {String name = request.getParameter("name");System.out.println("name=" + name);PrintWriter writer = response.getWriter();writer.print("hello " + name);writer.flush();writer.close();}
}
基本数据类型参数传递
基本数据类型以及他们的包装类。
/*** 使用基本数据类型和String类型*/
@RequestMapping(value = "/simple",produces = "text/plain;charset=UTF-8")
@ResponseBody
public String simple(String id,String name,int age){String str = id + "," + name + "," + age;System.out.println(str);return str;
}
Java Bean参数传递
@Controller
@RequestMapping("/param")
public class ParamController {/*** JavaBean传递参数*/@RequestMapping(value = "/bean",method = RequestMethod.POST,produces = "text/plain;charset=UTF-8")@ResponseBodypublic String bean(Student student){System.out.println(student);return student.toString();}
}
数组参数传递
@Controller
@RequestMapping("/param")
public class ParamController {/*** 数组参数*/
@RequestMapping(value = "/array",method = RequestMethod.POST)
@ResponseBody
public String array(String[] hobbies){for(String hobby : hobbies){System.out.println(hobby);}return "success";
}
}
List参数传递
@Controller
@RequestMapping("/param")
public class ParamController {/*** List参数*/
@RequestMapping(value = "/list",method = RequestMethod.POST)
@ResponseBody
public String list(@RequestParam List<String> hobbyList){hobbyList.forEach(hobby -> System.out.println(hobby));return "success";
}
}
Map参数传递
@Controller
@RequestMapping("/param")
public class ParamController {/*** Map参数*/
@RequestMapping(value = "/map",method = RequestMethod.POST)
@ResponseBody
public String map(@RequestParam Map<String,Object> map){System.out.println(map);return "success";
}
}
9. 创建JsonController类
在src.main.java.com.wfit目录下创建JsonController类,实现JSON参数转成Java Bean、Map、List等引用类型。
Json Bean参数传递
@Controller
@RequestMapping("/json")
public class JsonController {/*** json bean*/@RequestMapping(value = "/bean",method = RequestMethod.POST)@ResponseBodypublic Object bean(@RequestBody Student student){System.out.println(student);Map<String,Object> map = new HashMap<String,Object>();map.put("code",200);map.put("msg","success");map.put("data",student.toString());return map;}
}
Json Map参数传递
@Controller
@RequestMapping("/json")
public class JsonController {/*** json map*/@RequestMapping(value = "/map",method = RequestMethod.POST)@ResponseBodypublic Object map(@RequestBody Map<String,Object> jsonMap){System.out.println(jsonMap);Map<String,Object> map = new HashMap<String,Object>();map.put("code",200);map.put("msg","success");map.put("data",jsonMap);return map;}
}
Json List参数传递
@Controller
@RequestMapping("/json")
public class JsonController {/*** json list*/@RequestMapping("/list")@ResponseBodypublic Object list(@RequestBody List<Student> studentList){System.out.println(studentList);Map<String,Object> map = new HashMap<String,Object>();map.put("code",200);map.put("msg","success");map.put("data",studentList);return map;}
}
相关文章:

案例13 Spring MVC参数传递案例
基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。 1. 创建项目 选择Maven快速构建web项目,项目名称为case13-springmvc02。 2. 配置Maven依赖 <?xml version"1.0" encoding"UTF-8&quo…...

IntellIJ Idea 连接数据库-MySql
前言:可以用mariaDB工具,在本地创建服务器主机和数据库,而后用intellIJ Idea尝试连接 MariaDB创建数据库练习 1.IntellIJ Idea打开界面右侧Database工具,选择MySQL数据库。 2.填写数据库账号密码,地址端口号ÿ…...

通讯协议036——全网独有的OPC HDA知识一之聚合(五)计数
本文简单介绍OPC HDA规范的基本概念,更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化,以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…...

【TensorFlow】P0 Windows GPU 安装 TensorFlow、CUDA Toolkit、cuDNN
Windows 安装 TensorFlow、CUDA Toolkit、cuDNN 整体流程概述TensorFlow 与 CUDA ToolkitTensorFlow 是一个基于数据流图的深度学习框架CUDA 充分利用 NIVIDIA GPU 的计算能力CUDA Toolkit cuDNN 安装详细流程整理流程一:安装 CUDA Toolkit步骤一:获取CU…...

基于身份的安全威胁正在迅速增长
根据端点安全和威胁情报供应商 CrowdStrike 发布的一份报告,目前最危险的网络安全威胁是能够访问给定系统合法身份信息的攻击者。 根据该报告,交互式入侵(该公司将其定义为攻击者积极工作以在受害者系统上实现某种非法目的的入侵)…...

解决ElementUI动态表单校验验证不通过
这里记录一下,写项目时遇到的一个问题:就是动态渲染的表单项,加验证规则后一直不通过!!! 原代码 html部分: <el-form-itemv-for"(teaclass,index) in addFom.classIds":label&quo…...

深眸科技|发现AI+3D视觉的价值,技术升级加速视觉应用产品国产替代
随着中国工业化进程的不断深入和智能制造浪潮的影响,工业生产对于机器视觉技术的需求不断攀升,其应用范围覆盖了工业领域的众多行业,包括3C电子、汽车、半导体、新能源、物流等。 据GGII发布的最新数据显示,近年来我国机器视觉市…...

云计算-知识点大纲
前言:云计算的基本概念学习,基础知识大纲梳理。 目录 云计算的概念 云计算的特征 部署模式 服务模式 云计算的发展 云计算的核心技术 虚拟化技术 常见的虚拟化技术 服务器虚拟化 裸金属型技术 服务器虚拟化技术的特点 存储虚拟化 CPU 内存…...

设计模式(2)工厂方法模式
一、 1、介绍:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说…...

如何创建51单片机KEIL工程
如何创建51单片机KEIL工程步骤: (1)打开keil软件,点击工具栏-Project,选择创建新的工程; (2)然后给工程命名,文章以project为例,然后点击保存 (…...

openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA
文章目录 openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA34.1 语法格式34.2 参数说明34.3 示例 openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA SCHEMA又称作模式。通过管理SCHEMA,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象…...

虚拟世界探索:科技之下的未来可能性
随着科技的飞速发展,人们对于虚拟世界的憧憬和探索也日益加深。虚拟世界,那是一个超越现实的概念,一个充满想象力和创造力的领域。然而,虚拟世界究竟有可能实现吗?这是一个引人深思的问题。 虚拟世界,首先让…...

OSPF技术入门(第三十四课)
1 OSPF的介绍 OSPF是一种链路状态路由协议,主要用于IP网络中的路由选择。它是一种开放协议,能够在不同的网络设备之间进行通信。OSPF利用链路状态数据库来描述网络拓扑结构,并通过Dijkstra算法计算出最短路径。它支持按照精确度划分的路由优先级,以及多个相等的路径,并能自…...

春秋云镜 CVE-2022-0948
春秋云镜 CVE-2022-0948 WordPress plugin Order Listener for WooCommerce SQLI 靶标介绍 WordPress 插件 Order Listener for WooCommerce 3.2.2 之前版本存在 SQL注入漏洞。 启动场景 漏洞利用 EXP curl http://example.com/?rest_route/olistener/new --data {"…...

【资讯速递】AI与人类思维的融合;OpenAI在中国申请注册“GPT-5”商标;移动大模型主要面向to B 智能算力是未来方向
2023年8月11日 星期五 癸卯年六月廿五 第000001号 欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于IT资讯速递专栏,本专栏主要用于发布各种IT资讯,为大家可以省时省力的就能阅读和了解到行业的一些新资讯 资…...

TDesign中后台管理系统-用户登录
目录 1 创建用户表2 开发后端接口3 测试接口4 修改登录页面调用后端接口最终效果总结 中后台系统第一个要实现的功能就是登录了,我们通常的逻辑是让用户在登录页面输入用户名和密码,调用后端接口去验证用户的合法性,然后根据接口返回的结果进…...

RN 使用react-navigation写可以滚动的横向导航条(expo项目)
装包: yarn add react-navigation/material-top-tabs react-native-tab-view npx expo install react-native-pager-view import React from react import { View, Text, ScrollView, SafeAreaView } from react-native import { Icon } from ../../../../../compo…...
单例模式写法的总结(保证线程安全)
首先,单例模式分为饿汉模式和懒汉模式 单例模式有什么用呢? 可以保证在程序运行过程中,一个类只有一个实例,而且该实例易于供外界访问,从而方便的控制了实例个数,并节约系统资源。 例如:DataSource&#x…...

SQL Server 查询数据并汇总相关技巧 23.08.08
GROUPING 是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。 仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择…...
第一章 SpringBoot 介绍-最小配置
1. spring-boot web应用的最小配置 1.1 pom配置两个依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version></parent><depende…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...