2016-02-19 90 views
4

我查找了幾乎所有關於該錯誤的主題,但沒有一個對我有用。在名爲xx的DispatcherServlet中找到具有URI xxx的HTTP請求沒有找到映射

我創建了一個簡單的Spring MVC項目,當我運行該項目,我得到這個錯誤:

févr. 19, 2016 12:29:56 PM org.springframework.web.servlet.PageNotFound noHandlerFound 
AVERTISSEMENT: No mapping found for HTTP request with URI [/SpringMVCsample1/] in DispatcherServlet with name 'one' 

這裏是我的代碼:

的web.xml:

一個-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <!-- This will allow Spring to load all the components from package com.capgemini.springtest --> 
    <!-- and all its child packages. --> 
    <context:component-scan base-package="com.capgemini.springtest" /> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

</beans> 

OneController.java:

package com.capgemini.springtest; 


import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.ui.ModelMap; 


@Controller 
public class OneController { 

    @RequestMapping(value = "/hello", method = RequestMethod.GET) 
    public String printHello(ModelMap model) { 

     model.addAttribute("message", "Hello Spring MVC Framework!"); 

     return "hello"; 
    } 

} 

的hello.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
    <h2>${message}</h2> 
</body> 
</html> 

任何想法?

+0

那麼你的電話應該是SpringMVCsample1 /你好,而不是SpringMVCsample1 /一個 –

+0

你引用了什麼電話? – FrankelStein

回答

1

當然你會有這樣的問題,因爲你沒有任何控制器來處理「/」的請求,你要做的就是添加一個控制器或者在你的web文件夾下添加index.jsp

web 
|--->WEB-INF 
| |--->jsp 
|  |---->index.jsp 
|--->index.jsp 
+0

這是我的文件夾組織: | ---> WEB-INF | | ---> jsp | | ----> hello.jsp – FrankelStein

+0

在WEB-INF旁邊創建index.jsp – achabahe

+0

不在裏面 – achabahe

0

web.xml您的servlet僅映射/ URI。網址格式應該是/*

+0

已經嘗試過,仍然有相同的錯誤。 – FrankelStein

+0

讓我感到困惑的是錯誤消息中提到的'/ SpringMVCsample1 /'URI。這就像它被認爲是(或應該)以'/ hello'而不是Web應用程序名稱終止的URI的一部分。你的應用程序在你的應用程序服務器中部署了哪個名稱,以及用來調用你的'/ hello'頁面的完整URL是什麼? –

+0

我的應用程序部署在:http:// localhost:8080/SpringMVCsample1/ 和/ hello路徑是未知的,404 ... – FrankelStein

2

更改URL模式在網絡的xml:

<url-pattern>/*</url-pattern> 

改變控制器具有根上下文的映射:

package com.capgemini.springtest; 


import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.ui.ModelMap; 


@Controller 
public class OneController { 

    @RequestMapping(value = {"/","/hello"}, method = RequestMethod.GET) 
    public String printHello(ModelMap model) { 

     model.addAttribute("message", "Hello Spring MVC Framework!"); 

     return "hello"; 
    } 

} 

hello.jsp中應該駐留在文件夾中:/ WEB-INF/JSP/hello.jsp

+0

在文件夾下有hello.jsp:/WEB-INF/jsp/hello.jsp幫助,但爲什麼它應該在該文件夾下?還有,$ {message}不顯示任何內容,爲什麼? – FrankelStein

+0

因爲你提到過你的jsp將駐留在這個文件夾/ WEB-INF/jsp/one-servlet.xml中:

0

嘗試將<mvc:annotation-driven />加入one-servlet.xml。請記住在那裏添加mvc名稱空間的定義以及xmlns:mvc="http://www.springframework.org/schema/mvc"

然後嘗試訪問localhost:8080/SpringMVCsample1/hello。不是localhost:8080/SpringMVCsample1/hello/像你說你已經嘗試過其中一個評論

+0

已經存在。不需要

+0

@ kunal-surana我認爲'context:component-scan'用於聲明包含組件的包和子包。Spring可以自動裝配。 'mvc:annotation-driven'用於識別諸如「@ Controller」,「@ RequestMapping」,「@ ResponseBody」等註釋。 –

+0

按照您的說法進行操作,但沒有解決問題。 – FrankelStein

相關問題