2014-01-15 3 views
2

Кажется, что диспетчер-сервлет не может выполнить проверку компонентов с помощью.Невозможно найти контроллер в весеннем web mvc

<context:component-scan base-package="abc" /> 

В моем файле контроллера (HelloController.java) в пакете аЬс. Код записывается следующим образом:

@Controller 
@RequestMapping("/hello") 
public class HelloController { 

@RequestMapping(method = RequestMethod.GET) 
public String printHello(ModelMap model) { 
    model.addAttribute("message", "Hello Spring MVC Framework!"); 
    return "hello"; //I have already made hello.jsp in web-inf/jsp/ 
} 
} 

Мое имя приложения SpringMiddle. Когда попытка URL, как:

http://localhost:8080/SpringMiddle/hello.htm 

У меня есть следующий шаблон URL-адрес в web.xml

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

Это показывает мне ошибку HTTP 404 не найден.

EDIT:: он показывает мне предупреждение

WARNING: No mapping found for HTTP request with URI [/SpringMiddle/hello.htm] in DispatcherServlet with name 'dispatcher' 
+0

два вопрос: Является ли ваше приложение должным образом развернуто на сервере? Какую ошибку вы видели в stacktrace? –

+0

попытайтесь установить отладку внутри контроллера и проверить, работает ли он. Также опубликуйте свой файл контекста приложения и web.xml, чтобы люди могли вам помочь. –

+2

У вас есть следующее в вашей конфигурации mvc? '' – Taylor

ответ

5

Вы должны включить MVC в Spring. В XML-конфигурации вы можете сделать это таким образом:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    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.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 

    <mvc:annotation-driven /> 

</beans> 

и в JavaConfig:

@Configuration 
@EnableWebMvc 
public class WebConfig { 

} 

Пожалуйста, обратитесь к Spring documentation

+0

любая другая альтернатива, то это? Я не могу понять, что в учебнике я имею в виду, что они не включают такой тег там. – Ritesh

+0

Нет - вы всегда должны сказать Spring, что хотите использовать среду MVC. Конечно, вы можете использовать проект Spring Boot, который автоматически включает его, но я думаю, что это не ваш случай. –

+0

Большое спасибо. Сделано .. на самом деле я ссылаюсь на этот сайт http://www.mkyong.com/spring3/spring-3-mvc-hello-world-example/ – Ritesh

2

, если вы ссылаетесь на mkyong учебник, я не сделал используйте аннотации: @ Конфигурация @EnableWebMvc, проблема в том, что вы используете как аннотации, так и объявления xml.

Аннотация для установки URL:

@Controller 
@RequestMapping("/hello") 

вы должны удалить эту часть:

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

, и вы будете иметь возможность посетить URL:

http://localhost:8080/SpringMiddle/hello 

также сделать У вас есть это в вашем web.xml:

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class> 
        org.springframework.web.servlet.DispatcherServlet 
      </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
</context-param> 
<listener> 
    <listener-class> 
        org.springframework.web.context.ContextLoaderListener 
      </listener-class> 
</listener> 

диспетчер-servlet.xml где сканирующий компонент объявлен

Смежные вопросы