Spring MVC学习之——如何接收请求传过来的参数

news/2025/2/1 22:57:26/

Spring MVC接收请求的参数

Springmvc中,接收页面提交的数据是通过方法形参来接收:

  • 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参

  • springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换器)在特殊情况下需要自定义converter,如对日期数据

1.少量参数(基本数据类型)

直接接收即可

案例:
controller

@Controller
@RequestMapping("/account")
public class AccountController {@RequestMapping("/findAccount5")public String findAccount5(String username,Model model){model.addAttribute("msg", username);return "success";}@RequestMapping("/findAccount6")public String findAccount6(String username,Integer age,Model model){model.addAttribute("msg", username+" "+age);return "success";}
}

jsp中的超链接

<a href="/account/findAccount5?username=eric">参数接收-基本数据类型</a>
<a href="/account/findAccount6?username=eric&age=22">参数接收-多个基本数据类型</a>

2. POJO类型参数绑定

  • 编写pojo

    public class Account implements Serializable {private Integer id;private String name;private Float money;private Address address;//省略get set toString方法}
    
    public class Address implements Serializable {private String provinceName;private String cityName;//省略get set toString方法}
    
  • 编写controller

    package com.by.controller;import com.by.pojo.Account;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;@Controller
    @RequestMapping("/account")
    public class AccountController {@RequestMapping("/saveAccount")public String saveAccount(Account account, Model model){model.addAttribute("msg", account);return "success";}
    }
    
  • 在index.jsp里面添加表单

    <form action="account/saveAccount" method="post">账户名称:<input type="text" name="name"><br/>账户金额:<input type="text" name="money"><br/>账户省份:<input type="text" name="address.provinceName"><br/>账户城市:<input type="text" name="address.cityName"><br/><input type="submit" value="保存">
    </form>
    

3. restful

  • restful概述:

    (Representational State Transfer,表现层状态转移):URL定位资源时,用HTTP动词(GET,POST,DELETE,PUT)描述操作

restful风格URL

  • 在Restful之前的操作:
    http://127.0.0.1/user/query?id=1 根据用户id查询用户数据
    http://127.0.0.1/user/save 新增用户
    http://127.0.0.1/user/update?id=1 修改用户信息
    http://127.0.0.1/user/delete?id=1 删除用户信息

  • RESTful用法:
    http://127.0.0.1/user/1 GET 根据用户id查询用户数据
    http://127.0.0.1/user POST 新增用户
    http://127.0.0.1/user PUT 修改用户信息
    http://127.0.0.1/user/1 DELETE 删除用户信息

  • RESTful总结:

    Restful风格就是请求url统一,根据不同的请求方式,请求不同的后台方法。如果需要携带参数,在url上使用/{}占位符。

@PathVaribale

  • 作用

    用于绑定url中的占位符。例如:/account/{id},这个{id}就是url占位符

    url支持占位符是spring3.0之后加入的,是springmvc支持rest风格url的重要标志。

  • 描述需要使用指定的请求方式来请求该方法

    @Controller
    @RequestMapping("/account")
    public class AccountController {@RequestMapping(value="/findAccount7/{id}")public String findAccount11(@PathVariable Integer id, Model model){model.addAttribute("msg", id);return "success";}
    }
    
  • 测试:在index.jsp里面定义超链接

    <a href="/account/findAccount7/123">restful传参</a><br>
    

4.JSON接收

jsp

  $.ajax({type:"post",url:"/account/findAccount",contentType:"application/json;charset=UTF-8",data:'{"id":1,"name":"张二狗","money":999.0}',success:function(data){//{id:2, name:铁柱, money:100}alert(data.name);}})

Controller

       @RequestMapping("/findAccount")@ResponseBodypublic Account findAccount(@RequestBody Account account){return account;}

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

相关文章

多输入多输出 | Matlab实现PSO-CNN粒子群优化卷积神经网络多输入多输出预测

多输入多输出 | Matlab实现PSO-CNN粒子群优化卷积神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现PSO-CNN粒子群优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-CNN粒子群优化卷积神经网络多输入多输出…

使用Spring Data JPA实现审计功能,记录创建人、创建时间、最后修改时间和最后修改人

文章目录 前言实现方式基于AuditorAware接口实现审计功能启用JPA审计功能定义实体类实现AuditorAware接口 基于自定义监听器实现审计功能启用JPA审计功能定义实体类定义自定义监听器类 总结 前言 近日心血来潮想做一个开源项目&#xff0c;目标是做一款可以适配多端、功能完备…

Windows系统字体尺寸学习

调用GetTextMetrics来获得字体尺寸信息, 函数返回设备描述表中当前选定的字体信息&#xff1b; 返回值到TEXTMETRIC类型的结构中&#xff1b; 返回字段值的单位取决于当前设备描述表映射方式&#xff1b;默认映射方式是MM_TEXT&#xff0c;值的单位是像素&#xff1b; 前7个字…

Blazor 根据路由判断哪些页面需要加模板,哪些不需要

比如我们的登录的页面是不需要加通用模板的&#xff0c;通过if 控制 RouteView的DefaultLayout即可 <BootstrapBlazorRoot><Router AppAssembly"typeof(App).Assembly"><Found Context"routeData"><PageTitle>Title</PageTitl…

【Docker】安装 Nacos容器并根据Nginx实现负载均衡

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

前端开发 0: 前端环境搭建

欢迎来到我即将展开的一系列博客&#xff0c;将带你踏上前端开发的奇妙之旅&#xff01;在这个数字化时代&#xff0c;前端开发成为了构建现代网页和应用程序的关键技能。无论你是刚刚入门还是已经有一些经验&#xff0c;这个系列将为你提供宝贵的知识和实用的技巧&#xff0c;…

js动态设置关键侦@keyframes

js动态设置关键侦keyframes 1.前置知识 关键侦keyframes规则通过在动画序列中定义关键侦的样式来控制CSS动画序列的中间步骤 keyframes slidein {from {transform: translateX(0%);}to {transform: translateX(100%);} } // from 等价于 0%&#xff1b;to 等价与 100% // 或…

【Docker】网络模式详解及容器间网络通信

目录 一、概述 二、默认网络 三、网络模式及应用 1. Bridge模式 2. Host模式 3. none网络模式 四、自定义网络应用 1. 网络相连 2. 自定义通讯 3. 自定义IP 每篇一获 一、概述 在 Docker 中&#xff0c;网络设置包括 IP 地址、子网掩码、网关、DNS 和端口号等关键组…