大家都知道怎么用Servlet来接受处理前台表单数据,即通过request来获取数据,我们也应该清楚在SpringMVC是取代了Web层的,也就是取代了Servlet的那么在SpringMVC如何接受处理呢?
1.Result风格传值:
我们熟悉的链接传参应该是这个样子:
<a href="SpringMVCHandler/welcome2?name=zs">参数传递</a>
但在jsp中,我们有这样一个超链接:
<a href="SpringMVCHandler/welcome2/zs">参数传递</a>
下面我们来看后台怎么处理的:
@RequestMapping(value="welcome2/{name}")
public String welcome3(@PathVariable("name") String name) {
System.out.println(name);
return "success" ;
}
没错就是通过两个注解完成了Servlet中的 String name = request.getAttribute("name") 工作。这就是一种方式
2. 我也不知道叫什么名字2333.....:
在前台中我们有一个表单:
<form action="SpringMVCHandler/welcome3" method="post">
姓名:<input type="text" name="name" >
<input type="submit" value="test">
</form>
后台处理:
@RequestMapping(value="welcome3")//映射
public String welcome2(@RequestParam("name") String name,@RequestParam(value="uage",required=false,defaultValue="18") Integer age) {
/*@RequestParam(value="uage",required=false,defaultValue="18") Integer age
required=false 代表此参数非必须 就是说前段传不传都行 如果不穿
就按设置的默认值defaultValue="18"来设置*/
System.out.println(name);
System.out.println(age);
return "success" ;
}
没错也是通过注解来完成String name = request.getAttribute("name")的工作
到这里你可能还是感觉不到SpringMVC注解的强大,因为代码也没有省太多吗,那么看下面这个:
我们创建了两个实体类Student Address,其中address是student的一个属性:
package cn.skh.entity;
public class Student {
private int id;
private String name;
private Address add;
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 getAdd() {
return add;
}
public void setAdd(Address add) {
this.add = add;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", add=" + add + "]";
}
}
package cn.skh.entity;
public class Address {
private String hadd;
private String sadd;
public String getHadd() {
return hadd;
}
public void setHadd(String hadd) {
this.hadd = hadd;
}
public String getSadd() {
return sadd;
}
public void setSadd(String sadd) {
this.sadd = sadd;
}
@Override
public String toString() {
return "Address [hadd=" + hadd + ", sadd=" + sadd + "]";
}
}
我们前台有一个表单:
<form action="SpringMVCHandler/testObject">
id<input type="text" name="id"><br>
name<input type="text" name="name"><br>
hadd<input type="text" name="add.hadd"><br>
sadd<input type="text" name="add.sadd"><br>
<input type="submit" value="提交">
</form>
如果通过servlet来封装这些表单数据到对应的对象里面,那工作量可就大了,先通过request获得值,然后创建一个新的实例再通过属性的set方法或构造方法赋值,那可就太麻烦了。
我们先来看Servlet需要怎么处理:
String name = request.getParameter("name");
int age= Integer.parseInt(request.getParameter("age")s) ;
String haddrss = request.getParameter("homeaddress");
String saddress = request.getParameter("schooladdress");
Address address = new Address();
address.setHomeAddress(haddrss);
address.setSchoolAddress(saddress);
Student student = new Student();
student.setName(name);
student.setAddress(address);
那再让我们看SpringMVC怎么处理的:
@RequestMapping(value="testObject")
public String testObject(Student stu) {
System.out.println(stu);
return "success" ;
}
}
我们看打印结果:Student [id=1, name=das, add=Address [hadd=das, sadd=das]]
怎么样,是不是体会到了SpringMVC的强大了!