spring mvc前台向后台传递表单数据的几种方式及后台数据的获取

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/whitesun123/article/details/86577694

一、一般前台向后台提交数据都会用form表单提交

    表单提交信息后最好的获取方式就是映射为实体

<form id="testform" method="post">
		<input type="text" name="name" />	
		<input type="text" name="age" />
		<input type="text" name="hobby" />
		<input id="yxrq" name="birthday" class="easyui-datebox" data-options="editable:false,width:200" />
</form>

private String name;
private Integer age;
private String hobby;
@DateTimeFormat(pattern = "yyyy-MM-dd")  
private Date birthday;


public Map<String, Object> test1(Test test1) {
		
		Map<String,Object> map = new HashMap<String, Object>();
		System.out.println(test1);
		map.put("msg", "success");
		return map;
}

成功传过来

注意,当前台输入框传过来的时间格式的数据(字符串),直接映射为Date会失败报400错误,需要处理一下才可以映射成功

比较简单的方法是上图在实体类前面加一个注解,将字符串格式化为时间格式。也可以用其他方法,比如全局配置详见

https://blog.csdn.net/chenleixing/article/details/45156617

表单提交的时候  1、顺序不一样可以映射过去。2、少属性可以映射过去。3、多属性可以映射过去

@RequestMapping("/test1")
	public Map<String, Object> test1(Test test1,String password) {		
		Map<String,Object> map = new HashMap<String, Object>();
		System.out.println(test1);
		System.out.println(password);
		map.put("Msg", "success");
		return map;
	}

<form id="testform" method="post">
		<input type="text" name="name" />	
		<input type="text" name="age" />
		<input type="text" name="password" />
		<input id="yxrq" name="birthday" class="easyui-datebox" data-options="editable:false,width:200" />
</form>

当传递的有文件数据的时候,需要表单加上  enctype="multipart/form-data"  后台参数为    MultipartFile pic 

二、可以把form表单的数据转化成json通过ajax提交到后台

    json 传到后台的发方法有几种 

1.前端传来的是json数据不多时:{key : value},可以直接用@RequestParam来获取值

$.ajax({		 
        type:'POST',
        data:{jcxx:"111"},		 
        /* contentType :'application/json', */ 
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
 
   });

public String test2(String jcxx) {可以得到 }

当然你可以把111换成json字符串同样可以得到,再j1和 j2 进行json解析,或者单独得到某一个属性,fastjson等工具都可以很轻松得到数据。


	$.ajax({		 
        type:'POST',
        data:{"j1":JSON.stringify(jsonobject),"j2":JSON.stringify(jsonobject)},		 
       /*  contentType :'application/json', */
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
   });	

