上一篇咱們學習了簡單的參數接收方式,以及對編碼的統一處理。今天咱們來接收對象參數。html
1、接收對象參數java
jsp頁面:app
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <form action="${pageContext.request.contextPath }/user/login.do"> 姓名:<input name="name" type="text" /> 年齡:<input name="age" type="text" /> <input type="submit" value="註冊" /> </form> </body> </html>
Entity:jsp
package cn.wechatbao.entity; public class Student { private String name; private int age; //省略getter、setter }
Controller:學習
@RequestMapping("/login.do") public ModelAndView login(Student student) throws Exception { System.out.println("name="+student.getName()); System.out.println("age="+student.getAge()); ModelAndView mv = new ModelAndView(); mv.addObject("student", student); mv.setViewName("/WEB-INF/jsp/success.jsp"); return mv; }
成功的提示頁面(success.jsp):編碼
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>SpringMVC1</title> </head> <body> ${student } </body> </html>
注意:總體接收須要表單的name屬性值與實體的屬性名一致。好比input的name爲age,那麼與之對應的實體類中,必須有一個age屬性,而且該age屬性須要有getter、setter方法。spa
2、域屬性參數接收code
域屬性參數就是在A類中有一個爲B類的屬性。這時,咱們對剛纔的代碼進行修改。新增School類。以下:orm
public class School { private String sname; private String address; //省略getter、setter }
修改Student類,以下:htm
public class Student { private String name; private int age; private School school; //省略getter、setter }
修改index.jsp頁面的Form表單,以下:
<form action="${pageContext.request.contextPath }/user/login.do"> 姓名:<input name="name" type="text" /> 年齡:<input name="age" type="text" /> 學校名稱:<input name="school.sname" type="text" /> 學校地址:<input name="school.address" type="text" /> <input type="submit" value="註冊" /> </form>
3、接收路徑變量
路徑變量不做過多的介紹,只要瞭解就OK了。訪問路徑以下:
http://localhost:8080/SpringMVC/user/zhangsan/24/register.do
Controller:
@RequestMapping("/{name}/{age}/register.do") public ModelAndView register(@PathVariable String name,@PathVariable int age) throws Exception { System.out.println("name="+name); System.out.println("age="+age); ModelAndView mv = new ModelAndView(); mv.addObject("name", name); mv.addObject("age", age); mv.setViewName("/WEB-INF/jsp/success.jsp"); return mv; }
注意:只是使用了一個@PathVariable的註解,該註解也能夠指定name,如@PathVariable("pname")之類的。