Spring MVC(十)--通過表單序列化傳遞參數


通過表單序列化傳遞參數就是將表單數據轉化成字符串傳遞到后台,序列化之后參數請求變成這種模式param1=value1&&param2=value2,下面用代碼實現。

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>
    <div class="param">
        <div class="simple public">
        <!--表單序列化傳遞參數 -->
        <div class="public formSerial">
            <p style="text-align: center;">表單序列化傳遞參數</p>
            <form id="formSerialForm">
                <table id="formSerialTable">
                    <tr>
                        <td>id:</td>
                        <td><input type="text" name="id" value=""></td>
                    </tr>
                    <tr>
                        <td>名稱:</td>
                        <td><input type="text" name="name" value=""></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td style="text-align: right;"><input type="button"
                            value="提交" id="setFormSerialParam"></td>
                    </tr>
                </table>
            </form>
        </div>
    </div>

</body>
</html>

 頁面效果圖如下:

2、綁定提交請求事件

$(function() {

    /* 表單序列化方式傳遞數據 */

    $("#setFormSerialParam").click(function() {
        $.ajax({
            url : "./formSerial",
            type : "POST",
            /* 將form數據序列化之后傳給后台,數據將以id=**&&name=** 的方式傳遞 */ data : $("#formSerialForm").serialize(),
            success : function(data) {
                console.info(data.stringList);
            }
        });
    });
});

 上面紅色加粗的部分就是表單的序列化。

3、創建控制器接受參數

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

    /**
     * 獲取表單序列化數據 參數名稱和表單中的name保持一致
     * 
     * @param idList
     * @return
     */
    @RequestMapping(value = "formSerial")
    public ModelAndView getParamByFormSerial(String id, String name) {
        ModelAndView mv = new ModelAndView();
        String[] paramArray = { id, name };
        mv.addObject(paramArray);
        mv.setView(new MappingJackson2JsonView());
        return mv;
    }

}

紅色加粗部分為接受參數的方式,其實這種方式跟第一種簡單參數的接受方式是一樣的,只不過提交表單數據的方式不一樣罷了。上面的控制器中直接將獲取的參數渲染到JSON視圖中。

4、測試

在頁面輸入如下參數:

點擊提交查看請求URL,可以看到參數傳遞成功

查看響應結果:

可以看到返回了一個字符串列表,列表數據就是前端輸入的值,說明控制器獲取成功。

5、總結

至此,Spring MVC中參數傳遞和接受的所有方法都已經總結完畢,需要注意以下幾點:

  • pojo類型、JSON類型和對象數組類型的參數傳遞,都要保證前端的參數名和對應POJO中的屬性名一致;
  • 簡單類型和序列表單方式傳遞時,也要保證前后端的參數名稱一致;
  • 通過JSON和列表方式傳遞時,前端需要指定數據類型為application/json,並且數據要轉化成字符串傳遞;
  • 注解方式比較靈活,不要求前后端命名規則一樣;

實際開發過程中,需要根據情況選擇合適的接受方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM