$type=slider$snippet=hide$cate=0

Java - Criando uma aplicação em 3 camadas (MVC)

SHARE:

O passo a passo para a criação de uma aplicação usando Java, com Banco de Dados (BD) chamado H2 na estrutura MVC (Modelo, Visão e Controle)....

O passo a passo para a criação de uma aplicação usando Java, com Banco de Dados (BD) chamado H2 na estrutura MVC (Modelo, Visão e Controle).
Será um exemplo com uma única classe sendo armazenada no BD.


Para os códigos que seguem abaixo, em todas as classes deve-se incluir o package correto e adicionar os imports necessários. Observe a divisão abaixo:
 - gui (Visão)
- LoginGUI
- ApiculturaGUI
- ClienteGUI
- controller (Controle)
- ApiculturaController
- IncluirClienteController
- persistência (Modelo)
- ClienteDAO
- FactoryConnection
- dominio (Modelo)
- Cliente



A primeira classe contém o famoso psvm (public static void main), que inicia a execução da aplicação:

public class Apicultura {
public static void main(String[] args) {
ApiculturaController app = new ApiculturaController();
}
}



A classe ApiculturaController.java controla a janela de Login e a que contém o Menu.
Se o usuário acertar a senha, que é única, a janela com menu será apresentada, caso contrário a aplicação é finalizada.
São instanciadas as classes com a interface gráfica e aqui são tratados os eventos.

public class ApiculturaController {
private ApiculturaGUI gui = null;
private LoginGUI guiLog = null;

public ApiculturaController() {
guiLog = new LoginGUI();
guiLog.adicionarOuvinteLogin (new OuvinteLogin());
}

class OuvinteLogin implements ActionListener {
public void actionPerformed (ActionEvent ev){
if (ev.getActionCommand() == "OK") {
String senha = String.valueOf(guiLog.pfSenha.getPassword());
if (senha.compareTo("SENHA")==0) {
guiLog.dispose(); // fecha a janela de login
gui = new ApiculturaGUI();
gui.adicionarOuvinte(new OuvinteIncluir());
}
else {
JOptionPane.showMessageDialog(null, "Senha Inválida!");
System.exit(0);
}
}
else System.exit(0);
}
}

class OuvinteIncluir implements ActionListener {
public void actionPerformed (ActionEvent ev) {
Object fonte = ev.getSource();
if (ev.getSource() instanceof JMenuItem) {
if (fonte == gui.mcSair) {
System.exit (0);
}
else
if (fonte == gui.mcCadastro) {
IncluirClienteController clienteController =
new IncluirClienteController();
gui.desktop.add(clienteController.guiCli);
}
}
}
}
}



A classe LoginGUI.java deve conter os componentes em seu método construtor e a adição dos eventos, que são tratados na classe de controle (ApiculturaController.java).

public class LoginGUI extends JFrame {
// declarar os componentes aqui como public

public LoginGUI() {
// tratar a parte gráfica aqui
}

public void adicionarOuvinteLogin (ActionListener ouvinte) {
this.btOK.addActionListener(ouvinte);
this.btCancelar.addActionListener(ouvinte);
}
}

Um exemplo para a interface gráfica de Login é a seguinte:

Login


A classe ApiculturaGUI.java é a que contém o menu, usando as classes DesktopPane e JInternalFrame. Observe a implementação:

public class ApiculturaGUI extends JFrame {
public JDesktopPane desktop;
public JMenuBar barraDeMenu;
public JMenuItem mcCadastro, mpCadastro, mcSair, miSobre;

public ApiculturaGUI() {
this.setTitle("Sistema de Controle de Produção Apícula");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

barraDeMenu = criaMenu();
this.setJMenuBar(barraDeMenu);

desktop = new JDesktopPane();
this.setContentPane(desktop);
this.setVisible(true);
}

public JMenuBar criaMenu() {
// crie seu menu com os componentes JMenu, JMenuBar e JMenuItem
}

public void adicionarOuvinte (ActionListener ouvinte) {
this.mcCadastro.addActionListener(ouvinte);
this.mcSair.addActionListener(ouvinte);
}
}

