案例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;}
}

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

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

相关文章

WPF上位机9——Lambda和Linq

Lambda Linq 操作集合 使用类sql形式查询 Linq To SQL

分类预测 | MATLAB实现SMA-CNN-BiLSTM-Attention多输入分类预测

分类预测 | MATLAB实现SMA-CNN-BiLSTM-Attention多输入分类预测 目录 分类预测 | MATLAB实现SMA-CNN-BiLSTM-Attention多输入分类预测分类效果基本介绍模型描述程序设计参考资料 分类效果 基本介绍 1.MATLAB实现SMA-CNN-BiLSTM-Attention多输入分类预测&#xff0c;CNN-BiLSTM结…

unity新输入系统的简单使用(New InputSystem)

1、在包管理器 unity注册表中下载安装InputSystem 2、给玩家添加组件PlayerInput&#xff0c;点击CreatAction,创建一个InputAct InputAct,这是玩家的输入文件&#xff0c;在里面可以设置玩家输入 3、使用 例如玩家控制角色移动 在InputAct中&#xff0c;默认已经设置好了移…

基于 CentOS 7 构建 LVS-DR 群集 配置nginx负载均衡

环境配置&#xff1a; RHCE客户机192.168.100.146node1lvs192.168.100.145node2RS192.168.100.147node3RS192.168.100.148 配置ipvsadm httpd&#xff1a; [rootnode1 ~]# yum install ipvsadm.x86_64 [rootnode2 ~]# yum install http -y [rootnode2 ~]# systemctl …

日常BUG——Java使用Bigdecimal类型报错

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 直接上代码&#xff1a; Test public void test22() throws ParseException {System.out.p…

本地oracle登录账号锁定处理,the account is locked

1.打开cmd命令窗口 2.打开sqlplus: sqlplus /nolog(加/nolog是不登录服务器的意思&#xff0c;不加就需要输账号密码) 3.切换到管理员&#xff1a;conn / as sysdba; 第2步第3步可以合并&#xff0c;直接使用sysdba登录&#xff1a;sqlplus / as sysdba; 4.解锁账号&#x…

C语言每日一题:16:数对。

思路一&#xff1a;基本思路 1.x,y均不大于n&#xff0c;就是小于等于n。 2.x%y大于等于k。 3.一般的思路使用双for循环去遍历每一对数。 代码实现&#xff1a; #include <stdio.h> int main() {int n 0;int k 0;//输入scanf("%d%d", &n, &k);int x…

AI:02-基于深度学习的动物图像检索算法的研究

文章目录 一、算法原理二、代码实现三、实验结果四、总结深度学习在计算机视觉领域中的应用越来越广泛,其中动物图像检索算法是一个重要的应用场景。本文将介绍一种基于深度学习的动物图像检索算法,并提供相应的代码实现。 一、算法原理 本算法采用卷积神经网络(Convolutio…

半关闭、端口复用与IO多路复用

文章目录 半关闭端口复用IO多路复用&#xff08;IO多路转接&#xff09;模型解决措施 sellect缺点 poll应用缺点 epoll应用工作模式 半关闭 使用close(fd);所对应的文件描述符写和读都关闭了。 端口复用 可以解决绑定失败的问题。 IO多路复用&#xff08;IO多路转接&#…

【EI检索】第九届建筑、土木与水利工程国际学术会议(ICACHE 2023)

第九届建筑、土木与水利工程国际学术会议&#xff08;ICACHE 2023&#xff09; 2023 9th International Conference on Architectural, Civil and Hydraulic Engineering 第九届建筑、土木与水利工程国际学术会议&#xff08;ICACHE 2023&#xff09;将于2023年10月13-15日在中…

leetcode24. 两两交换链表中的节点

题目&#xff1a;leetcode24. 两两交换链表中的节点 描述&#xff1a; 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 思路&…

24.Netty源码之合理管理堆内存

highlight: arduino-light 合理管理 Netty 堆外内存 内存使用目标 •内存占用少(空间) •应用速度快(时间) 即多快好省 对 Java 而言&#xff1a;减少 Full GC 的 STW(Stop the world)时间 内存使用技巧 • 减少对象本身大小 md 例 1&#xff1a;用基本类型就不要用包装类。 例…