Вы сопоставили Spring Dispatcher с * .htm, поэтому каждый раз, когда запрашивается URL, соответствующий этому шаблону, диспетчер будет искать контроллер, сопоставленный с этим конкретным URL-запросом, он НЕ будет пытаться загрузить статические файлы (иначе Ваш hvml-файл login.html эффективно скрыт этой конфигурацией, вы не можете его вернуть, пока не пройдете сначала через Spring Controller, который отправляет его обратно в качестве представления). Вы создаете Spring Controller, который возвращает эту страницу, сопоставляете ее с URI [login.htm], и тогда Spring больше не будет жаловаться, что не может найти сопоставление для этого URL:
Ознакомьтесь с главой «13.4. Отображения обработчиков» из:
http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html