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