--- title: Guia de 1 minuto --- # Um Controller simples Chamaremos de `Controller` as classes contendo a lógica de negócio do seu sistema. São as classes que alguns frameworks podem vir a chamar de actions ou services, apesar de não significarem exatamente a mesma coisa. Com o jar ou dependencia do VRaptor em seu projeto, basta criar os seus controllers para receber as requisições e começar a construir seu sistema. Um controller simples seria: ~~~ #!java /* * Anotando seu controller com @Controller, seus métodos públicos ficarão disponíveis * para receber requisições web. */ @Controller public class ClientsController { /* * Você pode injetar as dependências da sua classe adicionando a anotação @Inject, * e o VRaptor com CDI vai se encarregar de criar ou localizar essas dependências * pra você. Outra alternativa é adicionar o @Inject no construtor de sua classe, * para que isso funcione você precisará adicionar também um construtor default. */ @Inject private ClientDao dao; /* * Todos os métodos públicos do seu controller estarão acessíveis pela web. * Por exemplo, o método form pode ser acessado pela URI /clients/form e * vai redirecionar para a jsp /WEB-INF/jsp/clients/form.jsp */ public void form() { // código que carrega dados para checkboxes, selects, etc } /* * Você pode receber parâmetros no seu método e o VRaptor tentará popular os * campos dos parâmetro de acordo com a requisição. Se houver na requisição: * * custom.name=Paulo Silveira * custom.address=R.Vergueiro * * então teremos os campos name e address do Client custom populados com * Paulo Silveira e R.Vergueiro via getters e setters * * URI: /clients/add * view: /WEB-INF/jsp/clients/add.jsp */ public void add(Client custom) { dao.save(custom); } /* * O retorno do seu método é exportado para a view. Nesse caso, como o retorno é * uma lista de clientes, a variável acessível no jsp será ${clientList}. * * URI: /clients/list * view: /WEB-INF/jsp/clients/list.jsp */ public List list() { return dao.listAll(): } /* * Se o retorno for um tipo simples, o nome da variável exportada será o nome da * classe com a primeira letra minúscula. Nesse caso, como retornou um Client, a * variável na jsp será ${client}. * * Devemos ter um parâmetro da requisição id=5 por exemplo, e o VRaptor vai * fazer a conversão do parâmetro em Long, e passar como parâmetro do método. * * URI: /clients/view * view: /WEB-INF/jsp/clients/view.jsp */ public Client view(Long id) { return dao.load(id); } } ~~~ Repare como essa classe está completamente independente da API de `javax.servlet`. O código também está extremamente simples e fácil de ser testado como unidade. O VRaptor já faz várias associações para as URIs como default, por exemplo: ~~~ /client/form invoca form() /client/add invoca add(client) populando o objeto client com os parâmetros da requisição /clients/list invoca list() e devolve ${clientList} ao JSP /clients/view?id=3 invoca view(3l) e devolve ${client} ao JSP ~~~ Mais para a frente veremos como é fácil trocar a URI `/clients/view?id=3` por `/clients/view/3`, deixando a URI mais amigável e elegante. O `ClientDao` será injetado pelo VRaptor, como também veremos adiante. Você já pode passar para o [Guia inicial de 10 minutos](/pt/docs/guia-de-10-minutos). ###Dúvidas Se durante a leitura da documentação você tiver dúvidas, procure ajuda no GUJ ou acesse nossa lista de discussão.