1. 程式人生 > >Java的新專案學成線上筆記-day3(九)

Java的新專案學成線上筆記-day3(九)

4 刪除頁面 
使用者操作流程:
1、使用者進入使用者列表,點選“刪除”
2、執行刪除操作,提示“刪除成功”或“刪除失敗” 
4.1 刪除頁面介面定義

@ApiOperation("通過ID刪除頁面")
public ResponseResult delete(String id);

4.2 刪除頁面服務端開發 
4.2.1Dao 
使用 Spring Data提供的deleteById方法完成刪除操作 。
4.2.2 Service


//刪除頁面   
  public ResponseResult delete(String id){   
     CmsPage one = this.getById(id);     
    if(one!=null){     
       //刪除頁面     
        cmsPageRepository.deleteById(id);        
     return new ResponseResult(CommonCode.SUCCESS);      
   }     
   return new ResponseResult(CommonCode.FAIL);     
}

4.2.3Controller

@DeleteMapping("/del/{id}") //使用http的delete方法完成崗位操作
 public ResponseResult delete(@PathVariable("id") String id) { 
   return pageService.delete(id); 
}

4.3 刪除頁面前端開發 
4.3.1 Api方法

/*頁面刪除*/ export const page_del = id => {
   return http.requestDelete(apiUrl+'/cms/page/del/'+id)
 }

4.3.2編寫頁面 
1、在page_list.vue頁面新增刪除按鈕

<el‐table‐column label="操作" width="120">  
     <template slot‐scope="page"> 
        <el‐button   
        size="small"type="text"     
      @click="edit(page.row.pageId)">編輯      
    </el‐button>     
    <el‐button       
    size="small"type="text"   
        @click="del(page.row.pageId)">刪除    
      </el‐button>   
    </template>  
   </el‐table‐column>

2、刪除事件


//刪除  
      del:function (pageId) {      
   this.$confirm('確認刪除此頁面嗎?', '提示', {}).then(() => {
           cmsApi.page_del(pageId).then((res)=>{    
         if(res.success){    
           this.$message({       
          type: 'success',        
        message: '刪除成功!'     
           });      
          //查詢頁面  
              this.query()   
          }else{       
        this.$message({   
              type: 'error',  
               message: '刪除失敗!'  
              });      
       }       
    })     
      }) 
      }

5 異常處理 5.1 異常處理的問題分析 
從新增頁面的service方法中找問題:

//新增頁面  
   public CmsPageResult add(CmsPage cmsPage){ //校驗頁面是否存在,
根據頁面名稱、站點Id、頁面webpath查詢         
        CmsPage cmsPage1 =

cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(),  cmsPage.getSiteId(), cmsPage.getPageWebPath());   
       if(cmsPage1==null){   
         cmsPage.setPageId(null);
//新增頁面主鍵由spring data 自動生成     
        cmsPageRepository.save(cmsPage);  
           //返回結果         
    CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCCESS,cmsPage);       
      return cmsPageResult;  
       }    
    return new CmsPageResult(CommonCode.FAIL,null);  
   }

問題:
1、上邊的程式碼只要操作不成功僅向用戶返回“錯誤程式碼:11111,失敗資訊:操作失敗”,無法區別具體的錯誤信 息。
2、service方法在執行過程出現異常在哪捕獲?在service中需要都加try/catch,如果在controller也需要新增 try/catch,程式碼冗餘嚴重且不易維護。
解決方案:
1、在Service方法中的編碼順序是先校驗判斷,有問題則丟擲具體的異常資訊,最後執行具體的業務操作,返回成 功資訊。
2、在統一異常處理類中去捕獲異常,無需controller捕獲異常,向用戶返回統一規範的響應資訊。
程式碼模板如下:

//新增頁面 public CmsPageResult add(CmsPage cmsPage){ 
   //校驗cmsPage是否為空   
  if(cmsPage == null){    
    //丟擲異常,非法請求    
     //...  
   }   
 //根據頁面名稱查詢(頁面名稱已在mongodb建立了唯一索引)   
 CmsPage cmsPage1 =  cmsPageRepository.findByPageNameAndSiteIdAndPageWebPath(cmsPage.getPageName(),  cmsPage.getSiteId(), cmsPage.getPageWebPath());  
   //校驗頁面是否存在,已存在則丟擲異常  
   if(cmsPage1 !=null){    
    //丟擲異常,已存在相同的頁面名稱    
     //...  
   }    
cmsPage.setPageId(null);//新增頁面主鍵由spring data 自動生成   
  CmsPage save = cmsPageRepository.save(cmsPage); 
    //返回結果  
   CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCCESS,save);  
   return cmsPageResult; }