public Map<String,Object> test2(String j1 ,String j2) {	

 

关于 contentType:“application/json“之后,向后台发送数据的格式必须为json字符串

用  JSON.stringify(data)将json对象转化为json字符串

不添加 contentType:“application/json“的时候可以向后台发送json对象形式

2.、以实体类方式接收

$.ajax({	//1	 
        type:'POST',
        data:jsonobject,		 
        /* contentType :'application/json', */ 
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
 
   });	 
@RequestMapping("/test2")
	public String test2(Test test) {		
		Map<String,Object> map = new HashMap<String, Object>();
		System.out.println(test);		
		return "ok";
	}	



$.ajax({		//2 
        type:'POST',
        data:JSON.stringify(jsonobject),		 
        contentType :'application/json',
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
   });	 
@RequestMapping("/test2")
	public String test2(@RequestBody Test test) {	
		Map<String,Object> map = new HashMap<String, Object>();
		System.out.println(test);	
		return "ok";
	}	

json 对象的话,可以自己将表单数据处理成json数据

var data = $("#testform").serializeArray();//方法一,自己转换
var jsonobject = {};
	for(var i = 0;i < data.length;i++){
		jsonobject[data[i].name] = data[i].value; 
}

var jsonobject = $('#testform').serializeJSON()//方法二,使用别人写好的方法
需要引入
<script type="text/javascript" src="jquery-easyui-1.6.9/jquery.serializejson.js"></script>

项目地址:https://github.com/marioizquierdo/jquery.serializeJSON

3.map接收

$.ajax({		 
        type:'POST',
        data:JSON.stringify(jsonobject),		 
        contentType :'application/json',
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
   });	 

@RequestMapping("/test2")
	public Map<String,Object> test2(@RequestBody Map<String, Object> map) {	
		Map<String,Object> map1 = new HashMap<String, Object>();
		System.out.println(map);
		map.put("Msg", "ok");
		return map1;
	}	
		

@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。

 contentType :'application/json',需要data是字符串,而不是对象

4.以List接收

json数组转化传到后台

部分参考自:https://blog.csdn.net/weixin_39220472/article/details/80725574

展开阅读全文

获取后台数据,前台显示出!

09-09

就是有个表单,提交后后台应该产生一个随机的数,写入数据库,然后会弹出另外一个页面...(另外一个页面不管)!!rn在想可以用什么办法在提交后,就在X1.ASPX 提交的表单当前页弹出一个层,显示出后台是写入的什么字段到数据库!!rnrnCreateOkxrOrderIdrnrnOkxrOrderId 这个就是数据库的字段...OkxrOrderIdrnrnX1.CSrn[code=csharp]namespace PayCenter.PayMentrnrn public partial class _70bank : System.Web.UI.Pagern rn protected string bili;rn protected string gamebz;rn protected string mdname;rn protected string zeng;rn protected string _js = string.Empty;rnrn protected void Page_Load(object sender, EventArgs e)rn rn if (!base.IsPostBack)rn rn if (SafeCookie.GetCookie("sid") != null)rn rn MirDivisionInfo mDbyid = MirDivisionFactory.GetMDbyid(int.Parse(SafeCookie.GetCookie("sid")));rn bili = mDbyid.MD_Bili.ToString();rn if (mDbyid.MD_BZ == "")rn rn gamebz = "元宝";rn rn elsern rn gamebz = mDbyid.MD_BZ;rn rn mdname = mDbyid.MD_Name;rn if (mDbyid.MD_onPay == 1)rn rnrn foreach (string str in mDbyid.MD_NewPay.Split(new char[] '|' ))rn rn if (str.Split(',')[0] == "102")rn rn string str2 = _js;rn _js = str2 + "$(\"paystring\").innerHTML=\" 不足50 满50元 满100元 满200元 满300元 满500元 满1000元 满2000元 1:" + str.Split(',')[1].ToString() + "% 1:" + str.Split(',')[2].ToString() + "% 1:" + str.Split(',')[3].ToString() + "% 1:" + str.Split(',')[4].ToString() + "% 1:" + str.Split(',')[5].ToString() + "% 1:" + str.Split(',')[6].ToString() + "% 1:" + str.Split(',')[7].ToString() + "% 1:" + str.Split(',')[8].ToString() + "%\";";rn rnrn rnrn rn elsern rn pay1.Style.Add("display", "none");rn foreach (string str in mDbyid.MD_Pay.Split(new char[] '|' ))rn rn int result = 0;rn int.TryParse(str.Split(new char[] ',' )[0], out result);rn if (result == 102)rn rn zeng = str.Split(new char[] ',' )[2].ToString();rn rn rn rn rn elsern rn base.Response.Write(" ");rn rn rnrn rnrn protected void paybtnok_Click(object sender, EventArgs e)rn rn decimal num = 0M;rn tryrn rn num = decimal.Parse(paymoney.Text.Trim());rn if (num < 0M)rn rn errLabel.Text = "充值金额必须大于等于0";rn return;rn rn rn catchrn rn num = 100M;rn rn int num2 = 102;rn string str = txtusername.Text.Trim();rn if (num2 == 102)rn rn string url = string.Empty;rn PayMentFactory.PayType type = (PayMentFactory.PayType)num2;rn ulong num3 = PayMentFactory.CreateOkxrOrderId(type);rn string contactor = txtQQ.Text.Trim();rn if (PayMentFactory.InitOrder(int.Parse(SafeCookie.GetCookie("sid")), str, int.Parse(SafeCookie.GetCookie("gmid")), type, num3, "0", num,contactor))rn rn url = new Cared70().PayBank(num3.ToString(), num.ToString(), BankBox.Value);rn base.Response.Redirect(url);rn rn elsern rn errLabel.Text = "充值失败";rn rn rn rn rn[/code]rnrnX1.ASPXrn[code=html]<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="x1.aspx.cs" Inherits="x1" %>rnrnrnrn rn rnrnrnrn rn rn rn rn rn rn rn rn <%=mdname %>rn rn rn rnrn rn 当前您选择<%=mdname %> rn兑换比列:<%=bili %><%=gamebz %> rnrn rn rnrn 网上银行充值rn rn rn rn rn rn 输入账号: * 请认真核对.rn 确定账号: * 请认真核对.rn 手机/QQ: * 请认真核对.rn 金币:rn rn rn rnrn rn rn rn rn rnrnrnrn rn rnrnrn rnrnrnrnrnrnrn rnrnrnrn[/code] 论坛

没有更多推荐了,返回首页