Spring MVC 遇到No mapping found for HTTP request with URI的解决方法

第一次学习SpringMVC4.0 时遇到了一个小问题“No mapping found for HTTP request with URI”困扰了一天,最后试了好多方法终于得到解决和大家分享

练习环境:Eclipse Mars +MVC4+Tomcat8.0

 一、遇到的问题:

   1 按照《SpingMVC学习指南》的例子进行SpingMVC第一个例子的练习,实现MVC结构访问一个网址,工程结构如图:

              Spring MVC 遇到No mapping found for HTTP request with URI的解决方法

 然后在MVC配置文件中增加了如下代码(红色部分)按照书上原文抄写

  作用是在输入网址时可以简化输入,例如访问/WEB-INF/jsp/myPage.jsp时可以只是用myPage访问,视图解析器会自动增加前缀和后缀,但是在运行网址http://localhost:8080/annotated1/input-product访问时总是提示No mapping found for HTTP request with URI

  // spingMVC-config.xml

  <mvc:annotation-driven/> 

 <context:component-scan base-package="controller" />
  <mvc:resources mapping="/css/**" location="/css/"/> 
  <mvc:resources mapping="/*.html" location="/WEB-INF/jsp/" /> 
  <mvc:default-servlet-handler/>
 <bean id="viewResolver"
        class=" org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix" value="/WEB-INF/jsp/"> </property>
   <property name="suffix" value=".jsp/"> </property>
  </bean>

</beans>

//productController.java

public class ProductController
{
private static final Log logger=LogFactory.getLog(ProductController.class);

@RequestMapping(value="/input-product")
public String inputProduction()
{
logger.info("inputProduction called");

return "ProductForm";  //不使用网址简化需要写成return "/WEB-INF/jsp/ProductForm.jsp"

}

}

试了很多方法都不能解决此问题,但是去掉 前缀和后缀属性是可以访问成功的。

解决方法:

MVC配置文件中修改如下红色代码部分可以成功解决此问题

 // spingMVC-config.xml

  <mvc:annotation-driven/> //这句也是要有的

 <context:component-scan base-package="controller" />
  <mvc:resources mapping="/css/**" location="/css/"/> 
  <mvc:resources mapping="/*.html" location="/WEB-INF/jsp/" /> 
  <mvc:default-servlet-handler/>
 <bean id="viewResolver"
        class=" org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix" value="/WEB-INF/jsp/"> </property>
   <property name="suffix" value=".jsp/"> </property>

  </bean>

 <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp">
</bean> 

</beans>