当 ContactAction 保存失败的时候会返回一个出错消息
当 ContactAction 保存成功后跳转到 show 页面
把 action uri 转换成真正的 uri 的代码抽取到方法 toRealUri 中，并添加测试
添加失败的测试：跳转到带参数的 action uri
让测试通过：跳转到参数的 action uri
添加失败的测试：ContactAction 在获取id有效且对应的contact存在应正常显示
测试通过：ContactAction 在获取id有效且对应Contact存在应正常显示
添加失败的测试：ContactAction 的 index 方法始终应该跳转到 list
测试通过：ContactAction 的 index 始终要跳转到 list 页面
添加失败的测试：获取一个不存在的contact应该跳转到list
让测试通过：ContactAction获取一个不存在的contact要跳转到list
跳转 action uri 使用绝对地址
重构 ContactAction 的 show 方法
把 isBlank & isNotBlank 提取到类 StringUtils 中
把 StringUtils 移动到子包 utils 下
把 TemplateEngine&JspTemplateEngine 移动到子包 template
把 DispatchServlet 移动到子包 servlet 下
把 Contact & AbstractDomain 移动到子包 domain 下
把 action 相关类都移动到子包 action 下
把 manager 相关类都移动到子包 manager 下