/**\ * SpringMVC自動注入 * @author Administrator * */ @Controller public class DemoController { /** * SpringMVC很厲害,有自動注入的功能,當form表單中值的name與實體類的 * 屬性名一樣時,會自動注入實體類,如果不一樣,會設為實體類里的屬性設 * 置一個null值,如果實體類里有基本數據類型,不能設置為null,則報錯400 * @param product */ @RequestMapping("demo1") public void demo1(Product product) { System.out.println(product); } /** * 如果前端傳過來的值的名稱與參數的名稱相同,SpringMVC會自動注入 * 如果名稱不相同,可以通過注解來解決 * RequestParam("value") value 為前端傳過來值的名稱 * @param name * @param price */ @RequestMapping("demo2") public void demo2(@RequestParam("name") String name1,@RequestParam("price")int price1) { System.out.println(name1+" "+price1); } /** * 加上required后代表該屬性一定要被賦值,否則報錯 * @param name * @param price */ @RequestMapping("demo3") public void demo3(@RequestParam(required=true)String name,@RequestParam()int price) { System.out.println(name+" "+price); } }
/** * 當瀏覽器傳過來有多個同名參數時,用一個集合來接收,並且使用@RequestParam */ @RequestMapping("demo4") public String demo4(@RequestParam("hover")List<String> list) { System.out.println(list); //跳轉到login.jsp return "/login.jsp"; }
當瀏覽器傳的值要賦給類里面的類屬性時:
<a href="demo5?teacher.name=teacherName">show!!</a>
控制器方法:
/** * 瀏覽器傳來的值要賦給一個類里的對象屬性時 */ @RequestMapping("demo5") public String demo5(Student studnet) { System.out.println(studnet); return "/login.jsp"; }
Student class:
public class Student { private String name; private Teacher teacher;
當瀏覽器傳的值要賦給類里面的集合時:
表單:
<form action="demo6" method="get"> <input type="text" name="teacherList[0].name"> <input type="text" name="teacherList[1].name"> <input type="submit" value="add" /> </form>
控制器類:
/** * 瀏覽器傳來的值要賦給一個類里的對象屬性時 */ @RequestMapping("demo5") public String demo5(Student studnet) { System.out.println(studnet); return "/login.jsp"; } @RequestMapping("demo6") public String demo6(Student student) { System.out.println(student); return "/login.jsp"; }
實體類Student:
public class Student { private List<Teacher> teacherList;
新新技術 使用restful傳值:
<a href="demo7/requestName/999">restful</a>
/** * restful傳值方式,比傳統的書寫更方便,新項目都會采用 * 使用{}來取值,{}里的名字自定義 * 在參數里使用@PathVariable注解 */ @RequestMapping("demo7/{name}/{level}") public String demo7(@PathVariable("name")String name,@PathVariable("level")int level) { System.out.println(name+" "+level); return "/login.jsp"; }