1. 程式人生 > >SSH整合之個人部落格專案開發--知識點總結

SSH整合之個人部落格專案開發--知識點總結

有簡單的資料壓縮,jqery和js非同步重新整理等..

在我的後臺管理系統中,為了減省事,我只用了一個頁面,但是檢視記錄上我目前只能使用ajax非同步刷新發送一個請求,獲取一個json物件,然後遍歷json物件獲取到我需要的

/**
   * 文章操作
   * author:盼盼
   * @returns
   */
  $("#articleOperation").click(function(){
	  $.ajax({
		  type:"post",
	      url:"Blog/blog/article_findAllArticle.action",
	      dataType:"json",
	      success:function(data){
	    	  console.log(data)
	    	  
	    	    $("#acticleOperation_tbody").html(" ");
	    	
	    	    $.each(data,function(key,value){ 
	    		    
	    	     	var prebody=$("#acticleOperation_tbody").html();
	    	        $("#acticleOperation_tbody").html(prebody+'<tr>'
						+'<td><input type="checkbox" /></td>'
						+'<td>'+value.id+'</td>'
						+'<td><a href="#">'+value.title+'</a></td>'						
						+'<td>'+value.joinTime+'</td>'
						+'<td>'
						+'	<div class="am-btn-toolbar">'
						+'		<div class="am-btn-group am-btn-group-xs">'
						+'			<button  '
						+'				class="am-btn am-btn-default am-btn-xs am-text-secondary">'
						+'				<span class="am-icon-pencil-square-o"></span> 編輯'
						+'			</button>'
						+'			<button class="am-btn am-btn-default am-btn-xs">'
						+'				<span class="am-icon-copy"></span> 複製'
						+'			</button>'
						+'			<button onclick="articleDelete('+value.id+')" '
						+'				class="am-btn am-btn-default am-btn-xs am-text-danger" >'
						+'				<span class="am-icon-trash-o"></span> 刪除'
						+'			</button>'
						+'		</div>'
						+'	</div>'
						+'</td>'
						+'</tr>');
	    	      }) 
	    	    	 
	      },
	      error:function(jqObj){
	    	  console.log(jqObj.status)
	    	  
	    	  
	      }
	  });
  });
/** 文章操作_刪除
 * @returns
 */
 function articleDelete(id){
	 $.ajax({
		 type:"post",
		 url:"Blog/blog/article_delete.action",
		 data:"id="+id,
		 dataType:"json",
		 success:function(data){			
	    	  alert(data.msg);
	    	  console.log(data)		    	 
		  },
		 error:function(jqObj){
	    	  console.log(jqObj.status)	    
	    	  alert("Jquery失敗哦");
	      }
	 });
	 
 }  

在basedao我新添了一個執行原生sql語句的方法:

因為在專案開發過程中,我發現hibernate不能滿足我對資料進行特殊操作例如在字串分割,我只獲取部分資料,或為了更簡便的獲取部分列的資料

	/**
	 * 原生sql
	 */
	public List queryBySql(String sql) {
		List<Object[]> list = getCurrentSession().createSQLQuery(sql).list();    
	        return  list;
	}

在獲取了一個list<object[]>物件陣列後,再自己將這個物件陣列進行封裝為自己需要的list陣列就可以供我們簡單地使用了。

在我的專案中,我用在首頁展示部落格內容,只從資料庫中讀取前80個字元,當你點選檢視詳情時,在顯示全部資料。

我將我獲取到的list物件陣列轉換成為我需要的泛型

	/***
	 * 按照時間排序的最新前四個部落格並用hql只讀取兩列資料
	 */
	@Override
	public List findNewArticle() {
		//String hql=" FROM Article  ORDER BY joinTime DESC ";
		String sql="SELECT id,title,LEFT(content,80) FROM t_article ORDER BY joinTime DESC LIMIT 0,4";
		//List<Article> list =baseDao.find(hql, new Object[] {}, 1, 4);
		 List<Object[]> list=baseDao.queryBySql(sql);
		 List<Article> artileList = new ArrayList<Article>();
		 for(Object[] obj:list) {
			 Article a = new  Article();
			 a.setId((int)obj[0]);
			 a.setTitle((String)obj[1]);
			 a.setContent((String)obj[2]);
			 artileList.add(a);
		 }
		return artileList;

	}

然後還有一個就是分頁功能,我放在了util包內

分頁:是展示一共有多少個<li>標籤主要用於前臺的頁面展示返回一個字串

package com.util;

public class PageSplit {
	
	public String pageSplit(String URL,PageBean page) {
		String str="";
		int countpage;
		
		//得出countpage
		if(page.getTotalSize()%page.getPageSize()!=0) {
			countpage=page.getTotalSize()/page.getPageSize()+1;
		}else {
			countpage=page.getTotalSize()/page.getPageSize();
		}
		
		if(page.getNowPage()<0) {
			page.setNowPage(1);
		}
		
		if(page.getNowPage()>countpage) {
			page.setNowPage(countpage);
		}
		
		if(page.getNowPage()<=0) {
			str="<li class='disabled' ><a href="+URL+1+">«</a></li>";
		}else {
			str="<li ><a href="+URL+(page.getNowPage()-1)+">«</a></li>";
		}
		
		for(int i=1;i<=countpage;i++) {
			str+="<li ><a href="+URL+i+">"+i+"</a></li>";
		}
		
		if(page.getNowPage()>=countpage) {
			str+="<li class='disabled'><a href='#'>»</a></li>";
		}else {
			str+="<li><a href="+URL+(page.getNowPage()+1)+">»</a></li>";
		}
		return str;
	}

	/**
	 * 樣式二
	 */
	public String pageSplit2(String URL,PageBean page) {
		String str="";
		int countpage;
		
		//得出countpage
		if(page.getTotalSize()%page.getPageSize()!=0) {
			countpage=page.getTotalSize()/page.getPageSize()+1;
		}else {
			countpage=page.getTotalSize()/page.getPageSize();
		}
		
		if(page.getNowPage()<0) {
			page.setNowPage(1);
		}
		
		if(page.getNowPage()>countpage) {
			page.setNowPage(countpage);
		}
		
		if(page.getNowPage()<=0) {
			str="<div class='disabled nav-previous' ><a href='#'>← 上一頁</a></div>";
		}else {
			str="<div class='nav-previous'><a href="+URL+(page.getNowPage()-1)+">← 上一頁</a></div>";
		}
		
	
		
		
		if(page.getNowPage()>=countpage) {
			str+="<div class='disabled nav-next' ><a href='#'>下一頁 →</a></div>";
		}else {
			str+="<div class='nav-next'><a href="+URL+(page.getNowPage()+1)+">下一頁 →</a></div>";
		}
		return str;
	}
}