java接收小程序的参数_java框架(2.3)参数的接收

上章我们讲到用@RequestBody注解接收参数和不用@RequestBody进行了对比,发现这个这个注解注解到要接收的参数上就能接收json格式的参数。那么今天来具体说说接收参数这件事。

我们从前端接收参数有四种方式:

普通的直接传参

通过httpServletRequet接收参数

通过对象接收参数

通过restful风格的URl接收参数

下面具体了解下:

普通的直接传参:

接收String:

@RequestMapping("/String")

public void StringTest(String name){

System.out.println(name);

}

如果我们访问这个地址,并且随便通过一种方式穿个参数:

ef6b4566-683b-450a-bdf7-9ee70d6e77e5.png

我们在控制台就可以看到接收到的参数了:

03f7e208-770b-40cc-9f77-2d90acaf5d15.png

接收int:

@RequestMapping("/int")

public void intTest(int age){

System.out.println(age);

}

同样传个参数试试:

fc349a2a-9609-41c4-863b-5ce16965b3f3.png

也接收到了:

0245e6a9-3f9f-49d4-b637-b52d702b6a8d.png

那么,我们看看如果在int类型传入一个字符串:

0071ff72-b5d9-4f30-8bfd-8d297c20c22b.png

这时候的结合是控制台就不会打印内容了。原因是没有访问到地址。

当我们传入的是一个参数,访问的时候,SpringMVC不仅会通过RequestMapping来匹配方法,同时还要根据参数类型来确定方法。因此在这我们没有访问到要访问的方法。

通过httpServletRequet接收参数

这个就是之前Servlet学到的通过request来接收参数,首先我们需要导入servlet-api依赖:

javax.servlet

javax.servlet-api

4.0.0-b07

provided

然后写上代码:@RequestMapping("/request")

public void request(HttpServletRequest request){

String name = (String) request.getParameter("name");

System.out.println(name);

}

有没有发现和servlet几乎一模一样?反正之前servlet用的方法在这都能用,下去可以自行测试。

通过对象接收一个参数:

比如说,我们有一个对象叫做user,user里面包含了name和age两个字段。如果我们接收的时候name还有age一个个接收就会显得太乱,特别是真正项目中字段很多的情况下,不仅看起来很乱,而且不好维护。于是强大的SpringMVC再次给我们提供了允许按对象来接收的支持:首先新建一个包param,然后创建一个user对象:

package com.demo.param;

public class User {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

然后新建一个方法:

@RequestMapping("/obj")

public void obj(User user){

System.err.println(user.getName());

System.err.println(user.getAge());

}

84e0d7d9-ede9-45bf-96e5-fd73710300c7.png

可以看出我们的参数都打印出来了(虽然是红的,但是没影响~):

8cfe806b-e812-4c9e-a238-2ae6618e785f.png

restful接收参数:

前面貌似讲到restful,就是在地址映射上加上{参数},这个有两种方式:@PathVariable不带参数注解@RequestMapping("/restful/{name}")

public void restful(@PathVariable String name){

System.out.println(name);

}

@PathVariable带参数注解@RequestMapping("/restful/{name}")

public void restful(@PathVariable("name") String aaa){

System.out.println(aaa);

}

具体就不演示了,来总结下每种方式的注意点:

普通的直接传参接收的变量的名称必须和传入参数的类型和名称一致

通过httpServletRequet接收参数需要导入servlet-api依赖

通过对象接收参数对象的字段必须和要传入参数的类型和名称一致,弱不一致则不一致的部分参数接收不到

通过restful风格的URl接收参数参数在url上必须使用{}包裹,并且在接收的字段前必须加上@PathVariable注解

若接收字段变量和{}内的内容一致,则@PathVariable的value属性可加可不加,若加value属性(value=””可以直接省略为””),必须和{}内的内容一致

若接收字段变量和{}内的内容不一致,则@PathVariable的value属性必须加,同value=””可以直接省略为””,必须和{}内的内容一致.

另外附上源码:https://github.com/YaoguaiDa/SpringMVC_Demo

由于开发环境变了,所以我在pom build节点下声明的maven使用jdk版本,本次开始代码都上传github,下章抽出一章讲git。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值