错误:
org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/WEB-INF/jsp/summary/homePage.jsp] in DispatcherServlet with name 'spring'
的web.xml
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我的页面存在于该目录中,如果url模式设置为<url-pattern>/ANYSTRING/*</url-pattern>
,我的页面工作正常。详细说明:我的控制器使用@RequestMapping(value = "/home")
。当网址格式为/potato/*
并且我导航到localhost:8080/potato/home
时,我的网页工作正常。但如果我保持相同的设置,网址格式为/*
,则会给我404。
尝试:
<mvc:default-servlet-handler/>
添加到spring-servlet,但这会显示我的页面的来源。<url-pattern>/</url-pattern>
,但会导致其他映射问题。有人能解释一下我的问题吗?我正在编辑,因为我尝试了不同的可能解决方案。
答案 0 :(得分:1)
尝试使用<url-pattern>*.jsp</url-pattern>
模式。
您可以为同一个servlet定义多个url-pattern。
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/abc/xyz/*</url-pattern>
</servlet-mapping>
您可以帮助您理解url-pattern
请求可以匹配给定上下文中的多个servlet映射。 servlet容器使用简单的匹配过程来确定最佳匹配。
首先,容器优先于通配符路径匹配精确路径匹配。
其次,容器更喜欢匹配最长模式。
第三,容器首选路径匹配文件类型匹配。
最后,模式<url-pattern>/</url-pattern>
始终匹配任何其他模式不匹配的请求。
有关详细说明,请查看我的帖子How does a servlets filter identify next destination is another filter or a servlet/jsp?。
添加此映射以直接处理jsp页面(web.xml):
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/jsp/*</url-pattern>
</servlet-mapping>
添加此项以使项目中的其余资源可访问(spring-servlet.xml):
<mvc:resources mapping="/assets/**" location="/assets/"/>
答案 1 :(得分:0)
你的控制器RequestMapping?
“/ *”使你的servlet拦截所有类型的请求映射,所以如果没有相应的方法,它将找不到正确的方法并给出“无映射”。
这是因为WEB-INF中的文件无法公开访问。
我建议你在url-pattern中使用一些后缀,比如“.do”。