1. 程式人生 > >Spring MVC 遇到No mapping found for HTTP request with URI的解決方法

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結構訪問一個網址,工程結構如圖:

              

 然後在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>