2012-03-28 41 views
0

你好我有一個Java EE應用程序,我有一個查詢從供應商表中檢索所有供應商。 而我有另一張桌子我有供應商的經緯度的位置。在Jsp或業務邏輯中排序?

以下是應用目前所做的:

  1. 一個servlet檢索來自數據庫的所有供應商的名單
  2. 將它們發送到一個jsp頁面級suppliers.jsp
  3. 它顯示的供應商細節及其經度和緯度。 (使用jstl)

這是我想要做的。

在另一張表中我有我的當前位置。

在servlet中使用Haversine公式我想查找我的位置和所有供應商之間的距離。

我想在servlet中實現這個方法。 但我有麻煩:

  1. 如何使供應商的位置迭代列表,發送到我的haversine公式法。

  2. 如何將結果發送到jsp頁面。

  3. 如何以排序的方式顯示它們,最小距離第一。

回答

0

2. how to send the result to the jsp page.

你可以設置你的要求的參數列表,並獲得客戶端該參數。之後,您可以在jsp中迭代並顯示數據。

3. how to display them in a sorted way, smallest distance first. 您應該爲供應商位置編寫比較器。通過它你可以對你的列表進行排序。例如,

Comparator<Supplier> comp = new Comparator<Supplier>(){ 

     @Override 
     public int compare(Supplier o1, Supplier o2) { 
      // your logic 
      return 0; 
     } 
    }; 

Collections.sort(your supplier location list, comp); 

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Comparator.html

+0

第二部分,罰款,我通過郵寄paramater。 第三部分 - 請您給我發電子郵件或發送鏈接。它會真的幫助。 – Parvesh 2012-03-28 05:25:41

+0

plz查看我更新的評論 – kandarp 2012-03-28 05:37:22

0

檢查基礎數據庫,可以應用在半正矢形式(即支持三角公式)作爲查詢的一部分。排序和過濾有效地通過數據庫完成。填充表只是將已排序的列表傳遞給jstl的問題。您始終可以使用自定義比較器對列表進行排序。我寧願使用jsp自定義標籤來做這件事。

0

PLZ參考以下鏈接以獲取計算公式的距離(公里或英里) Calculating distance using latitude longitude coordinates in kilometers with Java

1.how,使供應商的位置迭代列表,發送到我的haversine公式法。

Map dist;

for (Supplier s : supplist) { 
       dist.put(s, calcDist(s.getLatitude(), s.getLongitude(), currLat, currLong)); 
    } 
  • 如何將結果發送到jsp頁面。 您的應用程序已經按照您的描述執行此操作。
  • 3.如何以排序方式顯示它們,最小距離第一。

    編寫一個自定義比較器,根據距離進行排序。

    0

    您可以在您的供應商類中放置2種方法,一種用於通過給定座標設置距離,另一種用於檢索距離;例如:

    void setDistance(long latitude, long longitude) { 
        // calcultate distance and set it 
        //... 
        this.distance = distance; 
    } 
    
    long getDistance() { 
        return this.distance; 
    } 
    

    然後檢索供應商後,可以使用比較器對它們進行排序;像這樣:

    Collections.sort(suppliers, new Comparator<Supplier>(){ 
        public int compare(Supplier o1, Supplier o2) { 
         return new Long(o1.getDistance()).compare(o2.getDistance()); 
        } 
    }); 
    

    我還沒有編譯此代碼;所以它可能包含一些語法錯誤,但它會完成這項工作。你甚至可以用一個匿名類創建一個類似Comparator_distance的類,在這裏你可以設置coördinates來計算距離,所以你不必在供應商中設置距離,但可以在比較時計算它。這對我來說感覺有點清潔。

    如果你想分頁結果,只要確保你在分頁之前進行排序,否則你會得到不正確的結果。