传值的基本四种方法
1.地址栏传值
接受地址栏传过来值,分别为asd和qwe,也就是路径传值,PathVariable是搭配着RequestMapping使用的,括号里面的值一定要相同。然后后面的类型拿到传过来的值。
<a href="handler/welcome2/asd/qwe">first springmvc2 </a><br>
@RequestMapping(value="welcome2/{name1}/{name2}")
//这里的value=name1 是和下面的 name1 必须要相同的。 上面 也是 必须要有的。
public String welcome2(@PathVariable("name1") String name,@PathVariable("name2") String name3) {
//String是一个 对象 所以 就 会 发生改变
System.out.println("输出的name值");
System.out.println(name);
System.out.println("输出的map值");
System.out.println(map);
//{stu=org.awen.entity.Student@39f63595, name=1111}
return "success3";
}
2.表单传值
接受表单的值,差不多也是和上面是一样的。
<form action="handler/welcome3" method="get">
name:<input name="uname" type="text"><br>
id:<input name="id" type="text"><br>
age:<input name="uage" type="text"><br>
<input type="submit" value="查">
</form>
@RequestMapping(value="welcome3")
//设置 其中的 一些 属性
public String welcome3(@RequestParam("id") String id ,@RequestParam("uname") String name ,@RequestParam(value="uage",required=false,defaultValue="23") Integer age) {
System.out.println(id);
System.out.println(name);
System.out.println(age);
return "success3";
}
3.用servlet中原生态的方法
也可以使用servlet的方法,来获取表单传过来的值。
@RequestMapping(value="welcome4")
public String welcome4(HttpServletRequest request) {
System.out.println(request.getParameter("id"));
return "success3";
}
5.封装类的方法(框架的优势)
有时候需要把从表单中获取的值,封装到一个类里面的时候。这个时候使用SpringMVC可以省略很多代码。
例如学生信息:
表单
<form action="handler/testObjetcProperties" method="post">
name:<input name="name" type="text"><br>
id:<input name="id" type="text"><br>
homeaddress:<input name="address.homeaddress" type="text"><br>
schooladdress:<input name="address.schooladdress" type="text"><br>
<input type="submit" value="查">
</form>
学生类:需要注意的是 学生类里面的 属性 必须要和 index.jsp里面form里的name里面的属性保持一致。
package org.awen.entity;
import java.util.Date;
import org.hibernate.validator.Past;
import org.springframework.format.annotation.DateTimeFormat;
public class Student {
private int id;
private String name;
private Address address;
public Student(int id,String name) {
this.id=id;
this.name=name;
}
public Student() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
测试实体类java代码:
//测试实体类
@RequestMapping(value="testObjetcProperties")
public String testObjetcProperties(Student student) {
System.out.println(student.getId()+"--"+student.getName()+"--"+student.getAddress().getHomeaddress()+"--"+student.getAddress().getSchooladdress());
return "success3";
}