程序开发过程中,前台向后台发送请求及传递参数,目前个人总结为三种方式,具体如下:
一、表单提交:
表单提交可分为get请求跟post请求,一般只做查询时用get请求,还做其他操作时(如:更新等)用post请求,实例如下:
前台表单:
<form id="test" action="/product_notify/save" method="get">
<input type="text" id="quantity" name="quantity" value="1" maxlength="4"/>
...
</form>
or
<form id="test" action="${base}/product_notify/save" method="post">
<input type="text" id="quantity" name="quantity" value="1" maxlength="4"/>
...
</form>
action:请求地址(后台controller映射路径)后台controller接收:
@GetMapping("/product_notify/save")//若是get请求则用@GetMapping,若是post请求则用@PostMapping注解!
public String checkouts(Integer quantity//接收前台表单input标签name为quantity的值){}
二、Ajax请求:
前台请求:
$.ajax({
url: "/product_notify/save",//请求路径
type: "POST",//请求方式
data: {skuId: skuId, email: $productNotifyEmail.val()},//请求参数
dataType: "json",
beforeSend: function() {
$addProductNotify.prop("disabled", true);
},
success: function(data) {
$addProductNotify.val("${message("shop.product.addProductNotify")}");
$productNotify.hide();
},
complete: function() {
$addProductNotify.prop("disabled", false);
}
});后台接收:同表单提交!
三、普通请求:
前台请求:
var cartItemIds = new Array();
var quantitys = new Array();
var j = 0;
for (var i = 0, len = tr.length; i < len; i++) {
if (tr[i].getElementsByTagName('input')[0].checked) {
cartItemIds[j] = tr[i].getElementsByTagName('input')[0].value;
quantitys[j] = tr[i].getElementsByTagName('input')[2].value;
j++;
}
}location.href="${base}/order/checkouts?cartItemIds="+cartItemIds+"&quantitys="+quantitys;
可直接传递数组参数!
后台controller接收:
@GetMapping("/checkouts")//该处要使用GetMapping而不能使用PostMapping,普通请求是get请求方式!
public String checkouts( String[] cartItemIds,String[] quantitys){}
以上都可以用request.getParameter("参数key");获取指定参数!