第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從 JavaScript 中的 Servlet 引用 Java 列表

從 JavaScript 中的 Servlet 引用 Java 列表

慕容3067478 2023-03-09 16:49:18
我有一個(gè)從 Postgres 數(shù)據(jù)庫(kù)中提取的列表,我需要能夠使用 JavaScript 引用/操作它。我已經(jīng)更新了代碼,如下所示:這是 Servlet 的 doGet 方法:protected void doGet(HttpServletRequest req, HttpServletResponse json) throws ServletException, IOException {List<Employee> employees = uds.findAll();req.setAttribute("employees", employees);json.setContentType("application/json");json.getWriter().write(String.valueOf(employees));}這是我目前在 JavaScript 中擁有的內(nèi)容:var ajax = new XMLHttpRequest();ajax.open("GET", "http://localhost:8080/project1attempt/servlet", true);// send requestajax.send();// event to get responseajax.onreadystatechange = function() {    // Case state is 4 e o http.status for 200, your request is OK.    if (ajax.readyState == 4 && ajax.status == 200) {        var data = ajax.responseText;        // the return        console.log(data);    }}}我現(xiàn)在遇到的問(wèn)題是客戶端沒(méi)有接收到 JSON 格式的數(shù)據(jù)。如果我如上所示記錄數(shù)據(jù),日志將產(chǎn)生如下內(nèi)容:[Employee{, employee_id='123456', email='lt@gmail.com', firstName='Juan', lastName='Terri'}, Employee{, employee_id='2', email='sstark@mail.com', firstName='Sansa', lastName='Stark'}]這是正確的數(shù)據(jù),但不是有用的格式。但是,如果我嘗試這樣做console.log(JSON.parse(data)),那么我會(huì)收到Uncaught SyntaxError: Unexpected token E in JSON at position 1。我相信這是我在 servlet 中的一個(gè)簡(jiǎn)單語(yǔ)法錯(cuò)誤,但我不確定如何修復(fù)它。
查看完整描述

3 回答

?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

你應(yīng)該使用 request.getAttribute():

<%
  List<Employee> theEmployees = request.getAttribute("employees");%>

但是如果你想在你的 javascript 中有效地使用它,建議將它轉(zhuǎn)換為 json。


查看完整回答
反對(duì) 回復(fù) 2023-03-09
?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

嘗試將您的 servlet 響應(yīng)更改為 json 并使用 Ajax 獲取數(shù)據(jù)這是一個(gè)示例!


var ajax = new XMLHttpRequest();


ajax.open("GET", "your_url_here", true);


// send request

ajax.send();


// event to get response

ajax.onreadystatechange = function() {

  // Case state is 4 e o http.status for 200, your request is OK.

    if (ajax.readyState == 4 && ajax.status == 200) {

        var data = ajax.responseText;

         // the return

        console.log(data);

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-03-09
?
拉丁的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

對(duì)于像我這樣的其他菜鳥(niǎo),我已經(jīng)為這個(gè)問(wèn)題編制了以下完整的解決方案:


Servlet 應(yīng)該看起來(lái)像這樣:


protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws 

ServletException, IOException {


resp.setContentType("application/json");

List<Employee> employees = uds.findAll();

String json = new ObjectMapper().writeValueAsString(employees);

resp.getWriter().write(json);

uds.findAll()是一個(gè)返回對(duì)象列表的方法。ObjectMapper 是 Jackson 實(shí)用程序(我相信 Gson 是另一種選擇)。這會(huì)將列表放入 JSON 格式。


HTML 或 JSP 應(yīng)如下所示:


var ajax = new XMLHttpRequest();


ajax.open("GET", "http://localhost:8080/project1attempt/servlet", true);


// send request

ajax.send();


// event to get response

ajax.onreadystatechange = function() {

    // Case state is 4 e o http.status for 200, your request is OK.

    if (ajax.readyState == 4 && ajax.status == 200) {

        var data = ajax.responseText;

        // the return

        console.log(JSON.parse(data));

    }

}

這將以可用格式獲取對(duì)象列表,然后您可以使用 JavaScript 對(duì)其進(jìn)行操作以執(zhí)行任何您喜歡的操作。希望這會(huì)幫助別人!


查看完整回答
反對(duì) 回復(fù) 2023-03-09
  • 3 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)