2012-01-13 10 views
5

Soy absolutamente novato con Java y Spring y quiero aprender del ejemplo.No se ha encontrado ninguna correspondencia para la solicitud HTTP con URI [/ myproject /] en DispatcherServlet con el nombre 'appServlet'

estoy usando un out-of-the-box de configuración/instalación

  • Mac OS X
  • SpringSource Tool Suite como IDE
  • primavera 2.8.1.RELEASE
  • vFabric-tc -server-developer-2.6.1.RELEASE

He intentado generar un nuevo proyecto basado en "Spring Template Project". Luego elegí el "Proyecto Spring MVC". El proyecto de ejemplo se genera. Después de eso, sin modificar nada, he intentado ejecutar la página "home.jsp" a través de "Ejecutar como". El servidor web se inicia y finalmente recibí el error en la pestaña de la consola.

ninguna asignación encontró para la petición HTTP con URI [/ miproyecto /] en DispatcherServlet con el nombre 'appServlet'

Y este otro de salida en estas páginas web:

  • http://localhost:8080/myproject/WEB-INF/views/home.jsp
  • http://localhost:8080/myproject

enter image description here

Aquí se puede ver una imagen de cómo se estructure mi proyecto (auto generada por STS):

enter image description here

Cuál es el problema?

Aquí se puede ver el contenido del archivo 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"> 

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/root-context.xml</param-value> 
    </context-param> 

    <!-- Creates the Spring Container shared by all Servlets and Filters --> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <!-- Processes application requests --> 
    <servlet> 
     <servlet-name>appServlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

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

</web-app> 

El archivo raíz context.xml tiene este contenido.

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

    <!-- Root Context: defines shared resources visible to all other web components --> 

</beans> 

Y, finalmente, el servlet-context.xml tiene este contenido.

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

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

    <!-- Enables the Spring MVC @Controller programming model --> 
    <annotation-driven /> 

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --> 
    <resources mapping="/resources/**" location="/resources/" /> 

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> 
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <beans:property name="prefix" value="/WEB-INF/views/" /> 
     <beans:property name="suffix" value=".jsp" /> 
    </beans:bean> 

    <context:component-scan base-package="com.mycompany.myapp" /> 

</beans:beans> 

¿Alguien tiene una idea para resolverlo?

Respuesta

0

Todo lo contenido en WEB-INF no es accesible desde el exterior, y el objetivo de un marco MVC es invocar un controlador antes de enviarlo a la vista, por lo que invocar el JSP directamente no se debe hacer de todos modos.

Y es probable que no tenga ningún controlador Spring asignado a la URL raíz, por lo que obviamente no hay nada en la URL http://localhost:8080/myproject/.

+0

@AlfonsoDominguez @duffymo El proyecto autogenerado tiene un archivo llamado "HomeController.java" con el siguiente contenido: com.mycompany.myapp ' paquete; [...] OMITED PART [...] /** * Maneja las solicitudes para la página de inicio de la aplicación. */ @Controller HomeController public class { \t \t \t/** * \t Simplemente selecciona la vista de inicio para rendir mediante la devolución de su nombre. \t */ \t @RequestMapping (value = "/", method = RequestMethod.GET) \t casa public String (Locale locale, modelo Modelo) { \t \t cadena str = "mensaje de servidor"; \t \t \t \t model.addAttribute ("serverTime", str); \t \t \t \t return "home"; \t}} \t ' es eso lo que dice? –

+0

sí, eso es lo que quise decir, ¿has intentado acceder a la URL 'http: // localhost: 8080/myproject/home'? Esa URL parece ser la correcta de sus archivos de configuración. –

1

La convención de Spring es suponer que <servlet-name> en la web.xml para DispatcherServlet coincide con el comienzo del archivo XML de contexto del servlet de Spring. Cambie el nombre de servlet-context.xml a appServlet-context.xml y vea si eso ayuda.

+0

Probando que tengo el mismo error. De hecho, en el archivo web.xml, hay una línea que especifica el nombre del servlet ... Ahora he cambiado por el que sugirió (más el cambio de nombre del archivo) ... pero el resultado es el mismo . \t \t \t contextConfigLocation \t \t \t /WEB-INF/spring/appServlet/appServlet-context.xml

0

Agregue un Controlador a su aplicación que devuelva una instancia de ModelAndView con el nombre "inicio". Luego configure alguna asignación de controlador a ese Controlador e intente acceder a su aplicación web con una URL similar a esta: http://localhost:8080/myproject/home.do. Se puede encontrar más información en here y here.

Cuestiones relacionadas