2015-04-29 8 views
0

Я создал простой пружинный MVC приложение без использования каких-либо сборки инструментов, как Maven или муравей в затмении EE IDE404 Ошибка в приложении Spring MVC

Приложение состоит только из одного класса контроллера, 2 XML-х (web.xml и spring-servlet.xml) и страница jsp (hellopage.jsp)

Я использую tomcat и 6.0 eclipse galileo.

В моем spring-servlet.xml файл я упомянул <servlet-name> как «Весна» и <servlet-class> как org.springframework.web.servlet.DispatcherServlet, <url-pattern> в *.html, в то время как в моем web.xml файл приветствия файла index.jsp, который имеет связь (<a href="hello.html">click</a>) к hello.html.

Мой класс контроллера имеет запрос отображение как ("/hello"), когда в браузере после развертывания войны файл моего приложения я ударил URL localhost:8080/projectnameindex.jsp страница выскакивает со ссылкой "click", но после нажатия на эту ссылку, я получаю a ошибка упоминания «пружина сервлета недоступна» означает сервлет диспетчера, о котором я упоминал в файле spring-servlet.xml, пожалуйста, кто-нибудь может помочь?

Вот код:

web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" 
    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_2_5.xsd"> 
    <display-name>SpringMVC</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> 

HelloWorldController.java:

package com.samar.controllers; 

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

@Controller 
public class HelloWorldController { 

    @RequestMapping("/hello") 
    public ModelAndView helloworld() 
    { 
     String message ="Hello spring MVC...!!"; 

     return new ModelAndView("hellopage","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="com.samar.controllers"/> 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/"></property> 
     <property name="suffix" value=".jsp"></property> 
    </bean> 
</beans> 

index.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> 
    <a href="/hello.html">Click</a> 
</body> 
</html> 

hellopage.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> 
    Message is ${message} 
</body> 
</html> 
+5

Намного проще для всех отлаживать (включая себя), если вы публикуете код – smoggers

+0

Добро пожаловать в StackOverflow! Пожалуйста, прочитайте нашу страницу [ask], чтобы помочь вам сформулировать большой вопрос. Вы, скорее всего, получите хороший ответ от сообщества, если приложите некоторые усилия в свой вопрос. – ochi

+1

От взгляда на ваш html, который вы опубликовали, может случиться так, что файл hello.html не может быть найден, потому что вам нужно предоставить ему полное местоположение ресурса, то есть как это href = "$ {pageContext.request.contextPath}/hello.html» – smoggers

ответ

1

Вы должны сказать Spring читать ваши @Controller и другие аннотации.

Это может быть сделано путем добавления

<context:annotation-config/> 

к вашему весна-сервлета.xml

0

спасибо, ребята, наконец, проблема решена на самом деле проблема была помимо добавления «весеннего ядра» и «весенних паутинных» банок в пути построения проекта, я должен добавить их в папку lib в WEB-INF, а также , и теперь это работает, поэтому Tomcat не смог найти диспетчер сервлета, следовательно, ошибка 404. Я надеюсь, что ответ поможет начинающим, как я.