When I use the InternalResourceViewResolver for the JSP rendering, I found the spring complains:
No mapping found for HTTP request with URI [WEB-INF/views/xxx.jsp]
I don’t know why. Normally, it certainly uses this resolver, because spring got the prefix and suffix I set. I open the debug logging, and found the log says:
-mvc-servlet forwards to WEB-INF/views/xxx.jsp -No handler method found
So it goes to find a hander method, rather than renders directly. Why? Why?
At last, I found it’s the servlet-mapping problem. I map the dispatcher servlet to “
/*” instead of “
/”. Thus all files include
*.jsp also go through the dispatcher servlet. Obviously, I never map the jsp URL to any handler method.
url-pattern: /* and /
the difference is :
SRV.11.2 Specification of Mappings
In theWeb application deployment descriptor, the following syntax is used to define mappings:
A string beginning with a / character and ending with a /* suffix is used for path mapping.
A string beginning with a *. prefix is used as an extension mapping.
A string containing only the / character indicates the “default” servlet of the application. In this case the servlet path is the request URI minus the context path and the path info is null.
All other strings are used for exact matches only.
The pattern /* will force everything through your servlet.
The pattern / will make your servlet the default servlet for the app, meaning it will pick up as fallback every pattern that doesn’t have another exact match. So that’s it!