试用 Spring 2 Web 应用程序
在这一节,将以编程方式向员工数据库添加一些数据,并试用员工信息应用程序。
在事务内添加数据到 DB2 Express-C
在可以试用应用程序之前,需要在数据库中有些员工数据。因为集成测试在每次运行时都会删除所有表(通过回滚事务),所以数据库不包含任何已经可以使用的数据。
当然,可以用 DB2 Express-C 工具手工输入数据。但在这里将学习如何用编程的方式添加数据。
集成测试基于 AbstractJpaTests 的一个精彩特性,是测试完成时数据库的所有变化都被回滚掉这一事实,这就允许下一步骤迅速执行。如果每个步骤都在事务中运行到结束,那么数据修改会在 RDBMS 中持久,这就需要在启动下一测试之前删除它们。所以在理论上,如果想向数据库添加数据,这个类一点用也没有。
幸运的是,在基于 AbstractJpaTests 的集成测试中修改的任何数据,都可以在测试中调用 setComplete() 方法,提交给 RDBMS。这个方法不是回滚数据,而是提交数据,从而让修改持久。
FillTableWithEmployeeInfo 类是 Spring2Tutorial 项目的一部分,如清单 30 所示。这个类利用这个功能把六个员工的信息保持到 DB2 Express-C。
清单 30. 通过 FillTableWithEmployeeInfo 把数据添加到数据库
package com.ibm.dw.spring2;
import java.util.Date;
import java.util.List;
import org.springframework.test.jpa.AbstractJpaTests;
public class FillTableWithEmployeeInfo extends AbstractJpaTests {
private EmployeeService employeeService;
public void setEmployeeService(EmployeeService employeeService) {
this.employeeService = employeeService;
}
protected String[] getConfigLocations() {
return new String[] { "classpath:/com/ibm/dw/spring2/dwspring2-service.xml" };
}
public void testTableFiller() {
Employee emp1 = new Employee("0001", "Joe", "R","Smith",
"4853", "Engineer", 3, 'M',
20000.00, 0.00, 0.00,
new Address(10, "Walker Street")
, new Date(), new Date());
Employee emp2 = new Employee("0002", "John","T","Lockheed",
"4333", "Sales", 2, 'M',
40000.00, 0.00, 5000.00,
new Address(20, "Walker Street")
, new Date(), new Date());
Employee emp3 = new Employee("0003", "Mary","M","Johnson",
"4383", "Admin", 3, 'F',
60000.00, 0.00, 390.00,
new Address(123, "Booth Ave")
, new Date(), new Date());
Employee emp4 = new Employee("0004", "Mike","S","Lee",
"4322", "Sales", 3, 'M',
30000.00, 0.00, 20000.00,
new Address(7, "Wilard Drive")
, new Date(), new Date());
Employee emp5 = new Employee("0005", "Joan","K","Winfry",
"4113", "Marketing", 2, 'F',
40000.00, 0.00, 0.00,
new Address(1293, "Davis Blvd")
, new Date(), new Date());
Employee emp6 = new Employee("0006", "Steve","L","Bingham",
"4632", "Marketing", 3, 'M',
50000.00, 0.00, 0.00,
new Address(5, "Booth Ave")
, new Date(), new Date());
employeeService.save(emp1);
employeeService.save(emp2);
employeeService.save(emp3);
employeeService.save(emp4);
employeeService.save(emp5);
employeeService.save(emp6);
setComplete();
}
}
在 Eclipse 的导航器视图,右击 FillTableWithEmployeeInfo.java 并选择 Run As... JUnit Test,用数据填充数据库。
使用员工信息应用程序
要在部署到 Tomcat 之后访问应用程序的主页,请在浏览器中输入以下 URL:http://localhost:8080/dwspring/home.cgi。这假设正在本地机器上运行 Tomcat 服务器。如果使用网络上的其他服务器,只要替换 URL 中的主机名即可。
应用程序的第一页,MainController 和 home.jsp,如图 14 所示:
图 14. 员工选择页面
每个员工编号都是一个可以点击的 URL 链接,点击之后显示包含选中员工的员工细节页面(图 15):
图 15. 员工细节页面
图 15 的页面由 EmpDetailsController 创建,通过 empdet.jsp 视图呈现。
fig14.jpg fig15.jpg 2008-03-05_130710.gif