1. 程式人生 > >SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一個前後端web網站(1)

SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一個前後端web網站(1)

前言:

利用暑假2個月的時間,自己用框架搭建了一個前後端web網站,因為時間有限,暑假之後便沒有再修改過了。因為這是自己第一次利用架構做的網站,所以在做的過程中也是“一波三折”,需要用到的知識點也是書上現學現用,可終歸是用了些皮毛(這裡十分感謝我的學長,很多問題幫助了我很多)。現在大三初幾個月,自己又重新看了hibernate和spring,所以也想重新整理暑假做的網站(因為有些功能的實現方式很“狗屎”,看到就難受),藉此機會讓自己也能重新學習以及希望能夠對初學SSH的同學有所幫助。

同時網站的一些酷炫前端不是自己寫的,遙想暑假苦逼寫前段的日子就無奈,自己會的很基礎好看的效果出不來,所以有的是用模版的,網站的資訊填充也是網站抓取的

。綜之:侵刪    :)逃

正文:

  • 目錄結構:

目錄結構有些不是必需的,只是那時候年少無知,稀裡糊塗的就這麼寫了   

       

     評論功能:

          模仿CSDN的評論結構如下:也就是通過父子關係,讓不管一級還是二級的子評論都掛在父評論之下,

     

      其中1,2都是對文章的評論,3回覆2,4回覆3.  等級越高,向右靠5px的距離。

      我的想法是,利用資料結構,將對文章的評論(一級評論)放在一張表中,其他的都放在另一個表中,然後通flag

      進行標記,關聯互相的父子關係。資料庫表設定如下:

代表存放一級評論 comment表:

      

      ID:回覆的ID號

      sport_id: 被回覆的文章ID號

      user_id:  評論者

代表存放二級評論 Reply表:(除了直接回覆文章的都是)

     

    ID:表示二級評論序號

    sport_id:表示文章ID號

    type:是reply型別,代表是回覆“子回覆(也就是等級肯定 >= 2)”的,如果是comment 代表是回覆一級回覆 

              (直接回覆文章的)

   targetCRId:代表其“父評論”是在reply表中還是comment表中

   user_id: 回覆者

   target_id:被回覆者(給被回覆人發訊息提醒,你被回覆了)

這樣設定表,然後通過文章id號,得到所有的評論,然後通過資料結構將評論進行父子關係的關聯結構:假設將取出的一級評論放入一個棧中,將二級以上的評論放入list2,同時設定一個棧Stack和一個存放最後順序排序成功的list3

迴圈棧,只要棧不空,取出棧頂元素放入list3,將取出的棧頂元素作為父節點,去list2中找子評論(根據表二中的type和targetCDId), 只要找到一個子評論過,便將這個子評論加入list3,同時將這個自評論加入棧頂,continue迴圈,繼續取出棧頂元素,繼續以上操作。當stack全都pop之後,在jsp頁面只要迴圈展示list3就可

  while(!S.isEmpty()){
	CRList template = S.pop();
	list3.add(template);
	for(int i = 0; i<list2.size(); i++){
		//如果是父子關係
	    if((template.getId() == list2.get(i).getTargetId())){
		if((list2.get(i).getFlag() == 2 && template.getFlag() == 2)
                                       || (list2.get(i).getFlag() - template.getFlag() == 1)){
			if((template.getRank() + 50) >= 600){
				list2.get(i).setRank(600);  // 設定右靠的最大間距
			}else{  // 設定向右靠的間距
				list2.get(i).setRank(template.getRank() + 50);
			}
						
		S.push(list2.get(i));
		  }	
	      }
           }
	}