Spring MVC 3 + MongoDB - Parte 1

Aproveitando o momento que está em alta o NoSQL, resolvi criar esse artigo para testar na prática a utilização de um banco de dados não relacional A idéia desse artigo é fazer um projeto do ZERO com Spring MVC 3 + MongoDB A primeira que ouvi falar do movimento NoSQL foi através do CouchDB, mas na época eu fiz pouco caso Só por curiosidade, a primeira edição do http://en.wikipedia.org/wiki/NoSQL foi em 13/Agosto/2009, é algo bem recente Este post ficará dividido em duas parte Parte 1) Criação de um projeto com Spring MVC 3 Parte 2) Configuração do MongoDB Para criar o projeto com Spring MVC vou utilizar o SpringSource Tool Suite (versão 2.3.2.RELEASE), citado no post SpringSource Tools Suite – E não é que é bom O SpringSource Tools Suite facilita todo o processo de criação de uma arquitetura inicial com Spring MVC Criação do Projeto Para criar um novo projeto File -> New -> Other ... Selecione o Wizard SpringSource Tool Suite -> Spring Template Project Selecione o template Spring MVC Project Configurações básicas do projeto Voilà - Projecto criado Junto com o SpringSource Tools Suite vem o SpringSource Cloud Foundry v1.0 (para o cloudfoundry) e SpringSource tc Server v6.0 (tomcat customizado), a parte eu instalei o Tomcat 6 Para adicionar sua aplicação no Tomcat basta botão direito sobre o Tomcat Add and Remove... -> Selecionar o projeto (spring-mongodb) -> Add -> Finish Após iniciar o Tomcat (botão direito sobre o Tomcat -> Start)  e acessar http://localhost:8080/spring-mongodb no navegador Voilà (2) BUG
org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/spring-mongodb/app/styles/site.css] in DispatcherServlet with name 'Spring MVC Dispatcher Servlet'
O Spring MVC Project vem por padrão com 3 pastas: images, scripts e styles Só que se você tentar inserir um recursos dessas pastas, como o include css abaixo welcome.jsp [html] <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html> <head> <title>Welcome</title> <link rel="stylesheet" type="text/css" href="/spring-mongodb/styles/site.css" /> </head> <body> <h1> Congratulations! You're running Spring! </h1> </body> </html> [/html] Retornará o org.springframework.web.servlet.PageNotFound, pois o Spring tentará resolver o site.css como uma url de Controller/Action Para resolver isso basta alterar o urlrewrite.xml [xml] <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd"> <urlrewrite default-match-type="wildcard"> <rule> <from>/</from> <to>/app/welcome</to> </rule> <rule> <from>/scripts/**</from> <to>/scripts/$1</to> </rule> <rule> <from>/styles/**</from> <to>/styles/$1</to> </rule> <rule> <from>/images/**</from> <to>/images/$1</to> </rule> <rule> <from>/**</from> <to>/app/$1</to> </rule> <outbound-rule> <from>/app/**</from> <to>/$1</to> </outbound-rule> </urlrewrite> [/xml] Essa foi a solução que eu postei no stackoverflow e forum.springsource Habilitando o uso de REST no Spring MVC 3 web.xml [xml] <filter> <filter-name>httpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>httpMethodFilter</filter-name> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> </filter-mapping> [/xml]