1、三層架構的圖示:css
一、DAO層,持久層,data access object。hibernate是最開始普遍使用的持久層框架,有一個突出的優勢是能夠進行數據的填充(老師舉得例子是School下有Class,Student,能夠直接經過School來填充下面的數據,不太懂)。myBatis是如今比較流行的框架。java
二、biz層,業務邏輯層,也有習慣寫爲service層,可是容易與以後的web service之類的搞混。按理來講是一個項目最爲複雜的地方。web
三、UI層spring
四、Entity實體層。架構
可是他又說struts,springMVC是控制層的東西,這裏面沒有提到這一層,因此不肯定這個是否是MVC架構。(後補:這個三層架構確實不是MVC架構,而是由微軟推薦的架構劃分,從下至上分別爲:數據訪問層、業務邏輯層/領域層、表示層)框架
2、包ide
三層架構和package相對應,同時package也解決了明明衝突的問題。函數
包的命名規則:包通常爲所有小寫測試
com.icss.bk.dao.shop
範圍.公司簡寫.項目名簡寫.層次結構.模塊的劃分.net
若是項目較小,則不須要進行最後模塊的劃分。
3、java中的枚舉
聽說Java中的枚舉類型設置不夠好,通常的作法是在實體類中經過接口模擬枚舉。
public interface IRole { int ADMIN = 1; //管理員 int COMMOM=2; int VIP = 3; }
4、關於數據的返回方法
除了函數返回,引用以外,還有經過異常來進行返回的。
在有必定的前期工做的狀況下,咱們如何判斷用戶輸入爲空,進行更加友好的提示呢?具體作法是:
一、在實體類中自定義一個異常類:
package com.icss.bk.entity; public class InputEmptyException extends Exception{ public InputEmptyException(String msg){ super(msg); } }
二、在biz層中,經過throw和throws來產生和拋出異常
throw和throws的區別:http://blog.csdn.net/hhy62011980/article/details/5548278
public class UserBiz implements IUser{ @Override public User login(String uname, String pwd) throws InputEmptyException,Exception { User user = null; if(uname != null && !uname.equals("") && pwd != null && !pwd.equals("")){ UserDao dao = new UserDao(); user = dao.login(uname, pwd); //調用dao層獲取用戶對象 }else{ throw new InputEmptyException("用戶名或密碼爲空!"); //產生異常 } return user; } }
三、在UI層中捕獲異常:
public class UserUi { //測試類 public static void loginTest(){ UserBiz biz = new UserBiz(); try { User u = biz.login("","abc"); if(u == null){ System.out.println("用戶名或密碼錯誤,請檢查!"); }else{ System.out.println(u.getUname() + "登陸成功"); if(u.getRole() == IRole.ADMIN){ System.out.println(u.getUname() + "是管理員"); }else if(u.getRole() == IRole.COMMOM){ System.out.println(u.getUname() + "是普通用戶"); }else if(u.getRole() == IRole.VIP){ System.out.println(u.getUname() + "是VIP用戶"); }else{ } } } catch (InputEmptyException e) { System.out.println(e.getMessage()); //捕獲異常,提示用戶 } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { UserUi.loginTest(); } }