欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js傳各種類型參數(shù)到Controller層的整理方式

 更新時間:2023年02月27日 10:17:16   作者:無人與我把酒歡  
這篇文章主要介紹了js傳各種類型參數(shù)到Controller層的整理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

做web開發(fā)的一直遇到一個問題怎么發(fā)請求帶各種類型的參數(shù)到Controller層,每次都要測試好久才能請求成功。今天趁有空查資料總結(jié)鞏固一下。

一 .@RequestBody和@RequestParam區(qū)別

1.@RequestParam

用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內(nèi)容。(Http協(xié)議中,如果不指定Content-Type,則默認(rèn)傳遞的參數(shù)就是application/x-www-form-urlencoded類型)

RequestParam可以接受簡單類型的屬性,也可以接受對象類型。 

實質(zhì)是將Request.getParameter() 中的Key-Value參數(shù)Map利用Spring的轉(zhuǎn)化機制ConversionService配置,轉(zhuǎn)化成參數(shù)接收對象或字段。

2.@RequestBody

處理HttpEntity傳遞過來的數(shù)據(jù),一般用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數(shù)據(jù)。

  • GET請求中,因為沒有HttpEntity,所以@RequestBody并不適用。
  • POST請求中,通過HttpEntity傳遞的參數(shù),必須要在請求頭中聲明數(shù)據(jù)的類型Content-Type,SpringMVC通過使用HandlerAdapter 配置的HttpMessageConverters來解析HttpEntity中的數(shù)據(jù),然后綁定到相應(yīng)的bean上。 

3.@ModelAttribute

該注解有兩個用法,一個是用于方法上,一個是用于參數(shù)上;

用于方法上時: 通常用來在處理@RequestMapping之前,為請求綁定需要從后臺查詢的model;

用于參數(shù)上時:用來通過名稱對應(yīng),把相應(yīng)名稱的值綁定到注解的參數(shù)bean上;要綁定的值來源于:

  • A) @SessionAttributes 啟用的attribute 對象上;
  • B) @ModelAttribute 用于方法上時指定的model對象;
  • C) 上述兩種情況都沒有時,new一個需要綁定的bean對象,然后把request中按名稱對應(yīng)的方式把值綁定到bean中。

二.一些常用的傳參類型 

1.字符串類型參數(shù)

/**
 * 傳遞字符串參數(shù)
 */
getStringParam:function(){
   var param={"stringParams":hidden_input_value};
   //var param={};兩種方式都行
   // param.stringParams=hidden_input_value;
   $.ajax({
      url:basePath+"/ParamFormatController/getStringParam.shtml",
      data:param,
      type : 'POST',
      dataType : 'json',
      success:function(data){
         
      },
      
   })
},

Controller層

  /**
     * 接收字符串類型參數(shù)
     * 
     * @param userName
     * @return
     */
    @RequestMapping("/getStringParam")
    @ResponseBody
    public String getStringParam(String userName) {
        String password = userService.getUserpassword(userName);
        return password;
    }

2.對象類型

/**
		 * 傳遞對象參數(shù)
		 */
		setObjectParam:function(){
			var objectParams={};
			objectParams.name="張三";
			objectParams.age="19";
			objectParams.sex="男";
			$.ajax({
				url:basePath+"/ParamFormatController/getObjectParam.shtml",
				data:objectParams,
				type : 'POST',
				dataType : 'json',
				success:function(data){
					
				},
			})
		},
    /**
     * 接收對象參數(shù)
     * 
     * @param
     * @return
     */
    @RequestMapping("/getObjectParam")
    @ResponseBody
    public void getObjectParam(Student objectParams) {
        System.out.println("姓名:" + objectParams.getName());
        System.out.println("性別:" + objectParams.getSex());
        System.out.println("年齡:" + objectParams.getAge());
 
    }

3.復(fù)雜對象類型

/**
		 * 傳遞復(fù)雜對象參數(shù)(包含id,username,String[],List<Person>)
		 */
		setHardObjectParam:function(){
			
			 var objectParams = {
	                    schoolName:"鵬峰中學(xué)",
	                    data:new Date(),
	                    teacherNames:["張老師","李老師","王老師"],
	                    students:[
	                        {name:"小明",sex:"男",age:"19"},
	                        {name:"小紅",sex:"男",age:"19"},
	                    ]
	                };
	                $.ajax({
	                    type: "POST",
	                    url:basePath+"/ParamFormatController/getHardObjectParam.shtml",
	                    data: JSON.stringify(objectParams),//重點
	                    contentType:"application/json"     //指定類型
	                })
		},

School類

public class School {
? ? private String[] teacherNames;
? ? private String schoolName;
? ? private Date data;
? ? private List<Student> students;
?
?
?
? ? public String[] getTeacherNames() {
? ? ? ? return teacherNames;
? ? }
?
? ? public void setTeacherNames(String[] teacherNames) {
? ? ? ? this.teacherNames = teacherNames;
? ? }
?
? ? public String getSchoolName() {
? ? ? ? return schoolName;
? ? }
?
? ? public void setSchoolName(String schoolName) {
? ? ? ? this.schoolName = schoolName;
? ? }
?
? ? public Date getData() {
? ? ? ? return data;
? ? }
?
? ? public void setData(Date data) {
? ? ? ? this.data = data;
? ? }
?
? ? public List<Student> getStudents() {
? ? ? ? return students;
? ? }
?
? ? public void setStudents(List<Student> students) {
? ? ? ? this.students = students;
? ? }
}

