ajax傳遞前端用戶數據到servlet,ajax接受servlet傳遞回來的json數據


一.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 }
View Code

     備注:我這里調用了業務邏輯層的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 }
View Code

    備注:注釋很清楚了,這里需要到如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     
View Code

    備注:在ajax中success中的function可以測試已經取得的json數據。我注釋掉的兩行可以將注釋去掉。在瀏覽器中測試一下。至此,servlet傳遞json數據到

      ajax中,已經講完。當然,這是表面的,但深層的原理還要繼續學習。以后有新的發現再來更。

   轉載請注明出處!


免責聲明!

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



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