web項目--BBS之從數據庫查詢動態生成版塊信息問題分析和小結

前期學習了 html5.0   css3   javascript, jsp 頁面也已經入門,老師通過BBS 的web項目來給我們講述這些知識點在實際項目中的應用。

具體的註冊、登陸都只是簡單的業務層邏輯問題,不予說明。項目開始的第二天,老師佈置了作業: 想清楚動態生成版塊信息的流程,給的提示如下:

這是 board表的字段:boardid、name、和一個父版塊id

          用 map 來存入,map 的鍵就是父版塊編號,值就是 List<Board>,這個 parentid 下面的所有Board 對象
  0      =>    {.net技術,java技術,數據庫技術,娛樂}
  1      =>    {C#, winforms,adonet, asp.net}
  2      => 


我的想法就是:

1、取出所有的  board 對象 ==>  List<Board>

2、從全部的  Board對象中取出所有的 boardId  ,這裏要實現:boardid 編號一致的重複避免
Map<Integer,Board> //這個map用來保存  board 對象 和與之對應的 boardid
set<integer> :用來保存所有的 boardid,  無序,不可重合

3、根據 boardId 的值,分類
新建一個Map<Integer,Board>,用來保存父編號和對應的 board對象

List<parentId,Map<boardid,Board>>


這裏就會出現 從set裏面拿到正確的 board對象的問題。反正最後沒能夠解決,下面是老師給的正確寫法

public Map<Integer,List<Board>> boardList() throws Exception{
		
		//1、取出所有的 Board 對象,查出所有的版塊信息
		String sql="select boardid,boardname,parentid from tbl_board ";
		List<Board> list=db.findMutiObject(Board.class , sql, null);
		
		//2、創建一個Map 用來保存  <parentid,List<Board>> 
		Map<Integer,List<Board>> mapBoard=new HashMap<Integer,List<Board>>();
		
		//3、循環所有的  List,存入map
		List<Board> sonlist=new ArrayList<Board>();
		int parentid=0;		//最初的父版塊編號
		
		for(Board b: list){
			if(b.getParentid()!=parentid){	//如果當前的b.getParentid()和現在要保存的parentid不一致,說明是一個新的父版塊,要另外存key,sonlist
				mapBoard.put(parentid,sonlist);//在新的父版塊,要另外存key,sonlist之前,把之前所有相同parentid的sonlist先存入map,以免被新的版塊list覆蓋
				if(mapBoard.containsKey(b.getParentid())){//判斷新的parentid是否之前已經存過
					sonlist=mapBoard.get(b.getParentid());//存過,通過parentid 取出 sonlist
				}else{
					sonlist=new ArrayList<Board>();//否則,新new一個
				}
				parentid=b.getParentid();//將parentid更新
			}
			sonlist.add(b);//將board對象添加進  sonlist
		}
		mapBoard.put(parentid, sonlist);
		
		//再次循環 map 給子版塊添加信息
		addAdditionalBoardInfo(mapBoard);
		
		return mapBoard;
	}

jsp表達式用的非常多,<%  %>  可以用在任意地方,加上 html標籤的< >, 不知道有沒有跟我一樣會看錯一些地方?



今天這個錯誤困擾了我半個小時,一直在想爲什麼沒有 傳參過去?不知道大家注意到了雙引號的位置了沒有?




下面這個纔是正確寫法喔~~~

大家以後在編碼的時候多多細心,很多的失敗都是細節的緣故。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章