js怎么传各种类型参数到Controller层

前端开发   发布日期:2023年07月15日   浏览次数:563

这篇文章主要讲解了“js怎么传各种类型参数到Controller层”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js怎么传各种类型参数到Controller层”吧!

一 .@RequestBody和@RequestParam区别

1.@RequestParam

用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)

RequestParam可以接受简单类型的属性,也可以接受对象类型。

实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。

2.@RequestBody

处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

  • GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。

  • POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

3.@ModelAttribute

该注解有两个用法,一个是用于方法上,一个是用于参数上;

用于方法上时: 通常用来在处理@RequestMapping之前,为请求绑定需要从后台查询的model;

用于参数上时:用来通过名称对应,把相应名称的值绑定到注解的参数bean上;要绑定的值来源于:

  • A) @SessionAttributes 启用的attribute 对象上;

  • B) @ModelAttribute 用于方法上时指定的model对象;

  • C) 上述两种情况都没有时,new一个需要绑定的bean对象,然后把request中按名称对应的方式把值绑定到bean中。

二.一些常用的传参类型

1.字符串类型参数

  1. /**
  2. * 传递字符串参数
  3. */
  4. getStringParam:function(){
  5. var param={"stringParams":hidden_input_value};
  6. //var param={};两种方式都行
  7. // param.stringParams=hidden_input_value;
  8. $.ajax({
  9. url:basePath+"/ParamFormatController/getStringParam.shtml",
  10. data:param,
  11. type : 'POST',
  12. dataType : 'json',
  13. success:function(data){
  14. },
  15. })
  16. },

Controller层

  1. /**
  2. * 接收字符串类型参数
  3. *
  4. * @param userName
  5. * @return
  6. */
  7. @RequestMapping("/getStringParam")
  8. @ResponseBody
  9. public String getStringParam(String userName) {
  10. String password = userService.getUserpassword(userName);
  11. return password;
  12. }

2.对象类型

  1. /**
  2. * 传递对象参数
  3. */
  4. setObjectParam:function(){
  5. var objectParams={};
  6. objectParams.name="张三";
  7. objectParams.age="19";
  8. objectParams.sex="男";
  9. $.ajax({
  10. url:basePath+"/ParamFormatController/getObjectParam.shtml",
  11. data:objectParams,
  12. type : 'POST',
  13. dataType : 'json',
  14. success:function(data){
  15. },
  16. })
  17. },
  1. /**
  2. * 接收对象参数
  3. *
  4. * @param
  5. * @return
  6. */
  7. @RequestMapping("/getObjectParam")
  8. @ResponseBody
  9. public void getObjectParam(Student objectParams) {
  10. System.out.println("姓名:" + objectParams.getName());
  11. System.out.println("性别:" + objectParams.getSex());
  12. System.out.println("年龄:" + objectParams.getAge());
  13. }

3.复杂对象类型

  1. /**
  2. * 传递复杂对象参数(包含id,username,String[],List<Person>)
  3. */
  4. setHardObjectParam:function(){
  5. var objectParams = {
  6. schoolName:"鹏峰中学",
  7. data:new Date(),
  8. teacherNames:["张老师","李老师","王老师"],
  9. students:[
  10. {name:"小明",sex:"男",age:"19"},
  11. {name:"小红",sex:"男",age:"19"},
  12. ]
  13. };
  14. $.ajax({
  15. type: "POST",
  16. url:basePath+"/ParamFormatController/getHardObjectParam.shtml",
  17. data: JSON.stringify(objectParams),//重点
  18. contentType:"application/json" //指定类型
  19. })
  20. },

School类

  1. public class School {
  2. private String[] teacherNames;
  3. private String schoolName;
  4. private Date data;
  5. private List<Student> students;
  6. public String[] getTeacherNames() {
  7. return teacherNames;
  8. }
  9. public void setTeacherNames(String[] teacherNames) {
  10. this.teacherNames = teacherNames;
  11. }
  12. public String getSchoolName() {
  13. return schoolName;
  14. }
  15. public void setSchoolName(String schoolName) {
  16. this.schoolName = schoolName;
  17. }
  18. public Date getData() {
  19. return data;
  20. }
  21. public void setData(Date data) {
  22. this.data = data;
  23. }
  24. public List<Student> getStudents() {
  25. return students;
  26. }
  27. public void setStudents(List<Student> students) {
  28. this.students = students;
  29. }
  30. }

