拿一个单元测试来替代网页中具体调用
1 package com.sisi.registration_service; 2 3 import org.junit.Assert; 4 import org.junit.Test; 5 /*这个项目的工作流程就是client调用userManager通过定义来实现接口的实现,可以用不同的 6 *userManagerImpl来实现它的接口,然后调用具体服务层实现类中的函数进行数据的增删改查, 7 *但是在实现类中又是调用的DAO层的接口,然后具体的DAOImpl去实现服务层实现类的增删改查, 8 *然后DAOImpl中又是调用了hibernate来实现的数据库的增删改查 9 * */ 10 import com.sisi.registration.model.User1; 11 import com.sisi.registration.service.UserManager; 12 import com.sisi.registration.service.impl.UserManagerImpl; 13 14 public class UserManagerTest { 15 16 @Test 17 public void testExists() throws Exception{ 18 UserManager um = new UserManagerImpl(); 19 User1 u = new User1(); 20 u.setUsername("a"); 21 boolean exists = um.exists(u); 22 Assert.assertEquals(true, exists); 23 } 24 25 @Test 26 public void testAdd() throws Exception{ 27 UserManager um = new UserManagerImpl(); 28 User1 u = new User1(); 29 u.setUsername("b"); 30 u.setPassword("b"); 31 boolean exists = um.exists(u); 32 if(!exists){ 33 um.add(u); 34 u.setUsername("b"); 35 Assert.assertEquals(true, um.exists(u)); 36 } 37 else{ 38 Assert.fail("Not add!"); 39 } 40 41 } 42 }
这里面就包含了我自己对目前做到第二遍的注册功能的理解。
目前总的层次可分为:
client jsp usermanager usermanagerimpl User userDao userDaoimpl DB
jsp为表现层次 service为逻辑层 数据库存取层
关于service层的作用简述:有时候会产生疑问,为什么多此一举写一个service层,只是调用了相同功能的函数像是exists调用了checkUserExistsWithName,当初最夸张的是后面函数就是直接从前边的拷贝过去的,这样不是多此一举,没有这个层次也一样。但是要想到其实这个服务层中可能同时调用多个dao来实现一个功能,那么它就是不可取代的。
快捷键
快速引入=ctrl+shift+o
快速构建get set函数=shift+alt+s