3.5 Spring MVC参数传递

这篇具有很好参考价值的文章主要介绍了3.5 Spring MVC参数传递。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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")
    @ResponseBody
    public 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;charset=UTF-8",
            method = RequestMethod.POST)
    @ResponseBody
    public 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 List<String> 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 Map<String,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)
    @ResponseBody
    public Object bean(@RequestBody Student student){
        System.out.println(student);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("code",200);
        map.put("msg","success");
        map.put("data",student.toString());
        return map;
    }
    /**
     * json map
     */
    @RequestMapping(value = "/map",method = RequestMethod.POST)
    @ResponseBody
    public Object map(@RequestBody Map<String,Object> jsonMap){
        System.out.println(jsonMap);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("code",200);
        map.put("msg","success");
        map.put("data",jsonMap);
        return map;
    }
    /**
     * json list
     */
    @RequestMapping("/list")
    @ResponseBody
    public Object list(@RequestBody List<Student> studentList){
        System.out.println(studentList);
        Map<String,Object> map = new HashMap<String,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中文乱码问题 过滤器-->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

9. Spring MVC参数传递案例

基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。

案例实现详见链接:案例13 Spring MVC参数传递案例文章来源地址https://www.toymoban.com/news/detail-642308.html

到了这里,关于3.5 Spring MVC参数传递的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在 Spring MVC 中,用于接收前端传递的参数的注解常用的有以下几种

    目录 1、对于json请求体参数, 2、对于路径传参 3、对于query传参 4、对于form-data参数, 总结:   1、对于json请求体参数, 请求头的Content-Type应为application/json。在前端,可以使用 data格式 传参。在后端,可以使用 @RequestBody 注解来接收参数。   2、对于路径传参 (例如:test/

    2024年01月23日
    浏览(43)
  • Spring-mvc的参数传递与常用注解的解答及页面的跳转方式---综合案例

    目录 一.slf4j--日志 二.常用注解        2.1.@RequestMapping       2.2.@RequestParam       2.3.@RequestBody       2.4.@PathVariable 三.参数的传递 3.1 基础类型 3.2 复杂类型 3.3 @RequestParam 3.4  @PathVariable 3.5 @RequestBody 3.6 增删改查  四.返回值            4.1 void 返回值   4.2 String

    2024年02月09日
    浏览(51)
  • 【Java EE】Spring请求如何传递参数详解

    访问不同的路径,就是发送不同的请求.在发送请求时,可能会带⼀些参数,所以我们在学习Spring的请求时,主要是学习如何传递参数到后端以及后端如何接收. 下面博主会对传递参数进行一个详解,咱们主要是使⽤浏览器和Postman来模拟 当我们运行后,用浏览器进行访问 http://127.0.

    2024年04月12日
    浏览(51)
  • Java配置方式使用Spring MVC:实战练习

    承接上文《Java配置方式使用Spring MVC》 登录页面 - login.jsp 注:这个页面没有JSP代码,其实可以做成静态页面 - login.html 登录成功页面 - success.jsp(必须是动态页面,因为要获取会话对象中的数据) 如果不用JSP的标签库,要获取会话中的数据,要复杂一点 登录失败页面 - failu

    2024年02月05日
    浏览(57)
  • Java 新手如何使用Spring MVC 中的查询字符串和查询参数

    目录 前言   什么是查询字符串和查询参数? Spring MVC中的查询参数  处理可选参数 处理多个值 处理查询参数的默认值 处理查询字符串 示例:创建一个RESTful服务  总结 作者简介:  懒大王敲代码,计算机专业应届生 今天给大家聊聊Java 新手如何使用Spring MVC 中的查询字符串

    2024年02月03日
    浏览(49)
  • springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 参数的作用

    在Spring Boot应用中,可以通过配置文件来控制当找不到请求处理器(handler)时是否抛出异常。具体的配置参数是 spring.mvc.throw-exception-if-no-handler-found 。 默认情况下,该参数的值为 false ,即当找不到请求处理器时,Spring MVC会返回404 Not Found响应。如果将该参数设置为 true ,则当

    2024年02月12日
    浏览(36)
  • Spring MVC学习之——数据传递(在页面上添加数据)

    编写controller 在index.jsp里面定义超链接 编写controller 在index.jsp里面定义超链接 编写controller 在index.jsp里面定义超链接

    2024年01月18日
    浏览(46)
  • springboot2入门到实战-spring缓存

    启动缓存@EnableCaching @Cacheable @Cacheable 注解就可以将运行结果缓存,以后查询相同的数据,直接从缓存中取,不需要调用方法。 序列 参数 解释 1 cacheNames 指定缓存组件的名字 2 key 缓存数据时使用的key,默认使用方法参数 3 keyGenerator key 的生成器。 key 和 keyGenerator 二选一使用

    2024年02月22日
    浏览(40)
  • springboot传递List类型参数报错 No primary or single unique constructor found for interface java.util.List

    昨天在做毕设进行一对多插入的时候 出现了500错误 先看代码 mapper层代码 这里我是list集合进行一对多插入 控制层 前端  页面展示 然后页面显示500错误  查看控制台   报错:No primary or single unique constructor found for interface java.util.List     at org.springframework.beans.BeanUtils.getResol

    2024年02月11日
    浏览(46)
  • Spring MVC 参数接收

    Springmvc中,接收页面提交的数据是通过方法形参来接收: 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换器)在特殊情况下需要自定义converter,如对日期数据 编写controller 在

    2024年01月23日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包