當我們開發(fā)一個網站或者一個應用時,經常需要使用到JavaScript和Java后臺的交互。這里我們介紹一些方法來實現這種交互,而不依賴于jsp來實現。
一、使用Ajax進行交互
function ajax(url, method, data, success, error) { var xhr = new XMLHttpRequest(); if (method === 'GET') { xhr.open('GET', url, true); xhr.send(); } else if (method === 'POST') { xhr.open('POST', url, true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.send(data); } xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { success && success(xhr.responseText); } else { error && error(xhr.statusText); } } } }
上面是一個簡單的封裝的ajax函數,此函數可以向服務端發(fā)送請求,并返回相應的結果。
二、使用WebSocket來實現實時通訊
var ws = new WebSocket("ws://localhost:8080"); ws.onopen = function () { console.log('WebSocket已連接'); } ws.onmessage = function (evt) { console.log('收到WebSocket消息:' + evt.data); };
上面的代碼展示了如何使用WebSocket對象來實現實時通訊,服務端和客戶端可以通過WebSocket對象來進行雙向通訊。
三、使用HttpURLConnection和OkHttp進行交互
// 使用HttpURLConnection URL url = new URL("http://localhost:8080"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); if (connection.getResponseCode() == 200) { InputStream inputStream = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } } // 使用OkHttp OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url("http://localhost:8080").build(); Response response = client.newCall(request).execute(); if (response.isSuccessful()) { String result = response.body().string(); System.out.println(result); }
上述代碼展示了如何使用Java中的HttpURLConnection和OkHttp庫來實現與服務端的交互。
總結:以上幾種方式可以幫助我們實現JavaScript和Java后臺的交互,不僅限于jsp的方法。使用ajax發(fā)送請求可以實現異步請求和單頁面的應用,使用WebSocket可以實現實時通訊,而使用HttpURLConnection和OkHttp可以實現Java后臺與其它語言的交互。