SSM--SpringMVC获取处理前台表单数据

大家都知道怎么用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的强大了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章