SpringMVC初探02

2.前后端参数传递

1.把内容写到方法参数中,springmvc只要有这个内容就会自动注入,只要保证参数名和前端的属性名一致就行
控制器中

package com.mywolf.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.mywolf.pojo.People;
//这个标签指明这是一个控制器
@Controller
public class CustomController {
	@RequestMapping("function")//匹配浏览器请求为/function的请求
	public String function(String username,int age,String password) {
		/**
		 * 这里的username age password属性的属性名要和index.jsp中的表单的name值保持一致
		 * springmvc会将提交的数据对应的赋值给名字相同的属性
		 */
		System.out.println("输出用户信息"+username+" "+age+"  "+password);
		return "/main.jsp";
	}
	
	@RequestMapping("todemo")//说明这个函数是处理浏览器/todemo的请求的
	public String demo(People peo) {//当参数是对象时,springmvc会找在对应的对象类中寻找对应的属性
		System.out.println(peo);
		return "/main.jsp";
	}
}


Index.jsp中的表单

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 将数据提交给com.mywolf.controller.CustomController控制器
下的处理function请求的函数 -->
	<form action="todemo" method="post">
		姓名<input type="text" name="username" /> 
		密码<input type="password"name="password" /> 
		年龄<input type="text" name="age" /> 
		<input type="submit" value="提交" />
	</form>
</body>
</html>

2如果请求的参数名和方法的参数名不一致,可以使用@RequestParam()来匹配变量,赋初值,设置默认值等(看红色下划线部分)

@RequestMapping("function")//匹配浏览器请求为/function的请求
	public String function(@RequestParam(value="username") String name,int age,String password) {
		/**
		 * 这里的username age password属性的属性名要和index.jsp中的表单的name值保持一致
		 * springmvc会将提交的数据对应的赋值给名字相同的属性
		 */
		System.out.println("输出用户信息"+name+" "+age+"  "+password);
		return "/main.jsp";
	}

3.请求参数中包含多个同名的参数,这样情况下参数的获取方式。
3.1复选框传递的参数就是多个同名的参数
前端jsp

	<form action="todemolist" method="post">		
<input type="checkbox" name="hover" value="学习"/>
		<input type="checkbox" name="hover" value="吃饭"/>
		<input type="checkbox" name="hover" value="休息"/>
		<input type="submit" value="提交" />
	</form>

后端controller获得多个同名名为hover的参数

@RequestMapping("todemolist")
	public String demo2(@RequestParam("hover")List<String> list) {
		System.out.println(list);
		return "/main.jsp";
	}

4.请求中参数的格式是 对象.属性 的格式
4.1jsp中的代码

<form action="todemopeo" method="post">	 
		<input type="text" name="peo.username" />
		<input type="text" name="peo.age" />	
<input type="text" name="peo.password" />		
		<input type="submit" value="提交" />
	</form>

4.2新建一个类(原有的people类不动)
要求对象名peo与jsp中的要对应一样

package com.mywolf.pojo;

public class Demo {
 private People peo;
public People getPeo() {
	return peo;
}
public void setPeo(People peo) {
	this.peo = peo;
}
}

4.3控制器

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

5.在请求参数中传递集合对象类型参数
5.1jsp中

<form action="todemopeolist" method="post">	 
		<input type="text" name="peo[0].username" />
		<input type="text" name="peo[0].age" />
		<input type="text" name="peo[0].password" />
	    <input type="text" name="peo[1].username" />
		<input type="text" name="peo[1].age" />
		<input type="text" name="peo[1].password" />		
		<input type="submit" value="提交" />
	</form>

5.2新建类

package com.mywolf.pojo;

import java.util.List;

public class Demo {
 private List<People> peo;//注意这里是集合
public List<People> getPeo() {
	return peo;
}
public void setPeo(List<People> peo) {
	this.peo = peo;
}

@Override
public String toString() {
	return "Demo [peo=" + peo + "]";
}
}

5.3控制器

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

6.使用restful风格传值方式
6.1简化jsp中参数编写风格
6.2在jsp中设定特定的风格

<a href="restful/123/huahua">跳转</a>

6.3在控制器中编写代码
注意:

  1. @RequestMapping()中的格式一定要和请求的格式相对应
  2. @RequestMapping(“restful/{id1}/{name1}”)中{名称}中名称是自定义的
  3. @PathVariable获取@RequestMapping(“restful/{id1}/{name1}”)中的内容,默认按照方法,参数,名称去寻找
@RequestMapping("restful/{id1}/{name1}")
	public String demo4(@PathVariable("name1")String name,@PathVariable("id1")int id) {
		System.out.println(""+name+" "+id);
		return "/main.jsp";
	}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值