2012-05-31 4 views
0

У меня настроен hibernate & Весна без каких-либо ошибок и мой проект развертывается, однако я пытаюсь загрузить мой Home.jsp через контроллер «HomeController», м получаю «Ошибка: 404 Ресурс не найден ...»:Spring 3.0 MVC, не удалось зарегистрировать Домашний контроллер, 404 Ошибка


Я попробовал 3 разных подходов:

подход Номер 1 (не мой идеальный подход).

а) Определить index.htm в приветственном списке (web.xml)

б) Карта HomeController к «/index.htm» с помощью аннотаций с использованием @Controller @RequestMethod

с) HomeController возвращается вид «Home» (WEB-INF/просмотров/Home.jsp)


Общая структура проекта используется для всех 3-х подходов:

enter image description here


web.xml:

<web-app metadata-complete="true" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>yourmarketnet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>yourmarketnet</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.htm</welcome-file> 
    </welcome-file-list> 
</web-app> 

Yourmarketnet-spring.xml фрагмент:

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

applicationContext.xml:

<!-- Activates various annotations to be detected in bean classes --> 
    <context:annotation-config /> 
    <!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package--> 
    <context:component-scan base-package="com.yourmarketnet.controller" />  
    <!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! --> 
    <mvc:annotation-driven/> 
    <!-- mapping of static resources--> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <import resource="hibernate-context.xml" /> 

HomeController Класс:

package com.yourmarketnet.controller; 
@Controller 
@RequestMapping("/index.htm") 
public class HomeController { 
    public String requestHandler() 
    { 
     return "Home"; 
    } 
} 

Результат выполнения приложения:

Http Статус 404

Запрашиваемый ресурс() не доступен.


подход Номер 2, (не мой идеальный подход)

а) Создание redirect.jsp и определить приветственный список (web.xml)

б) Карта HomeController в «/ HomeController»с помощью аннотаций с использованием @Controller @RequestMethod

) иметь redirect.jsp„<% response.sendRedirect ("/ HomeController");%>“к моему HomeController

d) HomeController возвращает просмотра «Home» (WEB-INF/Views/Home.jsp)

Web.XML:

<web-app metadata-complete="true" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>yourmarketnet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>yourmarketnet</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>redirect.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Yourmarketnet-spring.xml фрагмент:

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

applicationContext.xml фрагмент кода:

<!-- Activates various annotations to be detected in bean classes --> 
    <context:annotation-config /> 
    <!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package--> 
    <context:component-scan base-package="com.yourmarketnet.controller" />  
    <!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! --> 
    <mvc:annotation-driven/> 
    <!-- mapping of static resources--> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <import resource="hibernate-context.xml" /> 

HomeController Класс:

package com.yourmarketnet.controller; 
@Controller 
@RequestMapping("/HomeController") 
public class HomeController { 
    public String requestHandler() 
    { 
     return "Home"; 
    } 
} 

Результат выполнения приложения:

Http Статус 404/HomeController

Запрашиваемый ресурс (/ HomeController) не доступен.


подход Номер 3 (Если какой-либо от выше работает свой штраф, однако это то, что я действительно хочу)

а) Удалите все приветственные теги файлов из web.xml

б) MapDispatcher к «/»

с) Карта HomeController к «/ HomeController» с помощью аннотаций с использованием @Controller @RequestMethod»

г) возвращает HomeController просмотра «Home» (WEB-INF/Views/Home.jsp)

web.xml:

<web-app metadata-complete="true" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>yourmarketnet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>yourmarketnet</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
</web-app> 

** Yourmarketnet-spring.xml фрагмент кода: **

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

applicationContext.xml фрагмент кода:

<!-- Activates various annotations to be detected in bean classes --> 
    <context:annotation-config /> 
    <!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. For example @Controller and @Service. Make sure to set the correct base-package--> 
    <context:component-scan base-package="com.yourmarketnet.controller" />  
    <!-- Configures the annotation-driven Spring MVC Controller programming model. Note that, with Spring 3.0, this tag works in Servlet MVC only! --> 
    <mvc:annotation-driven/> 
    <!-- mapping of static resources--> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 
    <import resource="hibernate-context.xml" /> 

HomeController Класс: журнал

package com.yourmarketnet.controller; 
@Controller 
@RequestMapping("/") 
public class HomeController { 

    public String requestHandler() 
    { 
     return "Home"; 
    } 
} 

Сервер Apache:

ПРЕДУПРЕЖДЕНИЕ: Нет отображения найдено для запроса HTTP с URI [/ yourmarketnet /] в DispatcherServlet с именем 'yourmarketnet'

Результат эксплуатационной работы:

Http Status 404

Запрошенный ресурс() недоступен.

Пожалуйста, предоставьте мне правильный код/​​теги, чтобы сервер my Home.jsp from HomeController без 404 Ошибка, спасибо.

+1

Метод аннотирования контроллера тоже, кроме того (или без), для @RequestMapping аннотации на уровне класса –

+1

Ravi your are write write Я добавил @RequestMapping (value = "/", method = RequestMethod.GET) к моему методу и eveything работал, спасибо миллиону приятелей :) – cyber101

+0

спасибо вам повеселиться –

ответ

0

Я говорю о третьем подходе с вашего вопроса.

В вашем web.xml измените отображение запроса на / вместо *.htm. Все остальное, если просто прекрасно, как я вижу здесь. Так что это должно сработать для вас.

Надеюсь, это вам поможет.

Cheers.

+0

Это была просто опечатка в моей публикации, в самом проекте «/». благодаря – cyber101

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