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

10 respostas
E

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

D

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

E

Olá DaniloAndrade,

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

Muito obrigado!

Abraços.

E

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.

E

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?

E

Novamente parou, e olha que nem mexi em nada!

E

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

C

e ai conseguiu resolver ?

M

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