本文小編為大家詳細(xì)介紹“如何使用Servlet處理AJAX請(qǐng)求”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“如何使用Servlet處理AJAX請(qǐng)求”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了田林免費(fèi)建站歡迎大家使用!
AJAX用于異步更新頁(yè)面的局部?jī)?nèi)容。
text 純文本字符串
json json數(shù)據(jù)
使用ajax獲取text示例
此種方式常用于前端向后臺(tái)查詢(xún)實(shí)體的一個(gè)屬性(字段),比如查詢(xún)總分。
這里使用了jq提供的ajax方法,所以要用
后臺(tái)
@WebServlet("/servlet/HandlerServlet") public class HandlerServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //獲取ajax傳遞的參數(shù),和獲取表單數(shù)據(jù)的方式一樣 String no=request.getParameter("no"); //現(xiàn)在很多持久層框架都是把數(shù)據(jù)庫(kù)返回的記錄轉(zhuǎn)化為JavaBean處理 //此處省略連接數(shù)據(jù)庫(kù)查詢(xún),得到Student類(lèi)實(shí)例 Student student = new Student(1, "張三", 20, 100); //使用fastjson將java對(duì)象轉(zhuǎn)換為json字符串 String jsonStr = JSON.toJSONString(student); PrintWriter writer = response.getWriter(); writer.write(jsonStr); } }
JSON.toJSONString()使用的是阿里的fastjson.jar,需要自己下載添加這個(gè)jar。
使用ajax獲取json數(shù)組
此種方式用于后臺(tái)向前端返回同一實(shí)體類(lèi)的多個(gè)實(shí)例,比如查詢(xún)總分大于600的學(xué)生的信息,可能有多條記錄滿(mǎn)足要求。
使用 data[下標(biāo)].字段名 的方式獲取屬性值。
@WebServlet("/servlet/HandlerServlet") public class HandlerServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //獲取ajax傳遞的參數(shù),和獲取表單數(shù)據(jù)的方式一樣 String no=request.getParameter("no"); //現(xiàn)在很多持久層框架都是把數(shù)據(jù)庫(kù)返回的記錄轉(zhuǎn)化為JavaBean處理 //此處省略連接數(shù)據(jù)庫(kù)查詢(xún),得到Student類(lèi)的多個(gè)實(shí)例 Student student1 = new Student(1, "張三", 20, 100); Student student2 = new Student(2, "李四", 19, 80); Student student3 = new Student(3, "王五", 20, 90); ArrayListlist = new ArrayList<>(); list.add(student1); list.add(student2); list.add(student3); //使用fastjson將java對(duì)象轉(zhuǎn)換為json字符串 String jsonStr = JSON.toJSONString(list); PrintWriter writer = response.getWriter(); writer.write(jsonStr); } }
使用場(chǎng)景:前端向后臺(tái)查詢(xún)多個(gè)信息,這些信息不是同一實(shí)體類(lèi)的實(shí)例。比如要查詢(xún)考生人數(shù)、最高分考生的信息,考生人數(shù)是int型,最高分考生信息是Student類(lèi)的實(shí)例。
以 data.key 的方式獲取對(duì)應(yīng)的value。
@WebServlet("/servlet/HandlerServlet") public class HandlerServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //獲取ajax傳遞的參數(shù),和獲取表單數(shù)據(jù)的方式一樣 String no=request.getParameter("no"); //現(xiàn)在很多后臺(tái)框架都是把數(shù)據(jù)庫(kù)返回的記錄轉(zhuǎn)化為JavaBean處理 //此處省略連接數(shù)據(jù)庫(kù)查詢(xún),得到Student類(lèi)實(shí)例 HashMapmap = new HashMap<>(); map.put("amount", 3000); map.put("student", new Student(1, "張三", 20, 680)); //使用fastjson將java對(duì)象轉(zhuǎn)換為json字符串 String jsonStr = JSON.toJSONString(map); PrintWriter writer = response.getWriter(); writer.write(jsonStr); } }
map和json對(duì)象十分相似:都是以鍵值對(duì)的形式保存數(shù)據(jù),key是String,value是Object。
所以后臺(tái)map類(lèi)型的數(shù)據(jù)可以以json的形式傳給前端。
說(shuō)明
前端使用了jq的ajax()方法,所以需要把jq的庫(kù)文件包含進(jìn)來(lái)
后臺(tái)向前端傳json數(shù)據(jù)時(shí),使用了阿里巴巴的fastjson庫(kù),需要自己下載引入fastjson.jar
ajax還有一個(gè)常用選項(xiàng) async:boolean,是否異步請(qǐng)求數(shù)據(jù),默認(rèn)為true 異步請(qǐng)求
async:true 異步,ajax向后臺(tái)請(qǐng)求數(shù)據(jù)時(shí),用戶(hù)仍可以在頁(yè)面上進(jìn)行操作
async:false 同步,ajax向后臺(tái)請(qǐng)求數(shù)據(jù),瀏覽器鎖定頁(yè)面,用戶(hù)不能在頁(yè)面上進(jìn)行操作,直到請(qǐng)求完成
讀到這里,這篇“如何使用Servlet處理AJAX請(qǐng)求”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享標(biāo)題:如何使用Servlet處理AJAX請(qǐng)求
當(dāng)前地址:http://weahome.cn/article/jhhode.html