Spring MVC 3 + MongoDB - Parte 1
03 Sep 2010
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]