No mapping found解决方案及 url-pattern / 和 /* 的区别

问题是:

No mapping found for HTTP request with URI [/spring/WEB-INF/templates/index.jsp]

springMVC的配置如下:

<bean
	class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
	<property name="prefix" value="/WEB-INF/templates/"></property>
	<property name="suffix" value=".jsp"></property>
</bean>
而一开始web.xml里配置的url-pattern为"/*".

结果就是提示了

十月 31, 2016 5:41:00 下午 org.springframework.web.servlet.PageNotFound noHandlerFound
警告: No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'ijiuwen'
十月 31, 2016 5:41:08 下午 org.springframework.web.servlet.PageNotFound noHandlerFound
警告: No mapping found for HTTP request with URI [/WEB-INF/templates/index.jsp] in DispatcherServlet with name 'ijiuwen'

noHandlerFound是首页提示的,说明没有找到匹配的spring-mvc的Action类。

URI [/WEB-INF/templates/index.jsp] 这本来应该是spring-mvc里的forward的模板,但现在也把它当做了url来处理了,要进入spring的DispatcherServlet类。

解决方案是把 web.xml里的url-pattern "/*" 改为 "/"

url-pattern

然后,在URL匹配时,

/ 不会匹配到*.jsp,不会进入spring的DispatcherServlet类

/* 会匹配*.jsp,导致进入spring的DispatcherServlet类,然后去寻找controller,接着找不到对应的controller所以报错。

关于web.xml的url映射的小知识:

/ 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url

/* 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)


草木全
分享到:
共 0 条  此列表为空  当前1/1页

© 2014 究问社区 copyRight 豫ICP备13003319号-1