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的強大了!

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