2014-08-31 2 views
0

Я только что начал работу с фрезами Spring MVC. Я пытаюсь сделать пример helloworld, но каждый учебник, который я проверил, у всех есть проблема, которую я не знаю, это значит! , например, этот проект имеет ошибку 404, когда я нажимаю на sayhello: Я использую eclipse Kepler и tomcat 7.0 и Spring 4.0; все файлы Spring .jar добавлены в путь сборки. Контроллер :404 ошибка в простом проекте Spring

package net.spring3.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.portlet.ModelAndView; 

@Controller 
public class HelloWorldController { 

    @RequestMapping(value = "/hello") 
    public ModelAndView helloWorld() { 

     String message = "Hello World"; 
     return new ModelAndView("hello", "message", message); 
    } 
} 

пружинно-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    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"> 

    <context:component-scan base-package="net.spring3.controller" /> 

    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
     <property name="viewClass" 
      value="org.springframework.web.servlet.view.JstlView" /> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 
</beans> 

web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 
    <display-name>Spring3MVC</display-name> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 
</web-app> 

WEB-INF/JSP/hello.jsp:

<html> 
<head> 
<title>Spring</title> 
</head> 
<body>${message} 
</body> 
</html> 

index.jsp:

<html> 
<head> 
<title></title> 
</head> 
<body> 
    <a href="hello.html">Say Hello</a> 
</body> 
</html> 

ответ

1

Изменить

@RequestMapping(value = "/hello") 

в

@RequestMapping(value = "/hello.html") 

DefaultAnnotationHandlerMapping по умолчанию, который зарегистрирован DispatcherServlet не обрабатывает отображения расширений пути.

Вы можете, в качестве альтернативы, указать

<mvc:annotation-driven /> 

в конфигурации XML, с соответствующим пространством имен. Это зарегистрирует RequestMappingHandlerMapping, который отображает ваши обработчики для сопоставления с расширением, например *.html.

Этот учебник кажется прослушивающим.

+0

спасибо ... можете ли вы предложить хороший учебник для изучения Spring MVC? – amir

+0

@amir Мне не нравится отвечать на это, потому что это заставляет меня ответственно за то, что я не контролирую. Я рекомендую вам ознакомиться с документацией Spring MVC, которая очень детализирована. Затем напишите свой собственный код, попробовав различные варианты, подробно описанные в документации. Вот как я это сделал. –

0

У меня была такая же проблема, прежде чем, если ваш сервер приведет вас к правильному пути WEB-INF/jsp/hello.jsp, но эта страница - 404, она должна заблокировать вашу страницу.

Так что я сделал это переместить эту страницу в /webapp/WebContent/jsp/hello.jsp и изменить путь для internalResuorceViewResolver к/WebContent/JSP

Это должно сделать трюк.

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