1. 程式人生 > >Spring MVC(四)--控制器接受pojo參數

Spring MVC(四)--控制器接受pojo參數

mit 代碼 body insert 失敗 表單 情況 mvc 接受

以pojo的方式傳遞參數適用於參數較多的情況,或者是傳遞對象的這種情況,比如要創建一個用戶,用戶有十多個屬性,此時就可以通過用戶的pojo對象來傳參數,需要註意的是前端各字段的名稱和pojo對應的屬性名稱必須一致,否則就會失敗。廢話不說,直接用代碼舉例了,我的場景是這樣的:

從頁面輸入四個字段,控制器通過pojo的方式接受,然後將接受到的數據渲染到新的頁面,即在新的頁面獲取剛才傳過去的值。

1、創建參數頁面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8
"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <% String root = request.getContextPath(); String basePath = request.getScheme()
+ "://" + request.getServerName() + ":" + request.getServerPort() + root + "/"; %> <script type="text/javascript" src="<%=basePath%>jslib/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="<%=basePath%>jslib/jquery.form.js"></script>
<script type="text/javascript" src="<%=basePath%>js/param.js"></script> <link href="<%=basePath%>css/param.css" type="text/css" rel="stylesheet"> <title>Insert title here</title> </head> <body> <!-- 簡單參數傳遞 --> <p style="text-align: center;color: red;font-size: x-large;">Spring MVC控制器接受參數方式測試</p> <div class="param"> <!--pojo參數傳遞 --> <div class="pojo public"> <p style="text-align: center;">pojo參數傳遞</p> <form id="pojoForm" action="<%=basePath%>param/pojoParam" method="post"> <table> <tr> <td>id:</td> <td><input type="text" name="paramId" value=""></td> </tr> <tr> <td>名稱:</td> <td><input type="text" name="paramName" value=""></td> </tr> <tr> <td>描述:</td> <td><input type="text" name="paramDesc" value=""></td> </tr> <tr> <td>時間:</td> <td><input type="text" name="pramTime" value=""></td> </tr> <tr> <td></td> <td style="text-align: right;"><input type="submit" value="提交" id="setPojoParam"></td> </tr> </table> </form> </div> </body> </html>

頁面如下:

技術分享圖片

這裏將這是信息映射為一個pojo對象,所以下一步就是創建pojo對象

2、創建pojo對象

package com.mvc.pojo;

public class Param {
    private Integer paramId;

    private String paramName;

    private String paramDesc;

    private String pramTime;

    public Integer getParamId() {
        return paramId;
    }

    public void setParamId(Integer paramId) {
        this.paramId = paramId;
    }

    public String getParamName() {
        return paramName;
    }

    public void setParamName(String paramName) {
        this.paramName = paramName == null ? null : paramName.trim();
    }

    public String getParamDesc() {
        return paramDesc;
    }

    public void setParamDesc(String paramDesc) {
        this.paramDesc = paramDesc == null ? null : paramDesc.trim();
    }

    public String getPramTime() {
        return pramTime;
    }

    public void setPramTime(String pramTime) {
        this.pramTime = pramTime == null ? null : pramTime.trim();
    }
}

註意??:pojo中的屬性名和前端表單中對應的字段名保持一致,開發過程直接復制,以免出錯;

3、創建控制器

@Controller
@RequestMapping("/param")
public class ParamController {

    /**
     * 獲取pojo參數:pojo的屬性和表單中name必須保持一致
     * 
     * @param param
     * @return
     */
    @RequestMapping(value = "pojoParam", method = RequestMethod.POST)
    public ModelAndView getPojoParam(Param param) {
        ModelAndView mv = new ModelAndView();
        System.out.println(param.getParamName());
        System.out.println(param.getParamDesc());
        System.out.println(param.getPramTime());
        mv.addObject("param", param);
        mv.setViewName("pojoParam");
        return mv;
    }
}

上面的代碼中,控制器接受參數的時候,直接使用一個pojo對象,這樣就能通過get方法獲取各個屬性的值了。接受成功之後控制器會把數據渲染到新的視圖pojoParam中,所以下一步就是創建pojoParam這個視圖。

4、創建響應視圖pojoParam.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Pojo Param</title>
</head>
<body>

    <h2>
        獲取到的參數ID:<label>${param.paramId }</label> <br /> 獲取到的參數名稱:<label>${param.paramName }</label><br />
        獲取到的參數描述:<label>${param.paramDesc }</label><br /> 獲取到的參數時間:<label>${param.pramTime }</label><br />
    </h2>

</body>
</html>

在這個視圖中顯示數據,即將數據渲染到視圖。至此代碼全部完成,下面進行測試,首先在頁面輸入以下數據:

技術分享圖片

然後點擊提交按鈕,結果如下:

技術分享圖片

可以看到接受成功,渲染也成功,URL地址也跟著發生了變化。

5、總結

這種方式和上一篇中提到的方式,都有一個約定,就是前端的參數名和後端的參數名或 pojo對象中的屬性名稱必須保持一致,但是有時候前後端的命名規則不一致,比如前端使用下劃線方式命名,如user_name,而後端時候駝峰式命名,如userName,這樣就不能使用這種方式傳遞了,而是通過註解,下一篇文章中介紹。

Spring MVC(四)--控制器接受pojo參數