Non ho verificato bene tutto quello che hai scritto ma una cosa mi salta all'occhio: il mapping del DispatcherServlet.
Generalmente/tipicamente (e se non ci sono esigenze particolari o più "strane"), il DispatcherServlet lo si mappa su:
<url-pattern>/</url-pattern>
Dove "/" indica sostanzialmente il "default" servlet, se non ci sono altri mapping più specifici, tutto quanto va al DispatcherServlet ed è poi compito di Spring matchare sui controller.
Quindi puoi mettere:
@RequestMapping("/welcome.html")
E a quel punto:
http://host:porta/nomecontesto/welcome.html corrisponde.