• SSM学习47:SpringMvc五种参数传递


      

    4.3.2 POJO数据类型

    简单数据类型一般处理的是参数个数比较少的请求,如果参数比较多,那么后台接收参数的时候就比较复杂,这个时候我们可以考虑使用POJO数据类型。

    • POJO参数:请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数

    • POJO参数接收,前端GET和POST发送请求数据的方式不变。

    • ==请求参数key的名称要和POJO中属性的名称一致,否则无法封装。==

     

     

    4.3.4 数组类型参数

    举个简单的例子,如果前端需要获取用户的爱好,爱好绝大多数情况下都是多个,如何发送请求数据和接收数据呢?

    • 数组参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型即可接收参数

    4.3.5 集合类型参数

    数组能接收多个值,那么集合是否也可以实现这个功能呢?

     

     

    创建SpringMVC项目

     目录

    补全目录结构 :添加java项结构

     

    导入jar包

    将pom.xml中多余的内容删除掉,再添加SpringMVC需要的依赖

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0modelVersion>
    5. <groupId>com.itheimagroupId>
    6. <artifactId>SpringMVCartifactId>
    7. <version>1.0-SNAPSHOTversion>
    8. <packaging>warpackaging>
    9. <name>SpringMVC Maven Webappname>
    10. <url>http://www.example.comurl>
    11. <properties>
    12. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    13. <maven.compiler.source>1.8maven.compiler.source>
    14. <maven.compiler.target>1.8maven.compiler.target>
    15. properties>
    16. <dependencies>
    17. <dependency>
    18. <groupId>junitgroupId>
    19. <artifactId>junitartifactId>
    20. <version>4.11version>
    21. <scope>testscope>
    22. dependency>
    23. <dependency>
    24. <groupId>javax.servletgroupId>
    25. <artifactId>javax.servlet-apiartifactId>
    26. <version>3.1.0version>
    27. <scope>providedscope>
    28. dependency>
    29. <dependency>
    30. <groupId>org.springframeworkgroupId>
    31. <artifactId>spring-webmvcartifactId>
    32. <version>5.2.1.RELEASEversion>
    33. dependency>
    34. dependencies>
    35. <build>
    36. <plugins>
    37. <plugin>
    38. <groupId>org.apache.tomcat.mavengroupId>
    39. <artifactId>tomcat7-maven-pluginartifactId>
    40. <version>2.1version>
    41. <configuration>
    42. <port>80port>
    43. <path>/path>
    44. configuration>
    45. plugin>
    46. plugins>
    47. build>
    48. project>

    添加tomcat运行快捷键

    创建配置类 SpringMvcConfig.class

    1. package com.itheima.config;
    2. import org.springframework.context.annotation.ComponentScan;
    3. import org.springframework.context.annotation.Configuration;
    4. @Configuration
    5. @ComponentScan("com.itheima.controller")
    6. public class SpringmvcConfig {
    7. }

    创建Controller类

    1. package com.itheima.controller;
    2. import com.itheima.domain.User1;
    3. import org.springframework.stereotype.Controller;
    4. import org.springframework.web.bind.annotation.RequestMapping;
    5. import org.springframework.web.bind.annotation.RequestParam;
    6. import org.springframework.web.bind.annotation.ResponseBody;
    7. import java.util.Arrays;
    8. import java.util.List;
    9. //@Controller:Springmvc的bean标志
    10. @Controller
    11. //@RequestMapping("/user")
    12. public class UserController {
    13. @RequestMapping("/save")
    14. @ResponseBody
    15. public String save(){
    16. System.out.println("郭浩康第一个Sprintmvc项目创建成功");
    17. return "{spring1save()...}";
    18. }
    19. @RequestMapping("/delete")
    20. @ResponseBody
    21. public String delete(){
    22. System.out.println("");
    23. return "{detete删除运行成功}";
    24. }
    25. //普通参数
    26. @RequestMapping("/kk")
    27. @ResponseBody
    28. public String kk(String name, @RequestParam("age1") int age){
    29. System.out.println("收到参数:"+name);
    30. System.out.println("收到参数:"+age);
    31. return "{kk成功}";
    32. }
    33. //POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
    34. @RequestMapping("/kk1")
    35. @ResponseBody
    36. public String pojoParam(User1 user){
    37. System.out.println("pojo参数传递 user ==> "+user);
    38. return "{'module':'pojo param'}";
    39. }
    40. //数组参数:同名请求参数可以直接映射到对应名称的形参数组对象中
    41. @RequestMapping("/kk2")
    42. @ResponseBody
    43. public String arrayParam(String[] likes){
    44. System.out.println("数组参数传递 likes ==> "+ Arrays.toString(likes));
    45. return "{'module':'array param'}";
    46. }
    47. //集合参数:同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据
    48. @RequestMapping("/kk3")
    49. @ResponseBody
    50. public String listParam(@RequestParam List likes){
    51. System.out.println("集合参数传递 likes ==> "+ likes);
    52. return "{'module':'list param'}";
    53. }
    54. }

    使用配置类ServletConfig替换web.xml

    将web.xml删除,换成ServletContainersInitConfig

    1. package com.itheima.config;
    2. import org.springframework.web.context.WebApplicationContext;
    3. import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
    4. import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
    5. public class ServletConfig extends AbstractDispatcherServletInitializer {
    6. //加载Springmvc容器
    7. @Override
    8. protected WebApplicationContext createServletApplicationContext() {
    9. AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
    10. ctx.register(SpringmvcConfig.class);
    11. return ctx;
    12. }
    13. //设置请求处理
    14. @Override
    15. protected String[] getServletMappings() {
    16. return new String[]{"/"};
    17. }
    18. //加载Spring容器
    19. @Override
    20. protected WebApplicationContext createRootApplicationContext() {
    21. return null;
    22. }
    23. }

    运行结果

     

     

    后台

  • 相关阅读:
    Linux——监控GPU集群显存并自动运行python训练脚本
    WebSocket开发(记录落地)功能
    UDP网络通信的发包/收包过程/代理服务器的使用
    探索GmSSL+Nginx实践及原理
    C++ 使用c++类模板实现动态数组-可实现自定义数据类型存储
    chatgpt赋能python:如何去除Python列表中的中括号
    Systrace系列11 —— Triple Buffer 解读
    Spring - FactoryBean扩展实战_MyBatis-Spring 启动过程源码解读
    Mybatis—动态sql和分页
    CISCO设备信息泄漏漏洞案例2
  • 原文地址:https://blog.csdn.net/weixin_51330376/article/details/127673496