SpringMVC(三)——参数传递

一.请求参数是基本的数据类型

JSP页面

从前端获取参数,jsp页面设计一个form表单

<form action="控制器的名称" method="post">
        名字:<input type="text" name="name"/><br/>
        密码:<input type="text" name="password"/><br/>
        <input type="submit" value="提交"/><br/>
 </form>

1.基本数据类型和String接收参数

Controller中方法的参数名称和请求中传递的参数名称相同即可

@Controller
public class DemoController {
    @RequestMapping("/demo")
    public String demo(String name,String password) 
        System.out.println(name+"  "+password);

        //返回值最好写全路径,全路径就是以"/"开头的路径
        //"/"表示项目根目录
        return "/main.jsp";
    }
}

2.对象数据类型接收参数

请求参数名和对象中的属性名对应(走get/set方法)

pojo层

public class People {
	private String name;
	private String password;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "People [name=" + name + ", password=" + password + "]";
	}
	
}

Controller层:

@Controller
public class DemoController {
    @RequestMapping("/demo")
    public String demo(People peo) {     
        System.out.println(peo);
        return "/main.jsp";
    }
}

二. 请求参数的格式是对象.属性格式

JSP页面

		<input type="text" name="peo.name"><br/>
		<input type="password" name="peo.password"><br/>

1.新建一个类( 保证对象名和参数中点前边的名称相同)

public class Demo {
	private People peo;
}

2.使用对象接收参数

public class DemoController {
	@RequestMapping("demo")
	public String demo(Demo demo){
		System.out.println(demo);
		return "/main.jsp";
	}
}

三.请求参数是集合对象类型

JSP页面

	<form action="demo" method="post">
		姓名:
		<input type="text" name="peo[0].name"><br/>
		<input type="text" name="peo[1].name"><br/>
		密码:
		<input type="password" name="peo[0].password"><br/>
		<input type="password" name="peo[1].password"><br/>
	</form>

1.新建一个类

public class Demo {
	private List<People> peo;
}

2.使用集合接收参数

public class DemoController {
	@RequestMapping("demo")
	public String demo(Demo demo){
		System.out.println(demo);
		return "/main.jsp";
	}
}

三.使用@RequestParam注解

(1)请求参数名和方法参数名不对,使用value属性

@RequestMapping("demo")
public String demo(@RequestParam(value="name1") String name,@RequestParam(value="age1")int age)
{
    System.out.println("执行 demo"+" "+name+""+age);
    return "main.jsp";
}

(2)如果接受参数是基本类型,且接受参数类型与null无法进行兼容,此时可以采用包装类型或者采用默认值,使用defaultValue属性,防止没有参数出现500错误

@RequestMapping("page")
public String page(@RequestParam(defaultValue="2")int pageSize,@RequestParam(defaultValue="1") int pageNumber){
  System.out.println(pageSize+" "+pageNumber);
  return "main.jsp";
}

(3)如果强制要求必须有某个参数,使用required属性

@RequestMapping("demo")
public String demo2(@RequestParam(required=true) String name){
  System.out.println("name 是 SQL 的查询条件,必须要传递 name 参数"+name);
  return "main.jsp";
}

(4)请求参数中包含多个同名参数(复选框传递的参数就是多个同名参数)

@RequestMapping("demo")
public String demo5(String name,int age,@RequestParam("fav")List<String> abc){
  System.out.println(name+" "+age+" "+abc);
  return "main.jsp";
}

四.restful传值方式

传统请求参数的格式:

<a href="demo8?name=张三&age=23">跳转</a>

restful格式是:

<a href="demo8/123/abc">跳转</a>

在控制器中:

在@RequestMapping 中一定要和请求格式对应
{名称} 中名称是自定义名称
@PathVariable 获取@RequestMapping 中内容,默认按照方法参数名称去寻找.

 @RequestMapping("demo8/{id1}/{name}")
public String demo8(@PathVariable String  name,@PathVariable("id1") int age){
  System.out.println(name +" "+age);
  return "/main.jsp";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值