Introdução e integração das tecnologias VRaptor 4 Introdução e integração das tecnologias
Requisitos Eclipse Java (JDK) Maven Tomcat MySQL
O que é VRaptor 4 ?
Preparando ambiente
Criando projeto maven
Configurando .. Webapp – fica os arquivos web da aplicação; Necessário criar a pasta WEB-INF para adicionar o arquivo web.xml; Src/main/resources – configurações do projeto; Adicionar os arquivos log4j.xml e hibernate.cfg.xml; Adicionar pasta META-INF, nele vai ficar os arquivos de configuração: beans.xml e validation.xml; Adicionar em src/main/webapp/META-INF o arquivo MANIFEST.MF.
Criando sistema Local onde fica as classes java src/main/java
Como utilizar o VRaptor ? É necessário adicionar a dependência dele ao maven, o mesmo vale para utiliza hibernate, para saber quais são as dependências necessárias para utilizar o VRaptor4 acesse: http://www.vraptor.org/pt/docs/dependencias-e-pre-requisitos/ Agora após configurar as dependências corretamente você já pode iniciar seu projeto
Entidades @Entity public class Aluno implements Serializable{ private static final long serialVersionUID = -6037655220185260345L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String nome; @ManyToOne @JoinColumn(name = "escola") private Escola escola; }
Persistência @RequestScoped public class AlunoDAO{ private final Session session; /** * @deprecated CDI eyes only */ protected AlunoDAO() { this(null); } @Inject public AlunoDAO(Session session) { this.session = session;
Controle @Controller @Named public class EscolaController { private final Result result; private final EscolaDAO escolaDAO; private final AlunoDAO alunoDAO; /** * @deprecated CDI eyes only */ protected EscolaController() { this(null, null, null); } @Inject public EscolaController(Result result, EscolaDAO escolaDAO, AlunoDAO alunoDAO) { this.result = result; this.escolaDAO = escolaDAO; this.alunoDAO = alunoDAO;
Visão <h1>${escola.nome }</h1> <c:iftest="${not empty alunos}"> <h3class="color-primary">ListadeAlunos</h3> <tableclass="table table-striped table-bordered table-hover personalized-table-simple"> <thead> <tr> <thwidth="10%"class="text-center">Id</th> <thwidth="90%"class="text-center">Nome</th> </tr> </thead> <tbody> <c:forEachvar="aluno"items="${alunos}"varStatus="s"> <td>${aluno.id}</td> <td>${aluno.nome}</td> </c:forEach> </tbody> </table> </c:if>
Convenção Para o seguinte trecho de código do EscolaController: @Get @Path("/") publicvoid index(){ List<Escola>escolas = escolaDAO.listaTudo(); result.include("escolas", escolas); }
A convenção de redirecionamento de páginas após a lógica é a seguinte: /WEB-INF/jsp/{nomeDoController}/{lógica}.jsp Para nosso caso, temos a seguinte situação: • {nomeDoController} = Escola • {lógica} = index O VRaptor vai fazer algumas modificações nesses valores. A primeira letra do nome do controller, que para nós é o nome da classe, será passado para minúsculo. O resto do nome continuará igual. Já o nome da lógica continuará igual, mas sem os parênteses. Então o VRaptor vai considerar os seguintes valores: • {nomeDoController} = escola E a página que ele buscará será a seguinte: /WEB-INF/jsp/escola/index.jsp Utilizamos o @Path(“/”), isso significa que agora a url padrão não vai mais ser válida então a url inicial “/” vai redirecionar para a lógica index, e o @Get serve para indicar que a lógica é do tipo GET. O result.include(“escolas”, escolas), após executar o que está em seu corpo e antes do controler carregar a pagina index.jsp ao carregar a jsp vai ser incluso a variável escolas que contem a lista de escolas obtidas pelo EscolaDAO.
FIM