Framework MVC
Francisco do Nascimento
PSC - Programação de Softwares
Corporativos
UNIBRATEC, novembro de 2008
Arquitetura MVC
MVC + Front Controller
Frameworks

Struts - http://struts.apache.org
Mentawai - http://www.mentaframework.org
Tapestry - http://tapestry.apache.org/tapestry5
WebWork - http://www.opensymphony.com/webwork
Neo Framework - http://www.neoframework.org
Spring MVC - http://www.springframework.org/
JSF - http://java.sun.com/javaee/javaserverfaces/

VRaptor - http://www.vraptor.com.br






Sobre VRaptor




Projeto Open Source
Desenvolvido pelo pessoal da Caelum
Framework voltado para desenvolvimento
ágil e de alta produtividade
Baseado no conceito de ‘Convenção ao
invés de Configuração’
Configurando o ambiente



Baixar do site a última versão
http://www.vraptor.com.br/download.jsp
Adicionar os .jar baixados a pasta WEBINF\lib do seu projeto
Acrescentar ao web.xml:
<servlet>
<servlet-name>vraptor2</servlet-name>
<servlet-class>org.vraptor.VRaptorServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>vraptor2</servlet-name>
<url-pattern>*.logic</url-pattern>
</servlet-mapping>
Lógica do VRaptor (Controller)

Utiliza componentes para executar as lógicas
de negócio (Controller)

Adicionar @Component na classe ABCLogic
@Component
public class UsuarioLogic{
public void buscar(){
}
}
Acessando a lógica de negócio no
Controller
http://localhost:8080/nomeProjeto/controlador.metodo.logic
 controlador



metodo


Nome da classe sem o ‘Logic’ e primeira letra minúscula.
Valor da string definida no annotation Component
@Component(“nomelogica”)
Nome do método a ser executado
logic

Definido no web.xml
Exemplo:
http://localhost:8080/projeto/usuario.buscar.logic

View

Controller direciona para um view (jsp) de
nome ‘metodo.ok.jsp’ na pasta ‘componente’.

Retorno condicional

Retornar uma String no método da lógica que
servirá de sufixo no nome do JSP no lugar do ‘ok’.
Redirecionamento

Podemos definir outro direcionamento para
ser utilizada após a execução da lógica no
arquivo de propriedades: views.properties
Passagem de parâmetros
// http://localhost:8080/projeto/usuario.excluir.logic?id=10
@Component
public class UsuarioLogic{
@Parameter
int id;
public void excluir(){
Fachada.getInstance().excluirUsuario(id);
}
}
Passagem de objetos: View > Controller
<FORM ACTION=usuario.salvar.logic>
Nome: <input type=text name=us.nome>
Idade: <input type=text name=us.idade>
<input type=submit value=Salvar>
</FORM>
@Component
public class UsuarioLogic{
public void salvar(Usuario us){
Fachada.getInstance().inserir(us);
}
}
Passagem de objetos: Controller > View
http://.../projeto/usuario.buscar.logic?id=5
@Component
public class UsuarioLogic{
@Out(scope=ScopeType.SESSION)
private Usuario usuario;
public void buscar(int id){
this.usuario = Fachada.getInstance()
.consultar(id);
}
}
<!– web/usuario/buscar.ok.jsp -->
<FORM ACTION=usuario.salvar.logic>
Nome: <input type=text name=us.nome value=“${usuario.nome}”>
Idade: <input type=text name=us.idade value=${usuario.idade}>
<input type=submit value=Salvar>
</FORM>
Referências





http://www.vraptor.com.br
http://www.caelum.com.br/downloads/apostila/caelu
m-java-web-fj28.pdf
http://www.vraptor.org/pt/first-example.html
http://celodemelo.wordpress.com/2007/05/12/vantag
ens-do-vraptor/
http://www.lucas.hgt.nom.br/wordpress/?p=14
Download

PSC_VRaptor