Just a quick blog post to alert that there is an error in one of the config files in the Spring-MVC course. I’m uploading a fixed version now, so if you’re a user of the course, please download the new “Practicals and Code” folder, or follow these instructions:
If you start your project from the “Starting Code” folder, our web.xml contains the following:
{!{code}!}czo1MzA6XCIgICAmbHQ7IS0tICB3ZVwndmUgYWxyZWFkeSBjb25maWd1cmVkIFNwcmluZy1NVkMgZm9yIHlvdSAtIG5vdGhpbmcgdG8ge1smKiZdfWRvIGhlcmUhIC0tJmd0OyAgICAgICAgIAogICAgJmx0O3NlcnZsZXQmZ3Q7CiAgICAgICAmbHQ7c2VydmxldC1uYW1lJmd0O0Zyb257WyYqJl19dENvbnRyb2xsZXImbHQ7L3NlcnZsZXQtbmFtZSZndDsKICAgICAgICZsdDtzZXJ2bGV0LWNsYXNzJmd0O29yZy5zcHJpbmdmcmFtZXtbJiomXX13b3JrLndlYi5zZXJ2bGV0LkRpc3BhdGNoZXJTZXJ2bGV0Jmx0Oy9zZXJ2bGV0LWNsYXNzJmd0OwogICAgICAgJmx0O2xvYWQtb24te1smKiZdfXN0YXJ0dXAmZ3Q7MSZsdDsvbG9hZC1vbi1zdGFydHVwJmd0OwogICAgJmx0Oy9zZXJ2bGV0Jmd0OwogIAogICAgJmx0O3NlcnZsZXR7WyYqJl19LW1hcHBpbmcmZ3Q7CiAgICAgICAmbHQ7c2VydmxldC1uYW1lJmd0O0Zyb250Q29udHJvbGxlciZsdDsvc2VydmxldC1uYW1lJmd0O3tbJiomXX0KICAgICAgICZsdDt1cmwtcGF0dGVybiZndDsqLmRvJmx0Oy91cmwtcGF0dGVybiZndDsKICAgICZsdDsvc2VydmxldC1tYXBwaW5ne1smKiZdfSZndDsKXCI7e1smKiZdfQ=={!{/code}!}
However, our Spring XML config file is called “Dispatcher-servlet.xml”.
By default, Spring finds it’s config file in a web app by taking the servlet name and appending “-servlet.xml” to the end – it then looks for a matching file in /WEB-INF.
If you downloaded the course before the date of this post, please rename the servlet name to Dispatcher (it appears twice in web.xml).
So, your web.xml file should be (in full):
{!{code}!}czo5MTI6XCImbHQ7P3htbCB2ZXJzaW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDtVVEYtOCZxdW90Oz8mZ3Q7CiZsdDt7WyYqJl19d2ViLWFwcCB4bWxucz0mcXVvdDtodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9qYXZhZWUmcXVvdDsKICAgICAgICAgeG1sbnM6eHtbJiomXX1zaT0mcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSZxdW90OwogICAgICAgICB4c2k6c2NoZW1he1smKiZdfUxvY2F0aW9uPSZxdW90O2h0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL2phdmFlZSBodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy97WyYqJl19amF2YWVlL3dlYi1hcHBfMl81LnhzZCZxdW90OwogICAgICAgICB2ZXJzaW9uPSZxdW90OzIuNSZxdW90OyZndDsKICAgICAgICAgCntbJiomXX0gICAgJmx0OyEtLSAgd2VcJ3ZlIGFscmVhZHkgY29uZmlndXJlZCBTcHJpbmctTVZDIGZvciB5b3UgLSBub3RoaW5nIHRvIGRvIGhlcntbJiomXX1lISAtLSZndDsgICAgICAgICAKICAgICZsdDtzZXJ2bGV0Jmd0OwogICAgICAgJmx0O3NlcnZsZXQtbmFtZSZndDtEaXNwYXRjaGVye1smKiZdfSZsdDsvc2VydmxldC1uYW1lJmd0OwogICAgICAgJmx0O3NlcnZsZXQtY2xhc3MmZ3Q7b3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2V7WyYqJl19cnZsZXQuRGlzcGF0Y2hlclNlcnZsZXQmbHQ7L3NlcnZsZXQtY2xhc3MmZ3Q7CiAgICAgICAmbHQ7bG9hZC1vbi1zdGFydHVwJmd0O3tbJiomXX0xJmx0Oy9sb2FkLW9uLXN0YXJ0dXAmZ3Q7CiAgICAmbHQ7L3NlcnZsZXQmZ3Q7CiAgCiAgICAmbHQ7c2VydmxldC1tYXBwaW5nJmd0e1smKiZdfTsKICAgICAgICZsdDtzZXJ2bGV0LW5hbWUmZ3Q7RGlzcGF0Y2hlciZsdDsvc2VydmxldC1uYW1lJmd0OwogICAgICAgJmx0O3VybC17WyYqJl19cGF0dGVybiZndDsqLmRvJmx0Oy91cmwtcGF0dGVybiZndDsKICAgICZsdDsvc2VydmxldC1tYXBwaW5nJmd0OwoKJmx0Oy93ZWItYXtbJiomXX1wcCZndDsKXCI7e1smKiZdfQ=={!{/code}!}
Many apologies for the inconvenience this has caused – it was entirely my fault and happened because I changed my naming convention between chapters.
Thanks to David Wubshet and Benjamin Quarless amongst others for flagging up this problem.
Can you send the Sample programs for Servlet using Session concepts?
Cegonsoft
Hi Richard,
I acquired all your courses recently. I was very satisfied and learned a lot from the Spring Fundamentals one. I am having problems with the MVC one. I am getting the following error:
java.lang.IllegalStateException: Cannot map handler [/viewAllBooks.do] to URL path [/viewAllBooks]: There is already handler [com.virtualpairprogrammers.control.ViewAllBooksController@5106def2] mapped.
Looking at the full stack trace there may be something happening with the Autowiring behavior of Spring. How can I get help on this?
Thanks,
– Alberto.
Hi Alberto,
Best thing to do is to send a support request in through the "contact" form on the VirtualPairProgrammers.com website. Then we can have a good look at your code. Someone should answer as early as possible on Monday.
I'm sure it will be an easy fix!
Cheers,
Richard.