Como aconteceu na classe LoginGUI.java, a classe ApiculturaGUI deve conter os componentes para a criação do menu em seu método construtor e a adição dos eventos, que são tratados na classe de controle (ApiculturaController.java).

Veja como fica o Front-end da aplicação:

Menu
Observe que o JPanel contém uma imagem de fundo. Para maiores detalhes, acesse a explicação clicando aqui.


A próxima classe é a IncluirClienteController.java que chama a interface gráfica para a classe Cliente e trata os eventos que serão adicionados pela classe ClienteGUI.java.

public class IncluirClienteController {
public ClienteGUI guiCli;

public IncluirClienteController() {
guiCli = new ClienteGUI();

guiCli.adicionarOuvinteCliente1 (new OuvinteIncluirCliente1());
}

class OuvinteIncluirCliente1 implements ActionListener {
public void actionPerformed(ActionEvent ev){
Object fonte = ev.getSource();
if (fonte == guiCli.bSaiCli)
guiCli.dispose();
else if (fonte == guiCli.bLimCli)
guiCli.limparCampos();
else if (fonte == guiCli.bExcCli) {
ClienteDAO clienteDAO = new ClienteDAO();
clienteDAO.excluirCliente(guiCli.tfcodcli.getText());
guiCli.limparCampos();
}
else if (fonte == guiCli.bConCli) {
ClienteDAO clienteDAO = new ClienteDAO();
Cliente cliente = clienteDAO.consultarCliente();
if (cliente != null)
mostrarCliente(cliente);
}
else if (fonte == guiCli.bIncCli) {
ClienteDAO clienteDAO = new ClienteDAO();
Cliente cliente = obterCliente();
clienteDAO.incluirCliente(cliente);
guiCli.limparCampos();
}
else if (fonte == guiCli.bAltCli)
ClienteDAO clienteDAO = new ClienteDAO();
Cliente cliente = obterCliente();
clienteDAO.alterarCliente(cliente);
}
}
}
}

public Cliente obterCliente(){
Cliente cliente = new Cliente();
// Aqui deve-se obter todos os dados contidos nos componentes
// e preencher o objeto cliente.
// Exemplo: cliente.setNomCli(guiCli.tfnomcli.getText());
return cliente;
}

public void mostrarCliente(Cliente cliente){
// Aqui deve-se obter todos os dados contidos no objeto cliente
// e preencher os componentes da interface gráfica
// Exemplo: guiCli.tfnomcli.setText(cliente.getNomCli());
}
}



A classe ClienteGUI.java contém apresentação da interface gráfica para tratar os dados do Cliente.
Veja o exemplo:

Interface_Cliente
Veja o trecho do código:

public class ClienteGUI extends JInternalFrame {
// declarar os componentes da interface

public ClienteGUI() {
// criar a interface gráfica
}

public void adicionarOuvinteCliente1 (ActionListener ouvinte) {
// adicionar os ouvintes aos botões
// Ex.: this.bIncCli.addActionListener(ouvinte);
}

public void limparCampos() {
// comandos para limpar os componentes
}
}

O menu está no JDesktopPane e as demais janelas serão JInternalFrame.


A classe que controla Cliente (IncluirClienteController.java) também precisa da classe Cliente.java que tem a definição dos atributos e dos métodos acessores (get) e modificadores (set).
Veja parte do código:

public class Cliente {
// declare todos os atributos como private
private int codcli;
private String nomcli;

public Cliente() {
super();
}

public Cliente (int codcli, String nomcli){
super();
this.codcli = codcli;
this.nomcli = nomcli;
}

public int getCodCli(){
return this.codcli;
}

public String getNomCli(){
return this.nomcli;
}

public void setCodCli(int codcli) {
this.codcli = codcli;
}

public void setNomCli(String nomcli) {
this.nomcli = nomcli;
}
}



