zoukankan      html  css  js  c++  java
  • Spring MVC前后端的数据传输

    本篇文章主要介绍了Spring MVC中如何在前后端传输数据。

    后端 ➡ 前端

    在Spring MVC中这主要通过Model将数据从后端传送到前端,一般的写法为:

    @RequestMapping(value = "/index", method = RequestMethod.POST)
    public String index(Model model){
    	String greeting = "Hello !"
    	model.addAttribute("greetingStr", greeting);
    	return "index";
    }
    

    首先需要定义一个Model,然后为Model添加属性,并绑定数据,最后将Model添加到视图。在实际开发时也可以不按照上述步骤。

    不指定视图名

    视图解析器会根据请求路径/index推断视图名,去掉/仍然可以得到正确的视图名index。此时的写法为:

    @RequestMapping(value = "/index", method = RequestMethod.POST)
    public String index(Model model){
    	String greeting = "Hello !"
    	return greeting;
    }
    

    不使用Model

    因为Model本身就继承自LinkedHashMap类(Model本身只是一个接口类,确切的说是实例化的model所属的类继承自LinkedHashMap),因此可以将数据存储在Map中再传送到前端。此时的写法为:

    @RequestMapping(value = "/index", method = RequestMethod.POST)
    public String index(Map map){
    	String greeting = "Hello !"
    	map.put("greetingStr", greeting);
    	return "index";
    }
    

    不指定模型属性

    当不指定Model中填充数据的key时,Spring MVC会根据值类型推断,返回key的替代名。此时的写法为:

    @RequestMapping(value = "/index", method = RequestMethod.POST)
    public String index(Model model){
    	String greeting = "Hello !"
    	model.addAttribute(greeting);
    	return "index";
    }
    //此时的"greeting"的key会被设置为"String",等价于map.put("String", greeting);
    

    以上方式的结果都是一致的,均会在model中会存储一个和key对应的数据,然后将model传送到到视图中,视图可以根据key直接获取到对应的数据。

    前端 ➡ 后端

    在Spring MVC中支持多种方式将数据从前端传送到后端。

    查询参数

    本质上是通过HTTP发起的一个带有参数的RPC请求,请求的形式为"/aa?name=deyken",后端处理形式为:

    @RequestMapping(value = "/aa", method = RequestMethod.POST)
    public String func(Model model, @RequestParam("name") String name) {
    	...
    }
    

    路径变量

    直接请求资源,请求的形式为"/aa/deyken",后端处理的形式为:

    @RequestMapping(value = "/aa/{name}", method = RequestMethod.POST)
    public String func(Model model, @PathVariable("name") String name) {
    	...
    }
    

    实际使用中推荐第二种方式。

    表单

    在Spring MVC中同样支持表单数据的前端到后台传输。以用户登录为例,表单形式为:

    <form action="/login" method="post">
    	name:<input type="text" name="name"/>
    	password:<input type="text" name="password"/>
    	<input type="submit"/>
    </form>
    

    后端只需在方法参数列表里接收传送过来的变量,而无需再指定查询参数或路径变量:

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String add(Model model, String name, String password){
    	...
    }
    

    如果已经定义过用户User类:

    public User {
        String name;
        String password;
        ...Setter()
        ...Getter()
    }
    

    那么Spring MVC会将表单传送过来的数据自动封装为一个User对象,此时后端方法可以这么写:

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String add(Model model, User user){
    	...
    }
    

    后记

    以上仅描述了在Spring MVC中几种前后端数据交互的方式,但在实际项目中为了使前后端开发分离,一般不适用上述方式,下篇文章我将介绍使用ajax从前端读取后端数据的具体方法。

  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/deykenlee/p/7754206.html
Copyright © 2011-2022 走看看