2010-11-23 84 views
0

在我的項目朋友你好我有一個顯示在數據庫中的給定內容的JSP頁面表結果一個ArrayList,我想添加過濾器以僅顯示從列表中匹配的內容,如何篩選servlet-jsp/jsp-servlet中的arraylist結果?

the table which is coming out is as: 
student_id class_id student_name 
1x0001  10   Ashish 
1x2001  11   Alex 
1x2002  11   Atr. 
1x0001  10   Alok 

.............going on... 

但我希望結果只顯示class_id :: 11的頁面,並刪除其他結果如何做到這一點?

List dataList = new ArrayList(); 
rs = s.getResultSet(); 
     while (rs.next()){ 
     //Add records into data list 
     dataList.add(rs.getInt("class_id")); 
     dataList.add(rs.getString("name")); 
     dataList.add(rs.getString("student_id")); 
     } 

,然後顯示通過獲取的ArrayList中的servlet結果: 我想要的是與ArrayList的過濾表中沒有爲Db顯示事項:

the table which is coming(result???) out on servlet is as: 
    student_id class_id student_name 
    1x2001  11   Alex 
    1x2002  11   Atr. 

    .............going on... 

回答

0

應該在SQL層過濾,就像Adeel說的那樣。

此外,你應該使用一個Bean /類/結構來保存每條記錄,而不是將所有數據非結構化的方式堆放到一個ArrayList中。

然而,下面的代碼做什麼你問:

public class FilterTest { 
    public static int COLS_PER_RECORD = 3; 

    public static void main(String[] args) { 
     ArrayList dataList = populateTestData(); 
     printRecords(dataList); 
     ArrayList filtered = filterForClassId(dataList, 2); 
     printRecords(filtered); 
    } 

    private static ArrayList populateTestData() { 
     ArrayList dataList = new ArrayList(); 
     ResultSet rs = s.getResultSet(); 
     while (rs.next()) { 
      dataList.add(rs.getInt("class_id")); 
      dataList.add(rs.getString("name")); 
      dataList.add(rs.getString("student_id")); 
     } 
     return dataList; 
    } 

    private static ArrayList filterForClassId(ArrayList dataList, 
      int classIdToFilterFor) { 
     ArrayList filtered = new ArrayList(); 
     Integer classIdToFilterForInteger = new Integer(classIdToFilterFor); 
     for (int i = 0; i < dataList.size(); i += COLS_PER_RECORD) { 
      if (classIdToFilterForInteger.equals(dataList.get(i))) { 
       for (int j = 0; j < COLS_PER_RECORD; j++) { 
        filtered.add(dataList.get(i + j)); 
       } 
      } 
     } 
     return filtered; 
    } 

    private static void printRecords(ArrayList dataList) { 
     System.out.println("----"); 
     for (int i = 0; i < dataList.size(); i += COLS_PER_RECORD) { 
      System.out.println("class_id=" + dataList.get(i) + " name=" 
        + dataList.get(i + 1) + " student_id=" 
        + dataList.get(i + 2)); 
     } 
     System.out.println("----"); 
    } 
} 
+0

非常感謝你 – Alok 2010-11-25 06:14:14

2

問題出在哪裏。把這個條件放在這樣的SQL查詢中,where class_id = ?