添加了基本的 web 应用代码
添加了一个失败的测试 DispatchServlet.getActionClassNameByUri
通过了根据 /contact/show 来得到正确的处理类 ContactAction 的测试
添加测试 /contact 也应该由 ContactAction 来处理
重构 DispatchServletTest
重构 DispatchServlet
添加了失败的测试，获取 uri /contact/show 的处理方法是 show
让测试通过，uri /contact/show 的处理方法是 show
添加了失败的测试，uri /contact 的默认处理方法是 index
让测试通过，uri /contact 的默认处理方法是 index
添加测试，uri /contact/ 的默认处理方法是 index
抽取了用斜线分割字符串的方法为 splitBySlash
修改测试，给方法后面都加上了默认的后缀 .jsp，有测试失败
从 uri 获取要执行的方法名的时候，删掉默认后缀
把删除默认后缀的代码抽取到方法 removeMethodSuffix
修改测试，所有需要 DispatchServlet 来处理的 url 后缀一定得是 .jsp
在获取 Action 类名的时候也要删掉默认的后缀
重构 DispatchServlet，把 methodSuffix 替换为 defaultSuffix