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在控制器中编写代码
注意:
- @RequestMapping()中的格式一定要和请求的格式相对应
- @RequestMapping(“restful/{id1}/{name1}”)中{名称}中名称是自定义的
- @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";
}