spring MVC final (refactorized)