A classe ClienteDAO.java (Data Access Object) trata das rotinas de inclusão, exclusão, alteração e consulta, ou seja, trabalha diretamente com a fonte de dados (o BD). Todos os seus métodos realizarão a conexão com o Banco de Dados, sendo assim, precisam instanciar um objeto da classe FactoryConnection.java.
Ex.: Connection con = FactoryConnection.getConnection();

public class ClienteDAO {
public void incluirCliente(Cliente cliente) {
// tratar inclusão
}

public Cliente consultarCliente() {
// tratar consulta
return cliente;
}

public void alterarCliente(Cliente cliente) {
// tratar alteração
}

public void excluirCliente(String strcod) {
// tratar exclusão
}
}

Para maiores detalhes, clique aqui e acesse o Fórum Programação Java - Dicas que contém detalhes da classe ClienteDAO.


A classe FactoryConnection apresenta a conexão com o Banco de Dados, que neste exemplo será o H2.

public class FactoryConnection {
public static Connection getConnection(){
Connection con = null;
try {
Class.forName("org.h2.Driver");
String url = "jdbc:h2:tcp://localhost:9092/C:/DB/Banco";
String user = "admin";
String password = "senha";
con = DriverManager.getConnection(url, user, password);
} catch (Exception e){
e.printStackTrace();
}
return con;
}
}

Trabalhando dessa forma, suas classes ficam menores e bem dividas por assunto!
O códigos foram didaticamente apresentados! Portanto, use sua criatividade e melhore-os!


Links para pesquisa:
Padrões de Projeto : O modelo MVC

COMMENTS

BLOGGER: 24
  1. Fala mano, sou faltou o codigo fonte para baixar :) mesmo assim vlw

    ResponderExcluir
  2. Excelente escritura rapaz! até favoritei! :D

    ResponderExcluir
  3. Muito bom, deu para ter uma ideia, mas para ilucidar melhor quem está a começar, aconselharia colocar uma classe completa. Parabéns

    ResponderExcluir
  4. Ola pessoal,preciso fazer uma sintese sobre o artigo acima,mais não faço ideia de como fazer....alguem poderia me ajudar????
    Desde ja agradeço.....

    ResponderExcluir
  5. Opa excelente explicação!! agora como o companheiro a ei em cima falou só falto o código para download, se caso tiver manda pro meu maio ok?! estou precisando irei apresentar um trabalho a respeito na facul, vlw!
    ** rodrigobegoti@hotmail.com **

    ResponderExcluir
  6. realmente perfeito.. show de boa....so queria o código fonte a parti desse aplicativo conseguiria fazer qualquer outro CRUD em MVC perfeito..

    ResponderExcluir
  7. Amigo, bom o seu artigo, mas uma coisa é 3 camadas, outra coisa é MVC.
    3 camadas é quando tem cliente->servidor_aplicação->servidor_dados

    MVC é outra coisa. É possível utilizar 3 camadas com MVC, mas são duas coisas distintas.

    Jonatas Fischer

    ResponderExcluir
  8. Ola! Gostei muito do tutorial.
    Mas alguém conseguiu completar o código?
    Estou com vontade de completar e disponibilizar.
    Tenho certeza que será uma boa contribuição.
    Será que alguém tem algun outro link com turoial parecido?
    SDS
    Deluqui

    ResponderExcluir
  9. Excelente cara...

    System.out.print("Blog Adcionado aos favoritos com Sucesso ");

    SDS.

    ResponderExcluir
  10. Olá, tenho feito um sistema com sua ajuda com a ajuda deste forum, mas preciso de umas dicas ainda, tem como entrar em contato?

    doug_sciani@hotmail.com

    obrigado pelo tuto.

    ResponderExcluir
  11. oi bom dia, vc teria a classe3 adicionarOuvinteCliente1 para ter uma idéia de como fazer, obrigado

    rs-galhardo@bol.com.br

    ResponderExcluir
  12. Ótimo post, suas informações são muito importantes, boa iniciativa

    Abraços,
    Ranieri Marinho de Souza
    SEGR - Segurança da Informação
    http://blog.segr.com.br

    ResponderExcluir
  13. Ótimo post, suas informações são muito importantes, boa iniciativa

    Abraços,
    Ranieri Marinho de Souza
    SEGR - Segurança da Informação
    http://blog.segr.com.br

    ResponderExcluir
  14. Artigo espetacular a muito tempo venho procurando algo assim e finalmente encontrei muito obrigado

    ResponderExcluir
  15. Artigo excelente!

    Muito obrigado, tirou muitas das minhas dúvidas!

    Abraços.

    ResponderExcluir
  16. A profa. Gilene ficará muito feliz com os agradecimentos e de saber que o texto está dirimindo muitas dúvidas. Lembrando que o post está aberto à saudável discussão acadêmica.

    Abraços.

    ResponderExcluir
  17. Excelente post fico feliz por ter pessoas inteligentes e solidarias ajudarem outras como você me ajudou.Vou desenvolver desta forma.Muito obrigado e boas festas.

    ResponderExcluir
  18. boas eu gostei do artigo se bem que estou a ter alguns problemas.. epossivel por todo o codigo do programa desde a parte grafica ate aao mais minimo codigo? eu sei que é estar a pedir a papa toda mas estou a ter alguns problemas visto que estou a entrar no Mundo JAVA

    caso queira contactar minibytexxx@hotmail.com

    ResponderExcluir
  19. MUITO BOM!

    Brigadão aí!

    ResponderExcluir
  20. Nossa! Ótimo post!
    Ajudou pra caramba na organização dos códigos de um projeto que estou fazendo.
    Só tenho uma dúvida... A classe Cliente que contém os atributos privados e os métodos GET e SET fica em que nível nesse exemplo?? isto é, que pacote??
    Seria possível postar como ficaria o diagrama de classes desse exemplo?

    ResponderExcluir
  21. Olá, ajudou bastante. Mas poderia disponibilizar o código para baixar, ou colocar as classes completas.

    ResponderExcluir

