首页 > 其他分享 >前后端传值总结

前后端传值总结

时间:2022-08-17 15:51:10浏览次数:68  
标签:总结 String 前后 JSON nbsp ModelAndView id 传值

先讲下后端给前端传值,也就是controller跳到html页面时,向html传值的过程,一般2种方法。
1.用Model

//举个例子
    @RequestMapping("/toAgentInput")
    public String toAgentInput(Model model) {
        //从枚举中获取贸易列表
        TradeTypeEnum[] tradeTypes = TradeTypeEnum.values();
        ArrayList<String> tradeTypesMsg = new ArrayList<String>();
        ArrayList<String> tradeTypescode = new ArrayList<String>();
        for (TradeTypeEnum i : tradeTypes) {
            tradeTypesMsg.add(i.getMsg());
            tradeTypescode.add(i.getCode());
        }
        String tradeTypesMsgList = JSON.toJSONString(tradeTypesMsg);
        String tradeTypesCodeList = JSON.toJSONString(tradeTypescode);
        model.addAttribute("tradeTypesMsgList", tradeTypesMsgList);
        model.addAttribute("tradeTypesCodeList", tradeTypesCodeList);
        return "agentBilling/agentAdd";
    }

2.用ModelAndView

//举个例子
    @RequestMapping("/modify/{id}")
    public ModelAndView modify(@PathVariable(value = "id") String id){
        ModelAndView modelAndView = new ModelAndView("member/dataCleanModify");
        //查询操作
        modelAndView.addObject("id",id);

        //下拉框赋值
        TableEnum[] tableTypes = TableEnum.values();
        List<String> tableTypesMsg = new ArrayList<String>();
        List<String> tableTypescode = new ArrayList<String>();
        for (TableEnum i : tableTypes) {
            tableTypesMsg.add(i.getMsg());
            tableTypescode.add(i.getCode());
        }
        String tableTypesMsgList = JSON.toJSONString(tableTypesMsg);
        String tableTypesCodeList = JSON.toJSONString(tableTypescode);
        modelAndView.addObject("tableTypesMsgList",tableTypesMsgList);
        modelAndView.addObject("tableTypesCodeList",tableTypesCodeList);
        return modelAndView;
    }

这两种方法的区别,model只负责传值,最后通过return "路径"来跳转,而modelandview即传值,又转发。还有个区别时,Model是作为方法入参传进来的,而ModelAndView是自己new的。

扩展:
此外还要Map,ModelMap等都可以向前端传值
Map 为原生的储存键值的对象,自然的里面一大堆的方法可以使用。
​Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
​ModelMap 继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap 的方法和特性;
​ModelAndView 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。

JSON: 后端传String,基本类型这些,前端是能直接接受到的,但是如果要传对象、列表这些,那就需要用到JSON,把对象转换为JSON字符串后传给前端,然后前端再把JSON字符串转换成前端能之别的JSON对象来取值了。
示例:

//controller
String tradeTypesMsgList = JSON.toJSONString(tradeTypesMsg);
//js
  var tableTypesMsgList=JSON.parse('${tableTypesMsgList}')
  var tableTypesCodeList=JSON.parse('${tableTypesCodeList}')
  for(var i=0;i<tableTypesCodeList.length;i++){
    $("#myselect").append(
        "<option value='"+tableTypesCodeList[i]+"'>"+tableTypesMsgList[i]+"</option>"
    )
  }
JSON包:
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>x.x.x</version>
</dependency>

然后,html无法获取js中的值,所以如果一般都是js获取html的dom,然后更改这个dom。

//像这样
 $("#show").append("<tr>")
    $("#show").append("<td>"+list[i].id+"</td>")

-----------------------------------------------------分割线----------------------------------------------------
接下来讲下前端给后端传值:
1.a标签跳转链接,然后用后缀传值
2.js中用window.location.href = "/assetslist/?nid="+dataId 跳转,get方式
关于get请求,传值有两种风格,一种是 /?id=1这种风格,另一种是restful风格,一般我用的都是restful风格

//前端
    $("#show").append("<td>"+"<a href='/sumpay-operate/dataclean/modify/"+list[i].id+"'>修改"+"</a>"+"</td>")

