spring - servlet - No se encontró una asignación para la solicitud HTTP con URI
spring mvc pdf (16)
Esta pregunta ya tiene una respuesta aquí:
Mi manejador reenvió a internalresourceview ''apiForm'' pero luego aparece el error 404 RequestURI = / WEB-INF / pages / apiForm.jsp. Estoy seguro de que apiForm.jsp está ubicado en / WEB-INF / pages /
13: 45: 02,034 DEPURACIÓN [org.springframework.web.servlet.view.JstlView] - Reenvío al recurso [/WEB-INF/pages/apiForm.jsp] en InternalResourceView ''apiForm''
13: 45: 02,035 DEBUG [org.springframework.web.servlet.DispatcherServlet] - DispatcherServlet con el nombre ''testapp2'' que determina el valor de último modificación para [/WEB-INF/pages/apiForm.jsp]
13: 45: 02,038 DEBUG [org.springframework.web.servlet.DispatcherServlet] - No se encontró controlador en getLastModified
13: 45: 02,038 DEBUG [org.springframework.web.servlet.DispatcherServlet] - DispatcherServlet con el nombre ''testapp2'' solicitud de procesamiento para [/WEB-INF/pages/apiForm.jsp]
13: 45: 02,038 WARN [org.springframework.web.servlet.PageNotFound] - No se encontró una asignación para la solicitud HTTP con URI [/WEB-INF/pages/apiForm.jsp] en DispatcherServlet con el nombre ''testapp2''
13: 45: 02,045 DEBUG [org.springframework.web.servlet.DispatcherServlet] - Solicitud completada con éxito
13: 45: 02,048 DEBUG [org.springframework.web.servlet.DispatcherServlet] - Solicitud completada con éxito
así es como se ve mi dispatcher.xml ...
<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/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
"/ openStudentPage" es la página que quiero abrir primero, lo hice:
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(Model model) {
return "redirect:/openStudentPage";
}
@RequestMapping(value = "/openStudentPage", method = RequestMethod.GET)
public String listStudents(Model model) {
model.addAttribute("student", new Student());
model.addAttribute("listStudents", this.StudentService.listStudents());
return "index";
}
Con Spring 3.1 y Tomcat 7 recibí el siguiente error:
org.springframework.web.servlet.DispatcherServlet noHandlerFound No se encontró una asignación para la solicitud HTTP con URI [/ baremvc /] en DispatcherServlet con el nombre ''appServlet''
Y necesitaba agregar a la siguiente configuración web.xml:
<welcome-file-list>
<welcome-file/>
</welcome-file-list>
¡Y la aplicación funcionó!
Creo que leí todo el Internet para descubrir cómo obtener sitemesh para manejar mis rutas html sin extensión + rutas API sin extensión. Estaba envuelto en una chaqueta recta entendiendo esto, cada vuelta parecía romper algo más. Entonces finalmente encontré esta publicación.
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/views/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/decorators/*</url-pattern>
</servlet-mapping>
Ingrese esto en su dispatcher-servlet.xml
<mvc:default-servlet-handler/>
Desafortunadamente, este es un mensaje de error de clase bastante amplio. Otra cosa que podría estar yendo mal es si te faltan algunas clases / tarros. Por ejemplo, si le falta el archivo jar de expresión de resorte , el servlet de envío no podrá ubicar su controlador sin importar qué tanto lo intente y cuán correcto esté configurado todo lo demás.
Esto también podría ocurrir cuando tu aplicación no se compila, pero aún se lanza en Tomcat. Cuando vi que esto sucedía, no se estaba compilando porque el proyecto tenía un JDK "específico para el proyecto" especificado, y el código se verificó en una máquina que no tenía ese JDK específico. Eclipse entró en incumplimiento de JRE en lugar de JDK, y luego la aplicación no se compiló.
Para solucionarlo en nuestro caso específico, simplemente desactivamos "Configuración específica del proyecto" aquí:
"Proyecto | Propiedades | Compilador Java"
Aquí hay información más detallada sobre cómo hacer esto: https://.com/a/2540730/26510
He encontrado este problema en Eclipse Luna EE. Mi solución fue simplemente reiniciar el eclipse y mágicamente comenzó a cargar el servlet correctamente.
La solución que me ayudó es: no asignar el DispatcherServlet
a /*
, asignarlo a /
. La configuración final es entonces:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
...
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Lo que necesita es tener un controlador que responda a la url primero que luego representa su jsp. Vea este enlace para una solución .
Parece que DispatcherServlet está tratando de procesar la solicitud de apiForm.jsp, lo que me sugiere que su mapeo de servlet web.xml está dirigiendo las solicitudes de ese espacio a DispatcherServlet.
Podrías tener algo como esto?
<servlet-mapping>
<servlet>dispatcher</servlet>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Intente llamar a sus controladores con una extensión diferente (por ejemplo, .do) y actualice el mapeo de servlets para adaptarlo
<servlet-mapping>
<servlet>dispatcher</servlet>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Sí, sé que llego tarde a esta fiesta pero podría ayudar a otros.
El contenedor de servlets elige la asignación según la ruta más larga que coincida. De modo que puede poner esta asignación en sus JSP y se elegirá sobre el mapeo / *.
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/pages/*</url-pattern>
</servlet-mapping>
En realidad, para Tomcat eso es todo lo que necesitará ya que jsp es un servlet que existe de manera inmediata. Para otros contenedores, debe buscar el nombre del servlet JSP o agregar una definición de servlet como:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
Se puede hacer un control simple. Actualmente estoy usando Spring MVC architecture junto con hibernate. Me perdí de escribir las anotaciones de @Controller justo encima del nombre de la clase. Esto me estaba causando el problema.
@Controller
public class MyClass{
...
}
Espero que esta simple comprobación resuelva tu problema.
Simplemente agregue <mvc:default-servlet-handler />
a su configuración de DispatcherServlet y ¡listo!
Tuve el mismo problema, por supuesto que hubo una pequeña diferencia. La historia era que cuando quitaba la línea de abajo:
<mvc:resources mapping="/resources/**" location="classpath:/resources/" />
Todo estaba bien, pero en presencia de esa línea, el mismo error aumenta.
Después de algunos intentos de prueba y error, tengo que agregar la siguiente línea al archivo de contexto de mi aplicación de primavera:
<mvc:annotation-driven />
¡Espero eso ayude!
cambie el despachador de su nombre de servlet a cualquier otro nombre. Porque el despachador es un nombre predefinido para las versiones spring3, spring4.
<servlet>
<servlet-name>ahok</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ashok</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
obtendrá un No mapping found for HTTP request with URI
error No mapping found for HTTP request with URI
si escaneó el paquete incorrecto
por ejemplo, su controlador está en my.package.abc pero lo pone por error
<context:component-scan base-package="my.package.efg*" />
o
@ComponentScan("my.package.efg*")
que en el sentido, su controlador no se escanea en el contexto de la aplicación web, cuando la solicitud entra no solo en la url, ¡sino que no se encuentra toda la clase!
La misma respuesta que Brad Parks ... más texto sin embargo
Tuve exactamente el mismo problema y probé las soluciones anteriores junto con muchas otras, todas con resultados negativos. Incluso comencé con un nuevo y nuevo env env y simplemente instalé una plantilla spring-mvc-y traté de ejecutarlo directamente después de la instalación (debería funcionar, pero falló para mí)
Para mí, el problema era que estaba usando jdk1.6 en mi proyecto, pero mi entorno de ejecución seleccionado en eclipse era jdk1.7. La solución fue cambiar la configuración del entorno de ejecución específico del proyecto para que este proyecto se establezca en jdk1.6. Haga clic derecho en proyecto -> Propiedades -> Compilador Java -> Verifique "Habilitar configuraciones específicas del proyecto" si aún no está marcado -> seleccione el jdk apropiado (o agregue si no está instalado).
Espero que esto pueda ayudar a alguien y ahorrarle tiempo a esas personas, porque he pasado los últimos días buscando la respuesta en cada rincón de Internet. Accidentalmente me encontré con él cuando empecé a desesperarme y buscar la solución en áreas donde (de acuerdo con mi cerebro) era menos probable que se encontrara. =)
Mis 2 centavos. ¡Gracias!
Editar1: usar configuraciones específicas del proyecto
Edit2: Me acabo de dar cuenta de que Brad Parks ya respondió esto en este mismo hilo. Bueno, al menos obtuve el "Editor", fragmento de este = D