Spring MVC接收参数

SpringMVC接收参数

   1. ServletAPI紧耦方法(使用原生ServletAPI)

使用原有的request对象进行获取
只需要在方法内容声明request形参即可,servlet在调用的时候会自动赋值。
按照request的使用方式正常使用即可
Springmvc参数优点:
      没有参数,不赋值,正常执行
     有参数,则给参数进行赋值,然后执行

          1.1 SpringMVC会对所有控制器方法参数进行注入.如果能注入就注入,不能注入不注入.

@RequestMapping("demo")

public String demo(HttpServletRequest request){

         System.out.println(request.getParameter("id"));

         System.out.println(request.getParameter("name"));

         return "index.jsp";

}

   2. ServletAPI解耦方式.

       2.1 接收非对象类型参数

            2.1.1 只要提供与请求参数名 相同的方法参数 ,SpringMVC 帮助注入

@RequestMapping("demo")

public String demo(String name, int id){       

         System.out.println(name+"---"+id);

         return "index.jsp";

}

            2.1.2 如果请求参数和方法参数名称不同,可以在方法参数前添加@RequestParam

              @RequestParam("name")在方法的每个不同名参数前使用注解@RequestParam("请求参数名")
              @RequestParam(value=””)设置获取哪个请求参数赋值给方法参数
              @RequestParam(defaultValue=””)当请参数值为null或者 或空字符串的时候会将默认值赋值给方法参数。
              @RequestParam(required=true)要求请求参数中必须有这个参数,没有报错400。
                      false是默认值,是否有这个参数没有要求.
                      required和defaultValue不能一起使用。

@RequestMapping("demo2")

public String demo2(@RequestParam(required=true) String name,int id){

     }

      3.接收对象类型参数.引用类型

              3.1 只要请求参数名和对象(People)中属性名相同,自动赋值.

                             如果方法参数为引用类型,则在方法调用的时候直接给参数进行创建对象。

              3.2 实现方式

<form action="demo3" method="post">

       <input type="text"  name="id"/>

       <input type="text"  name="name"/>

       <input type="submit"  value="提交"/>

</form>

@RequestMapping("demo3")

public String demo3(People peo){

        System.out.println(peo.toString());

        return "index.jsp";

}

            3.3 如果请求参数中没有对象中属性,也会帮助实例化.

        只要写在方法参数中,SpringMVC只要能给这个方法参数赋值,一定给赋值.

    4.使用restful传值

           4.1 前台页面使用指定的格式进行数据请求发送;后台使用指定的格式进行变量占位接收请求数据;

           4.2 jsp中设定格式(restful多和超链接结合使用)

                   4.2.1 {名称} : 占位符,其中名称自定义

                   4.2.2 @PathVariable 把占位符中内容赋值给方法参数.

                   4.2.3 如果占位符中名和方法参数名称不对应@PathVariable(value=”占位符名称”)

                   4.2.4 使用restful传值时注意控制器方法返回值,建议以/开始,使用全路径,其中/表示项目根目录(WEBContent)

<a href="demo5/123/zhangsan">跳转</a>

@RequestMapping("demo5/{id}/{name}")

public String demo5(@PathVariable int id,@PathVariable String name){

          System.out.println(id+" "+name);

          return "/index.jsp";

}

   5. 接收前台传递过来的数组类型数据

         5.1 如果前台有复选框name=”demo”

<input type=”checkbox” name=”demo” value=”1”/>

<input type=”checkbox” name=”demo” value=”1”/>

<input type=”checkbox” name=”demo” value=”1”/>

        5.2 在控制器中通过@RequestParam(value=”demo”)接收

public String demo(@RequestParam(value=”demo”)  List<String> demo){

      return “index.jsp”

}

  6. 接收前台传递过来的JSON字符串数据

            6.1 前台代码

                  6.1.1 其中var a的类型必须是字符串,值两次不要忘记单引号

                  6.1.2 contentType:'application/json' 必须写,否则数据不是json

$(function(){

     $("button").click(function(){

         var a ='{"ids":[{"id":1},{"id":2}]}';

  $.ajax({

      url:'demo1',

      contentType:'application/json',

      data:a,

      success:function(data){

            alert(data);

           },

type:'post'

});

})

})

               6.2 使用@RequestBody可以把内容转换为json数据

@RequestMapping("demo1")

public String demo1(@RequestBody Demo1 demo1) throws IOException{

      // ServletInputStream is = req.getInputStream();

      // int i = 0 ;

      // while((i=is.read())!=-1){

      // System.out.println((char)i);

      // }

     System.out.println(demo1);

     return "/index.jsp";

 }

 木子璇总结时刻:欢迎小伙伴们提出建议哦,如有错误,望大神指出哦,谢谢啦。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值