一.ajax將前台用戶提交的數據傳遞給servlet。
1.前端jsp(html)頁面。引入外部jq文件和js文件。
備注:這里說明一下,登錄按鈕有個login()方法,里面有個path參數,這個只是項目的根路徑,所以如果你知道你的根路徑,就不需要這個參數,因為
可以直接在js文件寫。
2.js文件。這個js文件是第一幅圖片的外部js文件。
備注:這里的login()方法就是登陸按鈕觸發的方法,里面的path就是根路徑。獲取前端用戶輸入的值,isNull()這個方法是對輸入框是否為空進行判斷,
這里並不重要。可以不寫。我這里的dataType設置為text格式,因為我返回的數據只有一個布爾型數據,無需使用json。還有一個重點是返回來的
布爾型數據要去掉兩個空格字符。
3.后台控制層servlet文件。
備注:如上圖代碼所示,獲取鍵為username的值的方法與獲取表單的name為username的值得方法一樣,但這里的username這個字符創不是從jsp或
html文件獲取的,而是通過js文件中的ajax獲取的。如果你js文件中的dataType的值為“json”,我不敢保證這樣的方式可以獲取。現在說完了ajax
傳值到servlet,以及servlet如何獲取。
二.servlet傳遞json數據到前台ajax中。
1.后台控制層servlet文件

1 package com.practice.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.List; 6 7 import javax.servlet.ServletException; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 12 import com.alibaba.fastjson.JSONArray; 13 import com.practice.bean.Message; 14 import com.practice.service.QueryService; 15 16 @SuppressWarnings("serial") 17 public class MessageListServlet extends HttpServlet{ 18 @Override 19 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 20 // TODO Auto-generated method stub 21 this.doPost(req, resp); 22 } 23 24 @Override 25 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 26 // TODO Auto-generated method stub 27 //1.調用業務邏輯層,取得數據 28 QueryService queryService=new QueryService(); 29 JSONArray jsonData=queryService.messageList(); 30 31 //跟蹤數據 32 System.out.println(jsonData.toString()); 33 //2.返回數據到js中ajax中 34 resp.getWriter().write(jsonData.toString()); 35 36 } 37 }
備注:我這里調用了業務邏輯層的QueryService里messageList()方法。messgeList()方法返回json數組。最后將json數組打印到頁面中。可以訪問servlet
地址看到該數據。
2.業務邏輯層service文件

1 package com.practice.service; 2 3 import java.sql.SQLException; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 import com.alibaba.fastjson.JSONArray; 8 import com.alibaba.fastjson.JSONObject; 9 import com.practice.bean.Message; 10 import com.practice.dao.MessageDao; 11 import com.practice.dao.UserDao; 12 13 /** 14 * 業務邏輯層(查詢業務) 15 * @author Administrator 16 * 17 */ 18 public class QueryService { 19 public Boolean Login(String username,String password,String userType){ 20 UserDao userDao=new UserDao(); 21 Boolean isExist=false; 22 23 try { 24 isExist= userDao.query(username, password, userType); 25 } catch (SQLException e) { 26 // TODO Auto-generated catch block 27 e.printStackTrace(); 28 } 29 return isExist; 30 } 31 32 public JSONArray messageList(){ 33 MessageDao messageDao=new MessageDao(); 34 List<Message> data=new ArrayList<Message>(); 35 //1.定義一個json數組 36 JSONArray jsonData=new JSONArray(); 37 try { 38 //這里獲取了所有的message對象並存放在data中 39 data = messageDao.queryMessage(); 40 } catch (SQLException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 } 44 for(int i=0;i<data.size();i++){ 45 //2.定義json對象 46 JSONObject object=new JSONObject(); 47 Message ms=data.get(i); 48 object.put("command", ms.getCommand()); 49 object.put("description", ms.getDescription()); 50 //3.將所有的json對象存放在json數組jsonData中 51 jsonData.add(object); 52 } 53 //4.返回json數組 54 return jsonData; 55 } 56 }
備注:注釋很清楚了,這里需要到如json的jar包,要alibaba公司的。下載地址。
3.js文件

1 /** 2 * 一打開就執行 3 */ 4 $(document).ready(function(){ 5 loadData(); 6 }); 7 /** 8 * 加載數據 9 * @returns 10 */ 11 function loadData(){ 12 13 var path="/AutoReplyRobot"; 14 $.ajax({ 15 type: "post", 16 dataType: "json", 17 url: path+"/MessageList.action", 18 success: function (data) { 19 // alert(data.length); 20 appendMessageList(data); 21 }, 22 }); 23 } 24 function appendMessageList(data){ 25 26 var html=""; 27 for(var i=0;i<data.length;i++){ 28 var xuhao=i+1; 29 html+="<tr>"+ 30 " <td><input type='checkbox' name='checkbox1' value=''></td>"+ 31 "<td>"+xuhao+"</td>"+ 32 "<td>"+data[i].command+"</td>"+ 33 "<td>"+data[i].description+"</td>"+ 34 "<td>刪除/修改</td>"+ 35 "</tr>"; 36 } 37 38 $("#main").append(html); 39 } 40
備注:在ajax中success中的function可以測試已經取得的json數據。我注釋掉的兩行可以將注釋去掉。在瀏覽器中測試一下。至此,servlet傳遞json數據到
ajax中,已經講完。當然,這是表面的,但深層的原理還要繼續學習。以后有新的發現再來更。
轉載請注明出處!