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(); } }