//后端
      @RequestMapping("/modify/{id}")
    public ModelAndView modify(@PathVariable(value = "id") String id){

3.form表单传值

//前端
  <form action="/sumpay-operate/dataclean/add">
    表名:<select id="myselect" class="singleSelect" name="tableName">
    </select>  <br/>
    列名:<input type="text" name="columnName"><span>&nbsp;&nbsp;用英文逗号分隔列名,例如:MOBILE_NO,ID_NO</span> <br/>
    开始时间: <input type="text" name="startTime" maxlength="8" minlength="8"><span>&nbsp;&nbsp;注意必须输入八位时间,如:20200506</span><br/>
    结束时间: <input type="text" name="endTime" maxlength="8" minlength="8"> <span>&nbsp;&nbsp;注意必须输入八位时间,如:20200506</span><br/>
    处理类型: <input type="text" name="cleanFlag">&nbsp;&nbsp;<span>处理类型00-初始化,10-解密失败,11-国密加密不一致,12-国密加密失败</span><br/>
    单次取的数量: <input type="text" name="cleanSize">&nbsp;&nbsp;<span>单次取的数量最多为500</span><br/>
    <input type="submit" value="添加任务">
  </form>
//后端直接整个对象给它接住
    @RequestMapping("/add")
    public ModelAndView add(CleanDataOrderReq cleanDataOrderReq){
        supplementTime(cleanDataOrderReq);
        BaseResp baseResp = cleanDataFacade.addCleanDataOrder(cleanDataOrderReq);

        return toIndex();
    }

4.ajax传值有多种方式
4.1 拼到url里

$.ajax({
    type:"get",
    url:"/sjj/1/2"
})

4.2 data
$.ajax({
type:"get",
url:"/sjj",
data:{"value1":"1","value2":"2"}
})
4.3 form表单通过ajax传
$.ajax({
type:"get",
url:"/sjj",
data:$("#myform").serialize()
})

关于ajax中success(data)的处理,可以参考
https://www.jb51.net/article/145287.htm

标签:总结,String,前后,JSON,nbsp,ModelAndView,id,传值
From: https://www.cnblogs.com/sjj123/p/16595448.html

相关文章

  • 乘风破浪,遇见最美Windows 11之现代Windows开发运维 - Docker容器化镜像使用规范总结
    背景在通过Docker使用和打包容器化镜像的时候,很容易因为一些不规范的操作引发不必要的麻烦,下面总结一些规范项供参考。总结建议描述镜像构建除系统镜像外所......
  • Java面试知识点总结(二)
    字符串&集合面试题汇总一、Java中操作字符串都有哪些类?它们之间有什么区别?操作字符串的类有:String、StringBuffer、StringBuilder。String和StringBuffer、StringBu......
  • 时隔4个月我面试字节又挂了|总结与展望
    面试过程半个月之前,我又一次结束了字节的日常实习面试,前后持续一个多星期,每一面都是2天内出结果,第四面一周未出结果,询问hr,面试流程已经终止,是的,又挂了。相比于几个月的那......
  • <摘自https://blog.csdn.net/JavaAndLI/article/details/125359786>SQL分页查询的写法
    MySQL的分页实现是使用LIMIT关键字。Oracle的分页是实现主要是基于rownum行号。SQLServer的分页主要使用的关键字是TOP。 具体用法总结如下:本文中的变量名词说明:1,......
  • LINUX 驱动例程总结
    **LINUX驱动例程总结****目录**1.使用主次设备号手动创建设备文件2.自动创建设备文件3.混杂设备驱动例程4.软中断之tasklet去实现软......
  • elastic search 安装,启动总结
    elasticsearch安装,启动个人机器:Anolis8.2下载地址https://repo.huaweicloud.com/elasticsearch/7.14.0/解压,新建用户【es不能以root启动】tar-xfuserad......
  • 前后端接口规范
    一、基础约定1、接口路径以/api或/[version]/api开头如:/api/users 或 /v2/api/users2、HTTP方法方法场景GET获取数据POST创建数据PATCH差量修......
  • 往期文章总结
    本打算将CSDN的博客,全部搬迁到这里,但是无法自动搬迁,需要我重新敲,最麻烦的可能是公式需要重新敲,因为CSDN的公式全部变成了图片。这是我无法做到的。因此,本文只是整理下,......
  • Java面试知识点总结
    基础篇一、什么是JavaJava是一门面向对象的高级编程语言,不仅吸收了C++语言的各种优点,比如继承了C++语言面向对象的技术核心。还摒弃了C++里难以理解的多继承、指针等概念......
  • 算法总结
    今天放几个关于字符串的算法题packagecom.chenghaixiang.jianzhi2.day11;importjava.util.*;/***@author程海翔*@school石家庄铁道大学*/publicclass......