Controoler

  1. /**
  2. * 接收复杂对象参数(包含id,username,String[],List<Person>)
  3. *
  4. * @param
  5. * @return
  6. */
  7. @RequestMapping("/getHardObjectParam")
  8. @ResponseBody
  9. public void getHardObjectParam(@RequestBody School objectParams) {
  10. System.out.println("学校名:" + objectParams.getSchoolName());
  11. }

4.数组与字符串

  1. /**
  2. * 传递数组与字符串
  3. */
  4. getArrayAndStringParam:function(){
  5. var pointCodes= new Array(); //定义一数组
  6. pointCodes.push("1");
  7. pointCodes.push("2");
  8. pointCodes.push("3");
  9. pointCodes.push("4");
  10. $.ajax({
  11. url:basePath+"/ParamFormatController/getArrayAndStringParam.shtml",
  12. type:"POST",
  13. data:{"names":pointCodes,"id":'6'},
  14. dataType:"json",
  15. success:function(res){
  16. }
  17. });
  18. },
  19. /**
  20. * 接收数组与字符串
  21. *
  22. * @param
  23. * @return
  24. */
  25. @RequestMapping("/getArrayAndStringParam")
  26. @ResponseBody
  27. public void getArrayAndStringParam(@RequestParam(value = "names[]") String[] names, String id) {
  28. for (int i = 0; i < names.length; i++) {
  29. System.out.println(names[i]);
  30. }
  31. }

5.List字符串集合

  1. /**
  2. * 传递字符串List参数
  3. */
  4. getListByStringParam:function(){
  5. var orderNosList = new Array();
  6. orderNosList.push("List1");
  7. orderNosList.push("List2");
  8. orderNosList.push("List3");
  9. orderNosList.push("List4");
  10. $.ajax({
  11. url:basePath+"/ParamFormatController/getListByStringParam.shtml",
  12. data:{"StringList":orderNosList},
  13. type : 'POST',
  14. dataType : 'json',
  15. success:function(data){
  16. },
  17. })
  18. },
  19. /**
  20. * 接收字符串List集合
  21. *
  22. * @param
  23. * @return
  24. */
  25. @RequestMapping("/getListByStringParam")
  26. @ResponseBody
  27. public void getListByStringParam(@RequestParam("StringList[]") List<String> list) {
  28. for (int i = 0; i < list.size(); i++) {
  29. System.out.println(list.get(i));
  30. }
  31. }

6.List对象集合

  1. /**
  2. * 接收对象List集合
  3. *
  4. * @param
  5. * @return
  6. */
  7. @RequestMapping(value = "/getListByObjectParam")
  8. @ResponseBody
  9. public void getListByObjectParam(@RequestBody List<Student> students) {
  10. for (int i = 0; i < students.size(); i++) {
  11. Student s = students.get(i);
  12. System.out.println(s.getName());
  13. }
  14. }
  15. /**
  16. * 传递对象List参数
  17. */
  18. getListByObjectParam:function(){
  19. var param=[];
  20. var data1={"name":"张三","age":"21","sex":"2"};
  21. var data2={"name":"李四","age":"24","sex":"2"};
  22. param.push(data1);
  23. param.push(data2);
  24. $.ajax({
  25. url:basePath+"/ParamFormatController/getListByObjectParam.shtml",
  26. data:JSON.stringify(param),
  27. type : 'POST',
  28. contentType: "application/json",
  29. success:function(data){
  30. },
  31. })
  32. },

后续类型在补充。

以上就是js怎么传各种类型参数到Controller层的详细内容,更多关于js怎么传各种类型参数到Controller层的资料请关注九品源码其它相关文章!