2012-03-28 99 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来计算距离,所以你不必在供应商中设置距离,但可以在比较时计算它。这对我来说感觉有点清洁。

    如果你想分页结果,只要确保你在分页之前进行排序,否则你会得到不正确的结果。