you have maaped your controller with the value "/hello" but inside index.jsp you have
used href="hello.html".
so it wont map, all your mapping config is fine.
change in your index.jsp the href value to just hello.
index.jsp
<html>
<body>
<h1>Home page</h1>
<p>This is a Home Page.</p>
<p><a href="hello">Hello world link</a></p>
</body>
</html>
also change url pattern in web.xml to map any request like below(/ instead of *.htm)
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
in case you want to use the same *.html and /hello.html for your example, you need to do redirect:url in your controller.
also make sure *.htm and *.html are different.
use like below
@RequestMapping("/hello.html")
public ModelAndView processForm(HttpServlet request, HttpServletResponse response){
//process form data etc
ModelAndView modelAndView = new ModelAndView("redirect:hello");
Map<Object, Object> model = modelAndView.getModel();
modelAndView.addObject("error", "this.is.my.error.code");
return modelAndView;
}