Caelum fj21 - Exercício 11.6 Spring - Erro 404 [RESOLVIDO]

10 respostas
ERVER

Boa tarde pessoal,

Estou tentando resolver o exercício 11.6 da fj21 da Caelum, mas dá erro 404:

HTTP Status 404 - /fj21-tarefas/olaMundoSpring

--------------------------------------------------------------------------------

type Status report

message /fj21-tarefas/olaMundoSpring

description The requested resource (/fj21-tarefas/olaMundoSpring) is not available.

Sendo que no tomcat não gera erro algum no log.

Tô nisso desde ontem, e nada de funcionar.

To com o arquivo de conf do Spring assim (spring-context.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:context="http://www.springframework.org/schema/context"  
  xmlns:mvc="http://www.springframework.org/schema/mvc"  
  xsi:schemaLocation="http://www.springframework.org/schema/mvc  
    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd  
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.1.xsd">  

<context:component-scan base-package="br.com.caelum.tarefas.controller" /> 
<mvc:annotation-driven /> <mvc:resources mapping="/resources/**" location="/resources/" />

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
<property name="prefix" value="/WEB-INF/views/"/> 
<property name="suffix" value=".jsp"/> 
</bean> 

</beans>

Meu web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>fj21-tarefas</display-name>


	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<filter>
		<filter-name>FiltroConexao</filter-name>
		<filter-class>br.com.caelum.tarefas.filtro.FiltroConexao</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>FiltroConexao</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>

</web-app>

A classe OlaMundoController:

package br.com.caelum.tarefas.controller;

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

@Controller
public class OlaMundoController {

	@RequestMapping("/olaMundoSpring")
	public String execute() {
	System.out.println("Executando a lógica com Spring MVC");
	return "ok";
    }
}

E a view ok.jsp em WEB-INF/views

<%@ 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>
<body>
<h2>Olá mundo com Spring MVC!</h2>
</body>
</html>

O tomcat tá funcionando perfeitamente, nem imagino o porque de não estar funcionando se estou seguindo a apostila.

Se alguem puder dar uma ajuda.

Muito obrigado desde já.

Abraços.

10 Respostas

DaniloAndrade

boa tarde,

cara to olhando o que vc postou, não vi nada de errado a principio a não ser a duplicação do seu web.xml

mas so por curiosidade, vc já colocou um break point no metodo do seu controller pra ve se está chegando nele

ERVER

Olá DaniloAndrade,

Boa! Não tinha pensado nisso, vou fazer e posto aqui.

Muito obrigado!

Abraços.

ERVER

Não chegou a executar o método, deve ser erro de configuração mesmo, né?

Estranho é que já fiz tudo 4 vezes, prestei atenção em cada linha, e mesmo assim nada. E nem sequer consigo imaginar o problema.

ERVER

Acidentalmente chamei uma página que não existe nesse projeto, e deu 404 nela, e após isso chamei o /olaMundoSpring novamente deu certo!
O estranho é que tenho que fazer isso, pois de primeira a /olaMundoSpring nunca vai, da 404.

Que coisa louca é essa?

ERVER

Novamente parou, e olha que nem mexi em nada!

ERVER

Era o filtro que me esqueci de suprimir, que estava declarado no web.xml.

Retirei ele e funcionou certinho.

Muito obrigado.

Abraços.

B

AI galera. To enfrentando o porblema do error 404 no porjecto do spring

O meu web.xml eh o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>fj21spring</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	
	<servlet>
	 <servlet-name>springmvc</servlet-name>
	 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	 <init-param>
	  <param-name>contextConfigLocation</param-name>
	  <param-value>/WEB-INF/spring-context.xml</param-value>
	 </init-param>
	 <load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
	 <servlet-name>springmvc</servlet-name>
	 <url-pattern>/*</url-pattern>
	</servlet-mapping>	
</web-app>

O meu spring-context.xml eh o seguinte:

<?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:context="http://www.springframework.org/schema/context"
		xmlns:mvc="http://www.springframework.org/schema/mvc" 
		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">


<mvc:annotation-driven />
<context:component-scan base-package="mz.co.bma.tarefas" />

	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	 <property name="prefix" value="/WEB-INF/views/"/>
	 <property name="suffix" value=".jsp"/>
	</bean>
</beans>

O meu controller eh:

package mz.co.bma.tarefas;

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

@Controller
public class OlaMundoController {
	
	@RequestMapping("/olaMundo")
	public String execute()
	{
		System.out.println("Executando a logica com Spring MVC");
		return "ok";
	}

}

Alguma luz no fundo do tunel please?

B

Ai galera.

Alguém me pode ajudar???

claudsan

e ai conseguiu resolver ?

mauriicio

Fala pessoal,

Estava com o mesmo problema. Pesquisei em vários locais e achei algumas soluções sem muita explicação. Analisando o meu arquivo Web.xml, fiz uma pequena alteração:

Antes…

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>fj21-tarefas</display-name>

  <welcome-file-list>
    <welcome-file>/WEB-INF/views/index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>
  		org.springframework.web.servlet.DispatcherServlet
  	</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>
  			/WEB-INF/spring-context.xml
  		</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>	  
  
</web-app>

…Depois

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>fj21-tarefas</display-name>

  <welcome-file-list>
    <welcome-file>/WEB-INF/views/index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>
  		org.springframework.web.servlet.DispatcherServlet
  	</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>/WEB-INF/spring-context.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>	  
  
</web-app>

E por incrivel que pareca, voltou a funcionar. Só fiz colocar o valor da tag na mesma linha e voltou a funcionar. Não tenho explicação.

Criado 29 de junho de 2012
Ultima resposta 30 de ago. de 2013
Respostas 10
Participantes 5