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

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):

[code]<?xml version="1.0" encoding="UTF-8"?>

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

[/code]

Meu web.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

fj21-tarefas

<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>

[/code]

A classe OlaMundoController:

[code]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";
}

}[/code]

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

[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>

Olá mundo com Spring MVC!

[/code]

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.

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

Olá DaniloAndrade,

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

Muito obrigado!

Abraços.

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.

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?

Novamente parou, e olha que nem mexi em nada!

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

Retirei ele e funcionou certinho.

Muito obrigado.

Abraços.

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

O meu web.xml eh o seguinte:

[code]<?xml version="1.0" encoding="UTF-8"?>

fj21spring

index.html
index.htm
index.jsp
default.html
default.htm
default.jsp

<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>	

[/code]

O meu spring-context.xml eh o seguinte:

[code]<?xml version="1.0" encoding="UTF-8"?>

<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>

[/code]

O meu controller eh:

[code]
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";
}

}[/code]

Alguma luz no fundo do tunel please?

Ai galera.

Alguém me pode ajudar???

e ai conseguiu resolver ?

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.