最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SSM框架前后端信息交互實現(xiàn)流程詳解

 更新時間:2020年07月17日 14:27:46   作者:HuskySir  
這篇文章主要介紹了SSM框架前后端信息交互實現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

一、從前端向后端傳送數(shù)據(jù)

常見的3種方式

1、form表單的action:此方法可以提交form表單內(nèi)的輸入數(shù)據(jù),也可同時提交某些隱藏但設(shè)置有默認值的<input>,如修改問題時,我們除了提交問題的相關(guān)信息,還需要將用戶的編號提交給后端,此時就可以設(shè)置一個默認值為用戶編號的<input>,并將其隱藏

2、<a>標(biāo)簽的href屬性:此方法一般用來提交一些較少的數(shù)據(jù),比如對象編號

1 <a href="<%=path%>/Question/DisplayQuestionInfo?question_id=${question.question_id}" rel="external nofollow" >${question.question_title}</a>
比如該處代碼,顯示了問題的標(biāo)題信息,并將其作為超鏈接,點擊該鏈接時進入后端Controller類的方法,并向其發(fā)送問題編號question_id

3、ajax請求:此方法一般在不需要頁面跳轉(zhuǎn)時采用,可以局部刷新頁面,比如向后端提交關(guān)注某用戶的信息,后端收到ajax的請求數(shù)據(jù),對數(shù)據(jù)庫進行操作,并通過@Response注解返回信息給前端,然后前端進行相關(guān)操作,可以不進行頁面跳轉(zhuǎn)

前端部分代碼

<script language="JavaScript">
  ......
      function SaveUserFollowUser(){
      var login_user_id = ${login_user_id}    //登錄者(發(fā)起者)編號
      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對象轉(zhuǎn)為字符串
        success:function(data){
          /* 可在后端增加判斷發(fā)起者和接受者用戶是否是同一用戶的判斷 */
          if (data == true) {
            alert("關(guān)注成功");
          } else {
            alert("您已經(jīng)關(guān)注該用戶,不可重復(fù)關(guān)注")
          }
        }
      });
    }
</script>

......
      <button class="btn btn-success" style="width: 100px" onclick="SaveUserFollowUser()">關(guān)注用戶</button>
......

后端Controller類

/**
 * 表現(xiàn)層 用戶關(guān)系相關(guān) (關(guān)注用戶、被用戶關(guān)注、關(guān)注問題、贊同回答)
 */
@Controller
@RequestMapping("/UserRelation")
public class UserRelationController {

  ......

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

    //關(guān)注發(fā)出者編號
    Integer from_user_id = Integer.parseInt(map.get("from_user_id"));
    //關(guān)注接受者編號
    Integer to_user_id = Integer.parseInt(map.get("to_user_id"));
    //是否新增成功
    //該項可以增加發(fā)起者用戶和接受者用戶是否是同一用戶的判斷,即比較from_user_id與to_user_id是否相等,如果相等則關(guān)注失敗
    //通過返回Integer類型而非Boolean類型的做判斷 本程序并未增加這項判斷
    Boolean flag = userRelationService.saveUserFollowUser(from_user_id,to_user_id);
    return flag;
  }
  ......
}

二、從后端向前端傳送數(shù)據(jù)

1、Model

后端部分代碼

/**
 * 表現(xiàn)層 用戶
 */
@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>
......

此時可以通過${}直接取得后端傳來的數(shù)據(jù)

2、ModelAndView

