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

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

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

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

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

1.@RequestParam

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

RequestParam可以接受簡(jiǎn)單類(lèi)型的屬性,也可以接受對(duì)象類(lèi)型。 

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

2.@RequestBody

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

  • GET請(qǐng)求中,因?yàn)闆](méi)有HttpEntity,所以@RequestBody并不適用。
  • POST請(qǐng)求中,通過(guò)HttpEntity傳遞的參數(shù),必須要在請(qǐng)求頭中聲明數(shù)據(jù)的類(lèi)型Content-Type,SpringMVC通過(guò)使用HandlerAdapter 配置的HttpMessageConverters來(lái)解析HttpEntity中的數(shù)據(jù),然后綁定到相應(yīng)的bean上。 

3.@ModelAttribute

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

用于方法上時(shí): 通常用來(lái)在處理@RequestMapping之前,為請(qǐng)求綁定需要從后臺(tái)查詢的model;

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

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

二.一些常用的傳參類(lèi)型 

1.字符串類(lèi)型參數(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層

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

2.對(duì)象類(lèi)型

/**
		 * 傳遞對(duì)象參數(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){
					
				},
			})
		},
    /**
     * 接收對(duì)象參數(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ù)雜對(duì)象類(lèi)型

/**
		 * 傳遞復(fù)雜對(duì)象參數(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),//重點(diǎn)
	                    contentType:"application/json"     //指定類(lèi)型
	                })
		},

School類(lèi)

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ù)雜對(duì)象參數(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對(duì)象集合

? ? /**
? ? ?* 接收對(duì)象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());
? ? ? ? }
?
? ? }

/**
?? ??? ? * 傳遞對(duì)象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ù)類(lèi)型在補(bǔ)充。

總結(jié)

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

相關(guān)文章

最新評(píng)論