SSM框架前后端信息交互实现流程详解

 更新时间:2020年07月17日 14:27:46   作者:HuskySir  
这篇文章主要介绍了SSM框架前后端信息交互实现流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、从前端向后端传送数据

常见的3种方式

1、form表单的action:此方法可以提交form表单内的输入数据,也可同时提交某些隐藏但设置有默认值的<input>,如修改问题时,我们除了提交问题的相关信息,还需要将用户的编号提交给后端,此时就可以设置一个默认值为用户编号的<input>,并将其隐藏

2、<a>标签的href属性:此方法一般用来提交一些较少的数据,比如对象编号

1 <a href="<%=path%>/Question/DisplayQuestionInfo?question_id=${question.question_id}" rel="external nofollow" >${question.question_title}</a>
比如该处代码,显示了问题的标题信息,并将其作为超链接,点击该链接时进入后端Controller类的方法,并向其发送问题编号question_id

3、ajax请求:此方法一般在不需要页面跳转时采用,可以局部刷新页面,比如向后端提交关注某用户的信息,后端收到ajax的请求数据,对数据库进行操作,并通过@Response注解返回信息给前端,然后前端进行相关操作,可以不进行页面跳转

前端部分代码

<script language="JavaScript">
  ......
      function SaveUserFollowUser(){
      var login_user_id = ${login_user_id}    //登录者(发起者)编号
      var user_id = ${user.user_id};       //接受者用户编号

      $.ajax({
        url:"<%=path%>/UserRelation/SaveUserFollowUser",
        type:"POST",
        async: false,
        contentType:"application/json;charset=UTF-8",
        dataType:'json',

        data:JSON.stringify({"from_user_id":login_user_id,"to_user_id":user_id}), //JSON对象转为字符串
        success:function(data){
          /* 可在后端增加判断发起者和接受者用户是否是同一用户的判断 */
          if (data == true) {
            alert("关注成功");
          } else {
            alert("您已经关注该用户,不可重复关注")
          }
        }
      });
    }
</script>

......
      <button class="btn btn-success" style="width: 100px" onclick="SaveUserFollowUser()">关注用户</button>
......

后端Controller类

/**
 * 表现层 用户关系相关 (关注用户、被用户关注、关注问题、赞同回答)
 */
@Controller
@RequestMapping("/UserRelation")
public class UserRelationController {

  ......

   /**
   * 新增某用户关注某用户
   * @param map
   * @return
   */
  @RequestMapping(value = "/SaveUserFollowUser",method = {RequestMethod.POST})
  public @ResponseBody Boolean SaveUserFollowUser(@RequestBody Map<String,String> map) {

    //关注发出者编号
    Integer from_user_id = Integer.parseInt(map.get("from_user_id"));
    //关注接受者编号
    Integer to_user_id = Integer.parseInt(map.get("to_user_id"));
    //是否新增成功
    //该项可以增加发起者用户和接受者用户是否是同一用户的判断,即比较from_user_id与to_user_id是否相等,如果相等则关注失败
    //通过返回Integer类型而非Boolean类型的做判断 本程序并未增加这项判断
    Boolean flag = userRelationService.saveUserFollowUser(from_user_id,to_user_id);
    return flag;
  }
  ......
}

二、从后端向前端传送数据

1、Model

后端部分代码

/**
 * 表现层 用户
 */
@Controller
@RequestMapping(value = "/User")
public class UserController {

  ......

  /**
   * 进入个人信息页面
   * @param httpSession
   * @param model
   * @return
   */
  @RequestMapping(value = "/DisplayMyInfo")
  public String DisplayMyInfo(HttpSession httpSession, Model model) {
    Integer user_id = (Integer) httpSession.getAttribute("login_user_id");  //登录者个人编号
    User user = userService.findUserById(user_id); //登录者个人信息

    model.addAttribute("user",user);       //将登录者个人信息返回给前端
    return "User/myInfo";
  }
  ......
}

前端部分代码

......
      <div class="col-md-6 col-md-offset-5" style="text-align: left;">
        <h2>用户名:${user.user_name}</h2>
        <h2>用户昵称:${user.user_nickname}</h2>
        <h2>用户性别:${user.user_sex}</h2>
        <h2>用户邮箱:${user.user_email}</h2>
        <h2>用户密码:${user.user_password}</h2>
      </div>
......

此时可以通过${}直接取得后端传来的数据

2、ModelAndView

该方法与Model相比,多增加了返回的视图(View),对于返回给前端的具体数据处理类似

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解JUnit5参数化测试的几种方式

    详解JUnit5参数化测试的几种方式

    参数化测试一直是津津乐道的话题,我们都知道JMeter有四种参数化方式:用户自定义变量、用户参数、CSV文件、函数助手,那么JUnit5有哪些参数化测试的方式呢
    2021-07-07
  • Java线程池submit阻塞获取结果的实现原理详解

    Java线程池submit阻塞获取结果的实现原理详解

    Java线程池中提交任务运行,通常使用execute()方法就足够了。那如果想要实现在主线程中阻塞获取线程池任务运行的结果,该怎么办呢?本文就来和大家一起讨论讨论
    2022-10-10
  • Java由浅入深讲解继承上

    Java由浅入深讲解继承上

    继承就是可以直接使用前辈的属性和方法。自然界如果没有继承,那一切都是处于混沌状态。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
    2022-04-04
  • SpringBoot的启动过程源码详细分析

    SpringBoot的启动过程源码详细分析

    这篇文章主要介绍了SpringBoot的启动过程源码详细分析,SpringBoot启动的时候,会构造一个SpringApplication的实例,构造SpringApplication的时候会进行初始化的工作,需要的朋友可以参考下
    2023-11-11
  • Java实现雪花算法的工具类介绍

    Java实现雪花算法的工具类介绍

    雪花 (SnowFlake )算法是一种分布式唯一ID生成算法,可以生成全局唯一的ID标识符,就像自然界中雪花一般没有相同的雪花,本文和大家分享了一个雪花算法工具类,需要的可以收藏一下
    2023-05-05
  • 详解Spring Boot实现日志记录 SLF4J

    详解Spring Boot实现日志记录 SLF4J

    本篇文章主要介绍了详解Spring Boot实现日志记录 SLF4J,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • jvm crash的崩溃日志详细分析及注意点

    jvm crash的崩溃日志详细分析及注意点

    本篇文章主要介绍了jvm crash的崩溃日志详细分析及注意点。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-04-04
  • SpringSecurity实现自定义登录方式

    SpringSecurity实现自定义登录方式

    本文介绍自定义登录流程,包括自定义AuthenticationToken、AuthenticationFilter、AuthenticationProvider以及SecurityConfig配置类,详细解析了认证流程的实现,为开发人员提供了具体的实施指导和参考
    2024-09-09
  • 一文详解Java中的原子操作

    一文详解Java中的原子操作

    在Java中,原子操作尤为重要,尤其是在多线程环境中,想象一下,如果小黑在操作一个共享变量时,这个操作被其他线程打断,那会发生什么?可能会导致数据不一致,或者更糟糕的情况,本文将给大家详细介绍一下Java中的原子操作
    2024-01-01
  • Java实现获取cpu、内存、硬盘、网络等信息的方法示例

    Java实现获取cpu、内存、硬盘、网络等信息的方法示例

    这篇文章主要介绍了Java实现获取cpu、内存、硬盘、网络等信息的方法,涉及java使用第三方jar包针对本机硬件的cpu、内存、硬盘、网络信息等的读取相关操作技巧,需要的朋友可以参考下
    2018-06-06

最新评论