Valid XHTML 1.0 Transitional集成演练路线图 (P12)

Page: [index.html] (v2017-03-01_21-00)

  1. 项目基础:……
  2. Servlet :……
  3. Spring Web MVC :
    1. 基本 Web 应用:……
    2. CRUD :
      1. Spring Web MVC + DataSource + 基本 JDBC :……
      2. Spring Web MVC + DataSource + Spring JDBC Template :……
      3. Spring Web MVC + DataSource + MyBatis :
        1. 方式 - 人工编写 DAO 实现类:
          • 样例 - 用户管理:
            1. 环境准备:……
            2. 样例编写:
              1. 实体类:……
              2. DAO 层:……
              3. 业务层:……
              4. Spring 介入:……
              5. 表示层:
                1. 控制器逻辑同“Spring JDBC Template CRUD”样例,直接沿用既有的“控制器”类;
                  修改 ApplicationContext 分项配置文件 src/main/resources/tfw/integration_demo/_04_spring_web_mvc/sub_files/04_mybatis_crud.xml ,注册此“控制器”对象、指定 ID ,并向其注入业务层对象、页面标题和跳转目标:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <beans ……>
                  	……
                  
                  	<bean id="crud.mybatis.manual_dao.userMgrSvc"
                  			……>
                  		……
                  	</bean>
                  
                  	<bean id="crud.mybatis.manual_dao.userMgrCtrl"
                  			class="tfw.integration_demo._04_spring_web_mvc._02_crud._01_basic_jdbc_crud.controller._01_UserMgrController">
                  		<property name="userMgrSvc" ref="crud.mybatis.manual_dao.userMgrSvc"/>
                  		<property name="pageTitle"
                  				value="Integration&amp;nbsp;Demo / 04&amp;nbsp;Spring&amp;nbsp;Web&amp;nbsp;MVC / 02&amp;nbsp;Create,&amp;nbsp;Read,&amp;nbsp;Update&amp;nbsp;&amp;amp;&amp;nbsp;Discard / 03&amp;nbsp;MyBatis&amp;nbsp;CRUD / 01&amp;nbsp;Manual&amp;nbsp;DAO&amp;nbsp;Way / 01&amp;nbsp;User&amp;nbsp;Management - "/>
                  		<property name="jumpTarget">
                  			<props>
                  				<prop key="result">/WEB-INF/pages/tfw/integration_demo/04_spring_web_mvc/02_crud/01_basic_jdbc_crud/01_user_mgr/result.jsp</prop>
                  				<prop key="detail">/WEB-INF/pages/tfw/integration_demo/04_spring_web_mvc/02_crud/01_basic_jdbc_crud/01_user_mgr/detail.jsp</prop>
                  				<prop key="login">/WEB-INF/pages/tfw/integration_demo/04_spring_web_mvc/02_crud/03_mybatis_crud/01_manual_dao_way/01_user_mgr/login.html</prop>
                  				<prop key="list">/WEB-INF/pages/tfw/integration_demo/04_spring_web_mvc/02_crud/01_basic_jdbc_crud/01_user_mgr/list.jsp</prop>
                  			</props>
                  		</property>
                  	</bean>
                  </beans>
                  

                2. 修改 ApplicationContext 分项配置文件 src/main/resources/tfw/integration_demo/_04_spring_web_mvc/sub_files/04_mybatis_crud.xml ,注册“URI 映射”对象、指定 ID ,并将 URI /tfw/integration_demo/04_spring_web_mvc/02_crud/03_mybatis_crud/01_manual_dao_way/01_user_mgr/action.spr 映射至此“控制器”对象
                  <?xml version="1.0" encoding="UTF-8"?>
                  <beans ……>
                  	……
                  
                  	<bean id="crud.mybatis.manual_dao.userMgrCtrl"
                  			……>
                  		……
                  	</bean>
                  
                  	<bean id="crud.mybatis.urlMapping"
                  			class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
                  		<property name="mappings">
                  			<props>
                  				<prop key="/tfw/integration_demo/04_spring_web_mvc/02_crud/03_mybatis_crud/01_manual_dao_way/01_user_mgr/action.spr">crud.mybatis.manual_dao.userMgrCtrl</prop>
                  			</props>
                  		</property>
                  	</bean>
                  </beans>
                  

                3. 修改 或/及 新增相关的索引页,添加指向此控制器的 URI ,确认控制器配置正确。
                4. 编写本样例的专用页面 src/main/webapp/WEB-INF/pages/tfw/integration_demo/04_spring_web_mvc/02_crud/03_mybatis_crud/01_manual_dao_way/01_user_mgr/login.html
                5. 测试本样例的“登录”和增删改查功能。
              6. 改良测试用例:
                观察各用户管理样例的 DAO 层和业务层测试用例,发现前一用户管理样例中 DAO 层和业务层测试用例的 CRUD 部分可以毫无改动地沿用到后一用户管理样例的 DAO 层和业务层测试用例中,各用户管理样例的 DAO 层和业务层测试用例仅在 DAO 层和业务层的生成 / 获取方式上有所不同;
                为简化用户管理样例的 DAO 层和业务层测试用例编写与维护,将各用户管理样例中 DAO 层和业务层测试用例的 CRUD 部分抽取至公共基类,各用户管理样例的 DAO 层和业务层测试用例均改为继承此基类:
                1. 编写公共基类 tfw.integration_demo._04_spring_web_mvc._02_crud._01_basic_jdbc_crud.A_UserMgrTestCaseBase
                  ……
                  public abstract class A_UserMgrTestCaseBase
                  {
                  
                  	protected void testUserDAO_create(I_UserDAO userDAO) throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserDAO_findById(I_UserDAO userDAO) throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserDAO_listByName(I_UserDAO userDAO) throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserDAO_listAll(I_UserDAO userDAO) throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserDAO_listByRange(I_UserDAO userDAO)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserDAO_update(I_UserDAO userDAO) throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserDAO_discardById(I_UserDAO userDAO)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserMgrSvc_createUser(_01_UserMgrService userMgrSvc)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserMgrSvc_findUserById(_01_UserMgrService userMgrSvc)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserMgrSvc_validateLogin(_01_UserMgrService userMgrSvc)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserMgrSvc_listAllUsers(_01_UserMgrService userMgrSvc)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserMgrSvc_listUsersByPage(_01_UserMgrService userMgrSvc)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserMgrSvc_updateUser(_01_UserMgrService userMgrSvc)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	protected void testUserMgrSvc_discardUserById(_01_UserMgrService userMgrSvc)
                  			throws SQLException
                  	{
                  		……
                  	}
                  
                  	private void showUsers(List<User> lstUsers)
                  	{
                  		……
                  	}
                  
                  }
                  

                2. 改造各用户管理样例的 DAO 层和业务层测试用例:
                  ……
                  public class …… extends A_UserMgrTestCaseBase
                  {
                  
                  	……
                  
                  	@Test
                  	public void testUserDAO_create() throws SQLException
                  	{
                  		……
                  		testUserDAO_create(userDAO);
                  	}
                  
                  	@Test
                  	public void testUserDAO_findById() throws SQLException
                  	{
                  		……
                  		testUserDAO_findById(userDAO);
                  	}
                  
                  	@Test
                  	public void testUserDAO_listByName() throws SQLException
                  	{
                  		……
                  		testUserDAO_listByName(userDAO);
                  	}
                  
                  	@Test
                  	public void testUserDAO_listAll() throws SQLException
                  	{
                  		……
                  		testUserDAO_listAll(userDAO);
                  	}
                  
                  	@Test
                  	public void testUserDAO_listByRange() throws SQLException
                  	{
                  		……
                  		testUserDAO_listByRange(userDAO);
                  	}
                  
                  	@Test
                  	public void testUserDAO_update() throws SQLException
                  	{
                  		……
                  		testUserDAO_update(userDAO);
                  	}
                  
                  	@Test
                  	public void testUserDAO_discardById() throws SQLException
                  	{
                  		……
                  		testUserDAO_discardById(userDAO);
                  	}
                  
                  	@Test
                  	public void testUserMgrSvc_createUser() throws SQLException
                  	{
                  		……
                  		testUserMgrSvc_createUser(userMgrSvc);
                  	}
                  
                  	@Test
                  	public void testUserMgrSvc_findUserById() throws SQLException
                  	{
                  		……
                  		testUserMgrSvc_findUserById(userMgrSvc);
                  	}
                  
                  	@Test
                  	public void testUserMgrSvc_validateLogin() throws SQLException
                  	{
                  		……
                  		testUserMgrSvc_validateLogin(userMgrSvc);
                  	}
                  
                  	@Test
                  	public void testUserMgrSvc_listAllUsers() throws SQLException
                  	{
                  		……
                  		testUserMgrSvc_listAllUsers(userMgrSvc);
                  	}
                  
                  	@Test
                  	public void testUserMgrSvc_listUsersByPage() throws SQLException
                  	{
                  		……
                  		testUserMgrSvc_listUsersByPage(userMgrSvc);
                  	}
                  
                  	@Test
                  	public void testUserMgrSvc_updateUser() throws SQLException
                  	{
                  		……
                  		testUserMgrSvc_updateUser(userMgrSvc);
                  	}
                  
                  	@Test
                  	public void testUserMgrSvc_discardUserById() throws SQLException
                  	{
                  		……
                  		testUserMgrSvc_discardUserById(userMgrSvc);
                  	}
                  
                  	private void showUsers(List<User> lstUsers)
                  	{
                  		……
                  	}
                  
                  }
                  

        2. ……