該方法與Model相比,多增加了返回的視圖(View),對于返回給前端的具體數(shù)據(jù)處理類似

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解JUnit5參數(shù)化測試的幾種方式

    詳解JUnit5參數(shù)化測試的幾種方式

    參數(shù)化測試一直是津津樂道的話題,我們都知道JMeter有四種參數(shù)化方式:用戶自定義變量、用戶參數(shù)、CSV文件、函數(shù)助手,那么JUnit5有哪些參數(shù)化測試的方式呢
    2021-07-07
  • Java線程池submit阻塞獲取結(jié)果的實現(xiàn)原理詳解

    Java線程池submit阻塞獲取結(jié)果的實現(xiàn)原理詳解

    Java線程池中提交任務(wù)運行,通常使用execute()方法就足夠了。那如果想要實現(xiàn)在主線程中阻塞獲取線程池任務(wù)運行的結(jié)果,該怎么辦呢?本文就來和大家一起討論討論
    2022-10-10
  • Java由淺入深講解繼承上

    Java由淺入深講解繼承上

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作
    2022-04-04
  • SpringBoot的啟動過程源碼詳細分析

    SpringBoot的啟動過程源碼詳細分析

    這篇文章主要介紹了SpringBoot的啟動過程源碼詳細分析,SpringBoot啟動的時候,會構(gòu)造一個SpringApplication的實例,構(gòu)造SpringApplication的時候會進行初始化的工作,需要的朋友可以參考下
    2023-11-11
  • Java實現(xiàn)雪花算法的工具類介紹

    Java實現(xiàn)雪花算法的工具類介紹

    雪花 (SnowFlake )算法是一種分布式唯一ID生成算法,可以生成全局唯一的ID標(biāo)識符,就像自然界中雪花一般沒有相同的雪花,本文和大家分享了一個雪花算法工具類,需要的可以收藏一下
    2023-05-05
  • 詳解Spring Boot實現(xiàn)日志記錄 SLF4J

    詳解Spring Boot實現(xiàn)日志記錄 SLF4J

    本篇文章主要介紹了詳解Spring Boot實現(xiàn)日志記錄 SLF4J,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • jvm crash的崩潰日志詳細分析及注意點

    jvm crash的崩潰日志詳細分析及注意點

    本篇文章主要介紹了jvm crash的崩潰日志詳細分析及注意點。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-04-04
  • SpringSecurity實現(xiàn)自定義登錄方式

    SpringSecurity實現(xiàn)自定義登錄方式

    本文介紹自定義登錄流程,包括自定義AuthenticationToken、AuthenticationFilter、AuthenticationProvider以及SecurityConfig配置類,詳細解析了認證流程的實現(xiàn),為開發(fā)人員提供了具體的實施指導(dǎo)和參考
    2024-09-09
  • 一文詳解Java中的原子操作

    一文詳解Java中的原子操作

    在Java中,原子操作尤為重要,尤其是在多線程環(huán)境中,想象一下,如果小黑在操作一個共享變量時,這個操作被其他線程打斷,那會發(fā)生什么?可能會導(dǎo)致數(shù)據(jù)不一致,或者更糟糕的情況,本文將給大家詳細介紹一下Java中的原子操作
    2024-01-01
  • Java實現(xiàn)獲取cpu、內(nèi)存、硬盤、網(wǎng)絡(luò)等信息的方法示例

    Java實現(xiàn)獲取cpu、內(nèi)存、硬盤、網(wǎng)絡(luò)等信息的方法示例

    這篇文章主要介紹了Java實現(xiàn)獲取cpu、內(nèi)存、硬盤、網(wǎng)絡(luò)等信息的方法,涉及java使用第三方j(luò)ar包針對本機硬件的cpu、內(nèi)存、硬盤、網(wǎng)絡(luò)信息等的讀取相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06

最新評論

通河县| 阿城市| 哈尔滨市| 珠海市| 江北区| 长垣县| 双江| 沧源| 大理市| 吉林市| 屏山县| 安国市| 荣昌县| 伊通| 安阳市| 万山特区| 阿城市| 连云港市| 中方县| 色达县| 博野县| 明水县| 濮阳市| 西华县| 吉首市| 揭东县| 和平县| 丹巴县| 会东县| 尼木县| 洱源县| 青川县| 伊吾县| 定日县| 桃江县| 平原县| 平和县| 文成县| 五大连池市| 秀山| 安多县|