簡單web網頁與SSM后台交互


簡單web網頁與SSM后台交互

情況說明

如今,已經搭建好SSM后台開發環境,並且可以經由postman工具測試成功。現在嘗試寫出web前端網頁,通過實現簡單的提交、注冊、查詢功能來加深對前后端數據傳輸格式、接口設置等理解。

編程思路

大體的思路得正確,為實現以上需求,首先需要確定的是,主要編寫簡單網頁的方式是通過js實現點擊按鈕向后台發送get或post請求。

實現結果

由於筆者前端js語言應用經驗較少,首先在網上找到簡單網頁的代碼模板,如下:

test.html


<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script>
    <script type="text/javascript" src="submit.js"></script>
</head>

<body>
    <form name="myform" method="post">
        <label for="user">用戶名</label>
        <input type="text" id="user" name="user" value="d">
        <br />
        <label for="password">密碼</label>
        <input type="password" id="password" name="password" value="d">
        <br />
        <label for="user">原名</label>
        <input type="realName" id="realName" name="realName" value="lallll">
        <br />
        <input type="button" id="submit" name="submit" value="登錄" onclick="Submit()">
        <input type="button" id="signUp" name="signUp" value="注冊" onclick="SignUp()">

        <br />
        <label for="user">用戶id</label>
        <input type="text" id="userId" name="userId" value="6">
        <br />
        <input type="button" id="query" name="query" value="查詢" onclick="Query()">

    </form>
</body>

整個代碼結構還是比較清晰的,就是最基本的html結構,需要注意的是在head部分引入了兩個src。針對以上代碼做一點說明:

  • 其中一個是在線引用jQuery。jQuery是一個快速、簡潔的JavaScript框架。它封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設計模式,優化HTML文檔操作、事件處理、動畫設計和Ajax交互。總而言之,jQuery可以幫助你更加方便的實現js發送get或post請求
  • 另外一個是引入submit.js。submit.js是另一個文件,主要負責具體實現get或post請求。
  • 在input/button標簽或者需要發送數據的地方,增加一個onclick的屬性,這些方法在submit.js中實現。

submit.js

function Submit() {
    console.log($('#user').val(),$('#password').val());

    var jsonData={
        "userId":4,
        "userName":$('#user').val(),
        "passWord":$('#password').val(),
        "realName":"d"
    }

    $.ajax({
        type: "POST",
        dataType: "json",
        url: "http://localhost:8889/user/enterUser",
        contentType: 'application/json',
        data: JSON.stringify(jsonData),
        success: function () {
            alert('Bingo!')
        },
        error: function () {
            alert("Bad!");
            submitted = false;
        }
    });
}


function Query() {
    console.log($('#userId').val());
    $.ajax({
        type: "GET",
        url: "http://localhost:8889/user/getUser/"+$('#userId').val(),
        success: function (data) {
            alert(data.userId+" "+data.userName +" "+data.passWord+" "+data.realName)
            alert("Bingo!")
        },
        error: function () {
            alert("Bad");
        }
    });

}

//注冊功能測試時,需要改一下用戶名(相同用戶名不能再注冊)
function SignUp() {
    console.log($('#userId').val());
    var jsonData={
        "userName":$('#user').val(),
        "passWord":$('#password').val(),
        "realName":$('#realName').val()
    }
    $.ajax({
        type: "POST",
        url: "http://localhost:8889/user/addUser",
        dataType: "json",
        contentType: 'application/json',
        data: JSON.stringify(jsonData),
        success: function () {
            alert("Bingo!")
        },
        error: function () {
            alert("Bad");
        }
    });

}

對以上代碼做幾點說明:

  • 以上三個方法的實現有很多相似之處,大體框架是一樣的。
  • 編程小技巧:console.log($('#userId').val())可以把需要觀察的值寫在日志里,在瀏覽器端F12就可以在控制台看到
  • 針對具體運行結果是走success還是error,主要看發送get或post請求后,后台返回的狀態碼(是OK還是NOT_FOUND)。另外success中function括號中可能包含的data只是接受返回的數據,名字無所謂的。比如Submit.js對應的后台登錄代碼:
//返回類型是ResponseEntity(可以添加HttpStatus狀態碼)
@RequestMapping(value="enterUser",  method={RequestMethod.POST, RequestMethod.GET})
public ResponseEntity<User> EnterUser(@RequestBody User user){
    System.out.println(user);
    User check_userName = userService.check(user);
    if (check_userName == null)
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    return new ResponseEntity<>(userService.EnterUser(user), HttpStatus.OK);
}

bug說明(本次練習遇到兩次靠自己沒能解決的bug,好在得到師兄的幫助解決了)

  • 首先的問題是碼完test.html和submit.js后,雙擊test.html運行,結果在chrome上顯示如圖:
    在Firefox上顯示如圖:可以得到結論,火狐瀏覽器在開發者角度上很不錯,尤其在針對國內開發者。兩個瀏覽器都顯示是跨域請求出現了問題,在網上找了一遍,很多解決辦法,但是好像都挺復雜的。嘗試了其中一種,安裝chrome插件 Allow-Control-Allow-Origin: *,同樣也給Firefox安上插件,然並卵。

最終解決辦法是把test.html和submit.js放到后台框架SSM的resource資源文件中(如此便在一個域中),如此在瀏覽器端輸入localhost:8889/test.html即可訪問成功

  • 第二個bug是在碼完Query方法時出現,無法正常返回user信息。找了半天,不知道問題在哪。

最終解決辦法是發現是后台出現了問題,后台並沒有返回user對象,而是簡單返回了一個字符串。所以前后端對接乃至接口設置都至關重要。<后台背鍋呀!>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM