tutorial sirve requestmapping que para mvc modelandview formulario español ejemplo clase spring spring-mvc

spring - sirve - No se encontró una asignación para la solicitud HTTP con URI... en DispatcherServlet con nombre



spring mvc español (23)

Ya revisé casi todos los artículos relevantes sobre stackoverflow, pero simplemente no puedo solucionar mi problema.

Aquí está el código: web.xml:

<display-name>Spring3MVC</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.html</url-pattern> <url-pattern>/</url-pattern> <url-pattern>*.htm</url-pattern> </servlet-mapping> </web-app>

spring-servlet.xml:

<context:component-scan base-package="com.mycompany.elso" /> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/> <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>

myController:

public class myController { @RequestMapping("/hello") public ModelAndView helloWorld() { String message = "Hello World, Spring 3.0!"; return new ModelAndView("hello", "message", message); } }

Páginas web / index.jsp:

<html> <head> <title>Spring 3.0 MVC Series</title> </head> <body> <a href="hello.html">Say Hello</a> </body> </html>

Páginas web / WEB-INF / jsp / hello.jsp:

<html> <head> <title>Spring 3.0 MVC Series: Hello World - ViralPatel.net</title> </head> <body> ${message} </body> </html>

Así que cuando inicio la aplicación, index.jsp se carga correctamente, pero cuando hago clic en href para navegar a hello.jsp, aparece un error 404 y el registro del servidor dice:

No mapping found for HTTP request with URI [/Elso/hello.html] in DispatcherServlet with name ''spring''

He revisado docenas de artículos como ese, pero simplemente no puedo encontrar el error, ¿alguien tiene alguna idea de lo que podría ser?


¿Qué es / Elso?

Intenta:

@RequestMapping("/Elso") public class myController { @RequestMapping("/hello") public ModelAndView helloWorld() { String message = "Hello World, Spring 3.0!"; return new ModelAndView("hello", "message", message); } }


Añadir

<mvc:default-servlet-handler/>

a spring-servlet.xml


Además de <mvc:annotation-driven/> funcionó para mí. Agréguelo antes de la linea <context:component-scan ............/>


Agregue @Controller a su controlador o donde quiera que tenga @RequestMapping para su punto final JSON.

Esto funcionó para mí al implementar una aplicación similar.


Asegurarse

<mvc:annotation-driven/> <context:component-scan base-package="com.hireartists.web.controllers"/>

señala el paquete apropiado que contiene controladores.


Compruebe ur Bean xmlns ..

También tuve un problema similar, pero lo resolví agregando mvc xmlns.

<?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:mvc="http://www.springframework.org/schema/mvc" 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.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <context:component-scan base-package="net.viralpatel.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>


Eliminar el servidor de Tomcat y agregar nueva configuración de tomcat en Eclipse resolvió el problema para mí.


En pom.xml, asegúrese de que el embalaje esté configurado en war como <packaging>war</packaging> , no en jar o en ninguna otra cosa.


No es encontrar los controladores, estos son problemas básicos. puede deberse a las siguientes razones.

R. dentro de la carpeta WEB-INF tiene el archivo web.xml que hace referencia a dispatcherServlet. Aquí este caso es mvc-config.xml

<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/mvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>

B. Este archivo mvc-config.xml tiene espacios de nombres y tiene que escanear los controladores.

<context:component-scan base-package="org.vimal.spring.controllers" /> <mvc:annotation-driven />

C. Verifique la exactitud del nombre del paquete donde tiene los controladores. Deberia de funcionar.

All Controllers must be Annotated with @Controller.


Podría tratar de agregar una anotación @Controller sobre su clase myController y probar la siguiente url /<webappname>/my/hello.html . Esto se debe a org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping prepends / my a cada RequestMapping en la clase myController.


Resolví mi problema con: Java Build Path -> JRE biblioteca del sistema -> Edit -> Alternate JRE -> -> Finish

Como estaba configurado para la carpeta JDK, por lo que estaba dando excepción


Si dependes de Spring Social , verifica que hayas configurado un bean controlador web:

import org.springframework.context.annotation.Bean; import org.springframework.social.connect.web.ConnectController; import org.springframework.social.connect.ConnectionFactoryLocator; import org.springframework.social.connect.ConnectionRepository; ... @Bean public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) { return new ConnectController(connectionFactoryLocator, connectionRepository); }


Si desea servir archivos .html, debe agregar este <mvc:default-servlet-handler /> en su archivo de configuración de primavera. Los archivos .html son estáticos. Espero que esto pueda ayudar a alguien.


Si está utilizando Maven, agréguelos a su pom.xml

<dependency> <groupid>javax.servlet</groupid> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope>

<dependency> <groupid>taglibs</groupid> <artifactId>standard</artifactId> <version>1.1.2</version> <scope>runtime</scope>


Si está utilizando maven como herramienta de compilación para el proyecto, cree su proyecto correctamente, sus cambios en el código y los archivos xml no se reflejarán después de las compilaciones.


Si está utilizando un código Java basado en la configuración Spring MVC, habilite DefaultServletHandlerConfigurer en el objeto WebMvcConfigurerAdapter .

@Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); }


Si estás usando

<mvc:annotation-driven/>

asegúrese de que spring-servlet.xml tenga

<context:component-scan base-package="com.....controller" /> tag.

Básicamente, debe incluir todos los paquetes donde haya utilizado la anotación en su código java.


También me enfrenté al mismo problema, pero después de poner el espacio de nombres a continuación, funciona bien:

xmlns:mvc="http://www.springframework.org/schema/mvc"


Tenía exactamente el mismo error y me llevó mucho tiempo intentar entenderlo. Lo más probable es que se deba a errores de compilación, las clases de Java no se publicaron en su servlet. Verifique esto yendo al servidor que está utilizando / tmp1 / wtpwebapps [NOMBRE_PROYECTO] / WEB-INF / classes / e intente encontrar sus clases de controlador para ver si se han publicado o no. De lo contrario, debe llegar al final de los errores de compilación.


Tratar:

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

¡Trabajó para mi!


Tuve el mismo problema y después de investigar mucho, descubrí que las clases no se publicaban en mi carpeta de destino. Así que había ejecutado los siguientes dos comandos desde cmd

  1. mvn instalación limpia
  2. paquete mvn

Sorprendentemente, pude acceder a la página y el error desapareció. Lo mismo se puede verificar desde la carpeta de destino donde podrá encontrar las clases compiladas que faltaban antes.


Verifique su directorio [PROJECT_NAME]/target/classes para ver si myController.class se genera o no.

De lo contrario, compruebe todo el código fuente de Java si existen errores de compilación.


si está utilizando maven, ejecute maven install command antes de ejecutar su aplicación web en un servidor, ya que generará un archivo de clase para su controlador y en mi experiencia eso es lo que le ha faltado a su aplicación.