东莞网站建设营销网站,海尔电子商务网站建设预算,中国建筑网最新招聘,wordpress这么设置导航Spring MVC的Controller接收请求参数的方式有多种#xff0c;本节主要介绍Spring MVC下的HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON参数传递方式#xff0c;同时解决POST请求中文乱码问题。
1. HttpServletRequest参数传递
Controller
RequestM…Spring MVC的Controller接收请求参数的方式有多种本节主要介绍Spring MVC下的HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON参数传递方式同时解决POST请求中文乱码问题。
1. HttpServletRequest参数传递
Controller
RequestMapping(/param)
public class ParamController {/*** 通过HttpServletRequest接收参数*/RequestMapping(/servlet)public void servlet(HttpServletRequest request, HttpServletResponse response) throws IOException {String name request.getParameter(name);System.out.println(name name);PrintWriter writer response.getWriter();writer.print(hello name);writer.flush();writer.close();}
}
2. 基本数据类型参数传递
基本数据类型以及他们的包装类。
Controller
RequestMapping(/param)
public class ParamController {/*** 使用基本数据类型和String类型*/RequestMapping(/simple)ResponseBodypublic String simple(int id, String name) throws IOException {String str id id ,name name;System.out.println(str);return str;}
}
3. Java Bean参数传递
Controller
RequestMapping(/param)
public class ParamController {/*** JavaBean传递参数*/RequestMapping(value /bean,produces text/plain;charsetUTF-8,method RequestMethod.POST)ResponseBodypublic String paramBean(Student student){System.out.println(student);return student.toString();}
}
4. 数组参数传递
Controller
RequestMapping(/param)
public class ParamController {/*** 数组参数*/
RequestMapping(value /array,method RequestMethod.POST)
ResponseBody
public String array(String[] hobbies){for(String hobby : hobbies){System.out.println(hobby);}return success;
}
}
5. List参数传递
Controller
RequestMapping(/param)
public class ParamController {/*** List参数*/
RequestMapping(value /list,method RequestMethod.POST)
ResponseBody
public String list(RequestParam ListString hobbyList){hobbyList.forEach(hobby - System.out.println(hobby));return success;
}
}
6. Map参数传递
Controller
RequestMapping(/param)
public class ParamController {/*** Map参数*/
RequestMapping(value /map,method RequestMethod.POST)
ResponseBody
public String map(RequestParam MapString,Object map){System.out.println(map);return success;
}
}
7. JSON参数传递
JSON格式采用键值对的方式来表示数据由花括号 {} 包含对象由方括号 [] 包含数组可通过JSON在线解析工具进行校验/格式化具体格式如下 对象
对象是一个无序的键/值对集合每个键后面需要添加一个冒号:键/值对之间使用逗号分隔。
{id: 1,name: zhangsan,age:20
} 数组
数组可以包含多个元素每个元素之间使用逗号分隔可以包含简单值、对象或者其他数组。
[{id: 1,name: zhangsan},{id: 2,name: zhangsan}
]
Spring MVC可以使用Jackson框架作为JSON的转换器。
通过RequestBody可以将前端的JSON参数转成Java Bean、Map、List等引用类型。
通过ResponseBody可以将后端的Java Bean、Map、List等引用类型转成JSON结果输出。
使用Jackson时需要三个jar包jackson-databind.jar、jackson-core.jar、jackson-annotations.jar。如果Spring MVC创建的是Maven项目仅需要依赖jackson-databind因为它传递依赖了jackson-core和jackson-annotations。
Controller
RequestMapping(/json)
public class JsonController {/*** json bean*/RequestMapping(value /bean,method RequestMethod.POST)ResponseBodypublic Object bean(RequestBody Student student){System.out.println(student);MapString,Object map new HashMapString,Object();map.put(code,200);map.put(msg,success);map.put(data,student.toString());return map;}/*** json map*/RequestMapping(value /map,method RequestMethod.POST)ResponseBodypublic Object map(RequestBody MapString,Object jsonMap){System.out.println(jsonMap);MapString,Object map new HashMapString,Object();map.put(code,200);map.put(msg,success);map.put(data,jsonMap);return map;}/*** json list*/RequestMapping(/list)ResponseBodypublic Object list(RequestBody ListStudent studentList){System.out.println(studentList);MapString,Object map new HashMapString,Object();map.put(code,200);map.put(msg,success);map.put(data,studentList);return map;}
}
8. Spring MVC解决POST请求中文乱码问题
Spring提供了CharacterEncodingFilter解决POST请求中的中文乱码问题在web.xml中配置CharacterEncodingFilter。
web-app!--解决POST中文乱码问题 过滤器--filterfilter-nameencodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-param/filterfilter-mappingfilter-nameencodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping
/web-app
9. Spring MVC参数传递案例
基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。
案例实现详见链接案例13 Spring MVC参数传递案例