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

Spring MVC接收请求的参数

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

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

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

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

直接接收即可

案例:
controller

java 复制代码
@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中的超链接

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

2. POJO类型参数绑定

  • 编写pojo

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

    java 复制代码
    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里面添加表单

    html 复制代码
    <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

@PathVaribale

  • 作用

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

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

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

    java 复制代码
    @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里面定义超链接

    html 复制代码
    <a href="/account/findAccount7/123">restful传参</a><br>

4.JSON接收

jsp

java 复制代码
  $.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

java 复制代码
       @RequestMapping("/findAccount")
       @ResponseBody
       public Account findAccount(@RequestBody Account account){
          return account;
       }
相关推荐
嵌入式小企鹅28 分钟前
UiPath推出AI编程“总指挥台”,SiFive发布RISC-V第三代猛兽
人工智能·学习·google·程序员·ai编程·risc-v·开源工具
Ada大侦探42 分钟前
新手小白学习数据分析03----Excel 报表之大厂周报(2026最新版实操,包教包会!)
学习·数据分析·excel
带刺的坐椅2 小时前
Java 流程编排新范式 Solon Flow:一个引擎,七种节点,覆盖规则/任务/工作流/AI 编排全场景
java·spring·ai·solon·flow
-To be number.wan2 小时前
进程与线程的区别
学习·操作系统
llhm2 小时前
tsp学习笔记——LINUX SDK编译2(2)Kernel6.1 Linux
linux·笔记·学习
xiaoshuaishuai82 小时前
C# CDN加速与离线包优化PowerSetting慢问题
开发语言·windows·spring·c#
野生技术架构师3 小时前
2026最新Java面试八股文天花板(含详细解析)
java·jvm·spring
小小工匠3 小时前
Spring AI RAG - 06 敏感词过滤与内容安全防护
人工智能·安全·spring
李白不吃坚果4 小时前
沟道电荷的思考
学习·cmos·集成电路·模拟集成电路设计·沟道电荷
学会870上岸华师4 小时前
C 语言程序设计——第一章课后编程题
c语言·开发语言·学习·算法