Controoler

? /**
? ? ?* 接收復(fù)雜對象參數(shù)(包含id,username,String[],List<Person>)
? ? ?*?
? ? ?* @param
? ? ?* @return
? ? ?*/
? ? @RequestMapping("/getHardObjectParam")
? ? @ResponseBody
? ? public void getHardObjectParam(@RequestBody School objectParams) {
? ? ? ? System.out.println("學(xué)校名:" + objectParams.getSchoolName());
?
? ? }

4.數(shù)組與字符串

/**
?? ??? ? * 傳遞數(shù)組與字符串
?? ??? ? */
?? ??? ?getArrayAndStringParam:function(){
?? ??? ??? ?var pointCodes= new Array(); //定義一數(shù)組 ?
?? ??? ??? ?pointCodes.push("1");
?? ??? ??? ?pointCodes.push("2");
?? ??? ??? ?pointCodes.push("3");
?? ??? ??? ?pointCodes.push("4");
?? ? ? ? ? ?$.ajax({ ?
?? ? ? ? ? ? ? ?url:basePath+"/ParamFormatController/getArrayAndStringParam.shtml", ?
?? ? ? ? ? ? ? ?type:"POST", ?
?? ? ? ? ? ? ? ?data:{"names":pointCodes,"id":'6'}, ?
?? ? ? ? ? ? ? ?dataType:"json", ?
?? ? ? ? ? ? ? ?success:function(res){ ? ??
?? ? ? ? ? ? ? ?}
?? ? ? ? ? ? ? ?});?
?? ??? ??? ?
?? ??? ?}, ? ? ? ? ? ? ?


? ? /**
? ? ?* 接收數(shù)組與字符串
? ? ?*?
? ? ?* @param
? ? ?* @return
? ? ?*/
? ? @RequestMapping("/getArrayAndStringParam")
? ? @ResponseBody
? ? public void getArrayAndStringParam(@RequestParam(value = "names[]") String[] names, String id) {
? ? ? ? for (int i = 0; i < names.length; i++) {
? ? ? ? ? ? System.out.println(names[i]);
? ? ? ? }
?
? ? }

5.List字符串集合

?? ??? ?/**
?? ??? ? * 傳遞字符串List參數(shù)
?? ??? ? */
?? ??? ?getListByStringParam:function(){
?? ??? ??? ??? ?var orderNosList = new Array();?
?? ??? ??? ??? ?orderNosList.push("List1");
?? ??? ??? ??? ?orderNosList.push("List2");
?? ??? ??? ??? ?orderNosList.push("List3");
?? ??? ??? ??? ?orderNosList.push("List4");
?? ??? ??? ??? ?$.ajax({
?? ??? ??? ??? ??? ?url:basePath+"/ParamFormatController/getListByStringParam.shtml",
?? ??? ??? ??? ??? ?data:{"StringList":orderNosList},
?? ??? ??? ??? ??? ?type : 'POST',
?? ??? ??? ??? ??? ?dataType : 'json',
?? ??? ??? ??? ??? ?success:function(data){
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?},
?? ??? ??? ??? ?})
?? ??? ??? ?
?? ??? ?},

? ? /**
? ? ?* 接收字符串List集合
? ? ?*?
? ? ?* @param
? ? ?* @return
? ? ?*/
? ? @RequestMapping("/getListByStringParam")
? ? @ResponseBody
? ? public void getListByStringParam(@RequestParam("StringList[]") List<String> list) {
? ? ? ? for (int i = 0; i < list.size(); i++) {
? ? ? ? ? ? System.out.println(list.get(i));
? ? ? ? }
?
? ? }

6.List對象集合

? ? /**
? ? ?* 接收對象List集合
? ? ?*?
? ? ?* @param
? ? ?* @return
? ? ?*/
? ? @RequestMapping(value = "/getListByObjectParam")
? ? @ResponseBody
? ? public void getListByObjectParam(@RequestBody List<Student> students) {
? ? ? ? for (int i = 0; i < students.size(); i++) {
? ? ? ? ? ? Student s = students.get(i);
? ? ? ? ? ? System.out.println(s.getName());
? ? ? ? }
?
? ? }

/**
?? ??? ? * 傳遞對象List參數(shù)
?? ??? ? */
?? ??? ?getListByObjectParam:function(){
?? ??? ??? ??? ? var param=[];
?? ??? ??? ??? ? var data1={"name":"張三","age":"21","sex":"2"};
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?var data2={"name":"李四","age":"24","sex":"2"};
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?param.push(data1);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?param.push(data2);
?? ??? ??? ??? ?$.ajax({
?? ??? ??? ??? ??? ?url:basePath+"/ParamFormatController/getListByObjectParam.shtml",
?? ??? ??? ??? ??? ?data:JSON.stringify(param),
?? ??? ??? ??? ??? ?type : 'POST',
?? ??? ??? ??? ??? ?contentType: "application/json",
?? ??? ??? ??? ??? ?success:function(data){
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?},
?? ??? ??? ??? ?})
?? ??? ??? ?
?? ??? ?},

后續(xù)類型在補充。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論