Nome

A divulgar,2,Abelha,3,acessibilidade,17,acessório,2,Acidente,38,Acidentes,2,Acústica,12,Adágios,1,Adestramento,5,Administração,5,adulto,1,Aerodinâmica,4,Aeronáutica,8,África,5,Agência Brasil,3,Agropecuária,1,AIDS,1,Alcoolismo,7,Alemanha,3,Alerta,1,Algoritmo,6,Alimento,1,Alzheimer,4,Amazon,1,Amazônia,3,Análise Combinatória,1,Anatomia,5,Android,2,Animação,40,Animais de Estimação,6,Animal,1,Antropologia,12,Apicultura,4,App,5,Apple,5,Apresentação,4,aquário,1,Argentina,4,Arqueologia,5,arquitetura,14,Arte,113,Astrobiologia,1,Astronomia,12,Ativismo,16,Áudio,3,Audio FX,2,Áustria,1,Autismo,2,Auto-ajuda,9,Automobilismo,14,Automóvel,9,aventura,3,Aviação,4,Aviônica,8,Bahia,1,Balonismo,3,Banco de Dados,3,Beber e Dirigir,1,biblioteconomia,2,Bicicleta,1,Biografia,11,Biologia,128,Biologia Marinha,15,bioquímica,4,Biotecnologia,16,Blog,25,Blogger,24,Boato,3,Bomba,1,borderô de desconto,1,Botânica,4,Brasil,18,Brasília,6,BRIC,1,Browser,9,Bugs,3,CAD,1,Calor,2,Câmera lenta,1,Campanha,35,câncer,4,cardiologia,12,carreira,2,Casemods,1,Caso Isabella Nardoni,1,Caso Snowden,1,Celebridades,6,celular,21,Células-Tronco,3,Cérebro,2,Charge,20,China,10,Cibercultura,2,Ciclovia,1,Cidadania,37,Ciência,131,Cinema,40,Clip,1,Cliparts,1,Cloud computing,4,Comédia,1,competência,1,Complemento de dois,1,Comportamento,213,Computação,62,Computação em grade,5,Computação forense,2,Computação Gráfica,106,Computação Móvel,1,Comunicação e Marketing,100,Concurso,1,Concurso Cultural de Natal,1,Concursos Público,2,Concursos Públicos,3,Conectômica,1,Conspiração,2,Consumidor,7,Consumismo,3,contabilidade,2,Contos,41,Copa do Mundo,26,Cordel,3,Coreia do Norte,1,Coreia do Sul,1,Corpo,2,Coruja,1,cosmética,2,Cosmologia,5,Criança,1,Crime,40,Crime Digital,6,crise,8,crise econômica,9,crônica,5,crônicas,5,Cronologia,1,CSS,3,Cuba,4,Culinária,8,Cultura,7,Curiosidades,111,custos fixo,1,custos variáveis,1,Dança,5,DAO,1,Darwin,8,Decoração,1,demência,1,Demografia,1,Denúncia,9,Dermatologia,6,Desastre Natural,12,Descoberta,1,desconto duplicatas,1,Desenho instrucional,2,Desenvolvimento de jogos,6,Design,16,Dia das Mães,1,Dia do professor,1,diabetes,5,Dicas,59,Didática,1,Dieta,3,diplomacia,2,Direito,143,Direito Eleitoral,1,Direito Internacional,27,Direito Tributário,1,Direitos Humanos,33,Disney,3,Distrito Federal,1,Documentário,37,Doutorado,1,download,2,Drogas,6,e-Book,1,e-governo,2,Ecologia,72,Economia,63,Editoração Eletrônica,1,Educação,192,Educação a Distância,86,educação física,16,Educação sexual,6,Efeitos Sonoros,4,Egiptologia,1,Eleições,18,Eleições 2014,12,Eletricidade,9,eletrônica,3,empreendedorismo,5,enciclopédia,1,endocrinologia,5,Enem,3,Energia,10,Energia Alternativa,11,Energia Nuclear,8,Engenharia,31,Engenharia Civil,4,Engenharia de materiais,11,Engenharia de Software,3,Engenharia Genética,20,Engenharia Mecânica,1,Enretenimento,1,Ensino a Distância,9,Ensino Superior,3,Entomologia,4,Entretenimento,23,Entrevista,55,Epidemiologia,15,Equador,1,Escândalo,4,Escritório,1,Espaço,53,Espanha,1,Espanhol,2,Espeleologia,1,Espetáculo,8,Espionagem,15,Esporte,37,Estação,1,Estágio,1,Estatísticas,25,estrutura de dados,1,Ética,12,EUA,12,Evento,20,Evolução,3,Exercícios físicos,2,Exobiologia,1,experiência,39,fábulas,2,Facebook,15,Farmacologia,7,Favo,1,Feminismo,1,Férias,1,Ferramentas,5,FIFA,2,Filantropia,4,Filmes,14,Filosofia,18,Firefox,1,Física,69,Física Quântica,2,Fisiologia,5,Fisioterapia,4,Flagrante,2,Flamengo,1,Folclore,3,Fome,1,Fonoaudiologia,6,Fotografia,30,Fotos em 360 graus,6,França,5,Francês,1,frases,2,Fraude,4,Freeware,42,Futebol,36,Futurologia,45,gadget,86,Gafe,1,Gastroenterologia,4,Gastronomia,2,Geek,1,Genética,27,Geofísica,1,Geografia,35,Geologia,7,Geometria,6,geopolítica,10,Geriatria,4,Gestão de Configuração,2,Gestão de Projetos,11,Gestão do conhecimento,5,Ginecologia,3,Glass,1,Google,69,Governo,3,GPS,1,Gradiente,1,gramática,10,Gravidez,1,Grécia,1,Grécia Antiga,1,Guerra,25,Guinness,1,H2,2,Haiti,3,hardware,29,História,125,HIV,1,homenagem,42,Horologia,1,HPV,1,HTML,6,Humor,192,Humor Negro,7,IBM,2,ICIJ,1,Idioma,29,IHC,8,ilo,29,ilusão,30,ilusionismo,5,Imagem 3D,16,Imagens,4,Imagine Cup,1,Império Romano,2,Imprensa,26,Impressora 3D,13,Incêndio,1,Inclusão digital,8,Índia,2,Índios,1,Infectologia,11,Infográfico,24,Informática,37,Inglaterra,1,Inglês,14,Inovação,120,Inteligência Artificial,23,interativo,1,Interface,149,Interfaces Hápticas,14,Internacional,21,Internacionalização da Amazônia,3,Internet,149,Inundação,2,Invenção,19,Inventos,6,iPad,1,IPEA,1,iphone,3,Irã,3,Iraque,1,Israel,6,Japão,2,Java,2,Java.,2,jogos,9,Jogos educativos,9,Jogos Olímpicos,10,Jornalismo,47,Justiça,4,Kinect,10,Le Monde Diplomatique Brasil,6,Letras,1,Lexicografia,1,Liderança,2,Life Hacking,17,Linguística,5,Literatura,36,Livro,30,Lógica,11,Logística,2,Lua,1,Maçonaria,4,Malásia,2,Malvinas,2,Malware,1,Mapa,37,Mapas,3,Marte,1,Mastologia,1,Matemática,45,Matemática Financeira,1,maternidade,1,Mecânica,6,Mecânica dos Fluidos,2,Mecatrônica,38,Medicina,358,Medicina Esportiva,1,Medicina Veterinária,4,Meio Ambiente,84,Mel,1,melanoma,1,Memória,4,memorização,2,Mente,4,Mercado de Trabalho,45,mercosul,1,Mestrado,1,meteorologia,9,Metodologia Científica,26,México,1,Microbiologia,4,Microsoft,10,Mídia Social,44,Militar,11,Mineralogia,1,Mistério,2,MIT,4,Mitologia,2,Mobilidade,1,Mobilidade Urbana,2,MonaVie,1,Montanhismo,1,Moodle,1,Mossad,1,Motivação,1,MSF,1,Mudança Climática,18,Mulher,3,Multimídia,13,museu,8,Música,67,MVC,1,Nanotecnologia,29,Nasa,13,Natação,1,Natal,16,Natureza,1,Negócios,16,Neurociência,44,Neurologia,63,Nordeste,2,Noruega,1,notícias,7,Novidades,18,Novo Enem,2,Números,1,Nutrição,43,Obama,1,Obesidade,9,Observatório da Imprensa,20,Obstetrícia,3,Oceanografia,7,odontologia,4,Offshore Leaks,2,oftalmologia,8,Olimpíadas,5,oncologia,30,ONU,8,Opinião,79,Óptica,15,Oracle,1,Oriente Médio,4,Orkut,2,Ornitologia,1,ortografia,3,Ortopedia,3,Ótica,7,Otorrinolaringologia,1,Paginadores,1,paleontologia,1,Paquistão,1,Pará,2,Paraguai,1,parkinson,2,Passeio virtual,1,Patinação,1,Pediatria,5,Pensamentos,1,performance,1,Periférico,1,Pesca,2,Pesquisa,147,Petição,1,Petrobrás,3,Petróleo,7,Photoshop,5,Pirataria,7,planilha de custo,1,Playstation 3,2,Plebiscito,2,Pneumologia,1,Podcast,4,Poesia,23,Poítica,1,Política,206,Portugal,4,português,14,Pós-graduação,1,prazo médio,1,Pré-sal,4,Prêmio Nobel,4,primatologia,1,privacidade,9,produtividade,3,professor Hamilton Alves,2,Programa Gratuito,4,Programação,36,Projeto Truco,2,Promoção,1,Propaganda,5,Psicanálise,1,Psicologia,202,Psicologia Animal,21,Psiquiatria,9,Pública,7,publicidade,17,Publieditorial,2,Quadrinhos,9,Quads,5,Qualidade,3,Qualidade de Vida,11,química,24,realidade aumentada,31,realidade diminuída,2,Realidade Virtual,18,Reconhecimento de imagem,10,Reconhecimento de voz,2,Recorde,1,Redação,1,redes,6,Referência,1,Referendo,1,Reforma Política,1,Relacionamento,1,Relações Internacionais,30,Religião,32,Responsabilidade Social,4,Retrospectiva,1,Rio 2016,3,Rio Grande do Norte,1,Rio Grande do Sul,1,robótica,61,Roda Viva,21,Roma,1,roteiro,1,RSA,1,Rússia,1,Samsung,1,Sanitarismo,4,Santa Catarina,1,São Paulo,2,Saúde,354,Savant,1,Segunda Guerra Mundial,16,Segurança,104,Segurança da Informação,50,Seleção Natural,2,serviço,1,Serviço Online,1,Sexologia,2,sexualidade,5,Show,7,SIGGRAPH,1,Simulação,24,Sismologia,2,Sistema operacional,3,Sistemas de Numeração,1,Sites de Busca,11,Sociedade,4,Sociologia,33,Software,25,Software Livre,17,Sol,2,Sono,2,Sony,2,SOPA,2,Suécia,3,Sugestão de presentes,53,Sun,1,supercomputadores,2,Sustentabilidade,4,Tabagismo,4,Talento precoce,1,taxa de juros efetiva,1,taxa de juros nominal,1,Taxas Equivalentes,1,Taxidermia,1,Teatro,23,Técnicas de Estudo,2,Tecnologia,416,Tecnologia da Informação,25,TED,193,TedMed,2,TEDx Rio+20,1,TEDxAmazônia,1,TEDxAsaSul,1,Telefonia,57,Televisão,39,Temas,1,Tempo,1,Tendências,9,Teologia,5,teoria das supercordas,1,Terremoto,7,Terrorismo,14,Testes,17,Tipologia,7,Tomada de Decisão,1,tradução,4,Trânsito,8,transporte,27,tributo,3,Trigonometria,1,Tubarão,2,Turismo,18,Tutorial,17,Twitter,6,UFG,1,ufologia,3,UFRJ,1,universidade,3,Urbanismo,15,Urologia,1,USP,2,Utilidade Pública,3,Utilitário,1,Vale,1,Vaticano,1,Ventriloquismo,3,Verão,1,vestibular,2,Vestimenta,1,Vida Digital,7,Vida Moderna,16,Vida Selvagem,10,Vídeo,5,Videogame,103,Vídeos,608,Vídeos 360,1,Violência,3,Vírus,2,Visão Computacional,3,Vôlei,1,Vulcanologia,6,Watergate Política,1,Web 2.0,28,Web Application,75,Web Semântica,1,Web Seminar,1,webdesign,7,Webinar,1,widget,2,WikiLeaks,33,Wikipedia,1,Windows,5,Xadrez,1,YouTube,4,Zoologia,52,
ltr
item
BrAcad: Java - Criando uma aplicação em 3 camadas (MVC)
Java - Criando uma aplicação em 3 camadas (MVC)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4ThAwGhcSH8IPxkiZDeLnNaYNEE_fsJYBaqSznHF4ERroABtGgg7L1tl1bCEPiJXktZpo9Li5y0G9sUk2YLM61c_HOI5v6NKsuYM5gNvMr0KHDmQzOSwupzPM3rtNnjalIyUZ_mslRAV7/s320/mvc.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4ThAwGhcSH8IPxkiZDeLnNaYNEE_fsJYBaqSznHF4ERroABtGgg7L1tl1bCEPiJXktZpo9Li5y0G9sUk2YLM61c_HOI5v6NKsuYM5gNvMr0KHDmQzOSwupzPM3rtNnjalIyUZ_mslRAV7/s72-c/mvc.jpg
BrAcad
https://minimal-war.blogspot.com/2008/11/java-criando-uma-aplicacao-em-3-camadas.html
https://minimal-war.blogspot.com/
http://minimal-war.blogspot.com/
http://minimal-war.blogspot.com/2008/11/java-criando-uma-aplicacao-em-3-camadas.html
true
5404866010248693673
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy