专栏首页国产程序员Spring3 MVC请求参数获取的几种方法

Spring3 MVC请求参数获取的几种方法

通过@PathVariabl获取路径中的参数
@RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET)
    public String printMessage1(@PathVariable String id,@PathVariable String name, ModelMap model) {
        
        System.out.println(id);
        System.out.println(name);
        model.addAttribute("message", "111111");
        return "users";
    }

例如,访问user/123/lei路径时,执行以上方法,其中,参数id=123,name=lei


@ModelAttribute获取POST请求的FORM表单数据

```
<form method="post" action="hao.do">
    a: <input id="a" type="text"   name="a"/>
    b: <input id="b" type="text"   name="b"/>
    <input type="submit" value="Submit" />
 </form>
```

Java Pojo如下

    public class Pojo{
        private String a;
        private int b;
    }

Java Controller如下

@RequestMapping(method = RequestMethod.POST) 
public String processSubmit(@ModelAttribute("pojo") Pojo pojo) { 
    
    return "helloWorld"; 
}

@RequestBody获取POST请求的FORM表单数据

@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json"这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.

js代码

<script type="text/javascript">  
    $(document).ready(function(){  
        var saveDataAry=[];  
        var data1={"userName":"test","address":"gz"};  
        var data2={"userName":"ququ","address":"gr"};  
        saveDataAry.push(data1);  
        saveDataAry.push(data2);         
        $.ajax({ 
            type:"POST", 
            url:"user/saveUser", 
            dataType:"json",      
            contentType:"application/json",               
            data:JSON.stringify(saveData), 
            success:function(data){ 

            } 
         }); 
    });

java代码

    @RequestMapping(value = "saveUser", method = {RequestMethod.POST }}) 
    @ResponseBody  
    public void saveUser(@RequestBody List<User> users) { 
         userService.batchSave(users); 
    }

@ModelAttribute和@RequestBody注解不同之处在于@ModelAttribute注解可以在前端直接获取返回值

@Controller
public class Hello2ModelController extends BaseController {

    @RequestMapping(value = "/helloWorld2")  
    public String helloWorld(@ModelAttribute("myUser") User user) {
        user.setName("老王");
       return "helloWorld";  
    }  
}

model中key为myUser ,前台可以直接通过${myUser.xx}获取user相应属性


直接用HttpServletRequest获取

@RequestMapping(method = RequestMethod.GET) 
public String get(HttpServletRequest request, HttpServletResponse response) { 
   System.out.println(request.getParameter("a")); 
    return "helloWorld"; 
}

用注解@RequestParam绑定请求参数

用注解@RequestParam绑定请求参数a到变量a

当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决, 例如: @RequestParam(value="a", required=false) Controller如下

@RequestMapping(value = "/requestParam", method = RequestMethod.GET) 
public String setupForm(@RequestParam("a") String a, ModelMap model) { 
   System.out.println(a); 
return "helloWorld";
}

本文分享自微信公众号 - 国产程序员(Monday_lida)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java使用poi读取excel文档的一种解决方案

    本人在学习使用java的过程中,需要验证一下excel表格里面的数据是否与数据库中的数据相等。由于数据太多,故想着用java读取excel数据再去数据库验证。上...

    八音弦
  • 大数据分析工程师面试集锦2-Scala

    本篇文章为大家带来Scala面试指南,本文会结合数据分析工程师在工作中会用到的知识点和网络上搜集的Scala常用考点,组成一份Scala精选题库,并附上详细的解...

    AI研习社
  • 性能测试 —— Dubbo 基准测试

    摘要: 原创出处 http://www.iocoder.cn/Performance-Testing/Dubbo-benchmark/ 「芋道源码」欢迎转载,保...

    芋道源码
  • 手把手:Java内存泄漏分析Memory Analyzer Tool

    点击上方"IT牧场",选择"设为星标"点击上方"IT牧场",选择"设为星标"技术干货每日送达

    用户1516716
  • 老程序员都干嘛去了?来看下国外的调查!

    在纽约,PyGotham每年召开之际,都会有超过600名程序员聚集在一起讨论工作。为了让会议更加多元化,组织者尽量邀请一些女性程序员以及各种肤色的程序员。

    Java技术栈
  • Spring Boot YML 掀翻 Properties!!

    那么,这两种格式的配置文件到底有哪些区别呢?哪个更好?能不能替换代替?今天,栈长就来解开这些谜团,看 YML 能不能掀翻Properties。。。

    Java技术栈
  • 优秀的代码都是如何分层的?

    说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多...

    用户1516716
  • Spring Cloud Stream实现消息过滤消费

    本文探讨Spring Cloud Stream & RocketMQ过滤消息的各种姿势。

    用户1516716
  • 挖洞神器---JSFinder

    在渗透测试及漏洞挖掘过程中,信息搜集是一个非常重要的步骤。而在网站的JS文件中,会存在各种对测试有帮助的内容。

    HACK学习
  • 分享:手把手教你如何免费且光荣地使用正版IntelliJ IDEA

    IDEA是个人最喜欢的IDE,它非常智能,懂我的心,极大地提高了个人编程效率;让人爱不释手,欲罢不能。

    用户1516716

扫码关注云+社区

领取腾讯云代金券