1) O documento discute o padrão arquitetural MVC e como construir um framework MVC simples em Java. 2) É apresentado como separar a lógica de negócios em servlets da lógica de visualização em JSPs usando RequestDispatcher. 3) É mostrado como usar polimorfismo para executar diferentes lógicas de negócios a partir de uma única servlet controladora.
Apresentação Java Web Si Ufc Quixadá - MVCZarathon Maia
O documento descreve os principais conceitos do padrão arquitetural MVC (Model View Controller), incluindo:
1) As classes Model representam as entidades e armazenamento de dados, Views são responsáveis por exibição de resultados, e Controllers fazem a ligação entre as duas partes;
2) É apresentado um exemplo de implementação de MVC usando Servlets, JSPs e redirecionamento entre componentes;
3) São descritos os passos para construir um framework MVC simples usando interfaces, classes lógicas e um controlador de requisições.
O documento discute o padrão MVC com JSP e Servlets, separando as funcionalidades em três camadas: Model, View e Controller. Apresenta também um mini-tutorial sobre como implementar este padrão em um sistema simples de sugestão de cervejas.
O documento apresenta uma introdução sobre servlets, JSP e servidores de aplicação, definindo suas principais características e funcionalidades como componentes para desenvolvimento web em Java.
O documento apresenta uma introdução teórica sobre JSP e Servlets. Discute o papel do Servlet na arquitetura Java EE, como JSP funciona em um contêiner web e a estrutura básica de uma aplicação Java WEB. Também aborda conceitos como solicitações HTTP, páginas dinâmicas vs estáticas e o modelo de aplicação multi-camadas do Java EE.
Aula 1 - curso java web - JSP Java Server PageEvandro Júnior
O documento apresenta um curso sobre Java Server Pages (JSP), abordando seus conceitos básicos em 9 aulas. A primeira aula introduz JSP como tecnologia para criar páginas web com programação Java e define os principais componentes de uma página JSP.
Seminário apresentado na disciplina Tópicos Especias de Programada para a Web, do curso de Análise e Desenvolvimento de Sistemas. Apresenta o funcionamento do JSP.
Apresentação Java Web Si Ufc Quixadá - MVCZarathon Maia
O documento descreve os principais conceitos do padrão arquitetural MVC (Model View Controller), incluindo:
1) As classes Model representam as entidades e armazenamento de dados, Views são responsáveis por exibição de resultados, e Controllers fazem a ligação entre as duas partes;
2) É apresentado um exemplo de implementação de MVC usando Servlets, JSPs e redirecionamento entre componentes;
3) São descritos os passos para construir um framework MVC simples usando interfaces, classes lógicas e um controlador de requisições.
O documento discute o padrão MVC com JSP e Servlets, separando as funcionalidades em três camadas: Model, View e Controller. Apresenta também um mini-tutorial sobre como implementar este padrão em um sistema simples de sugestão de cervejas.
O documento apresenta uma introdução sobre servlets, JSP e servidores de aplicação, definindo suas principais características e funcionalidades como componentes para desenvolvimento web em Java.
O documento apresenta uma introdução teórica sobre JSP e Servlets. Discute o papel do Servlet na arquitetura Java EE, como JSP funciona em um contêiner web e a estrutura básica de uma aplicação Java WEB. Também aborda conceitos como solicitações HTTP, páginas dinâmicas vs estáticas e o modelo de aplicação multi-camadas do Java EE.
Aula 1 - curso java web - JSP Java Server PageEvandro Júnior
O documento apresenta um curso sobre Java Server Pages (JSP), abordando seus conceitos básicos em 9 aulas. A primeira aula introduz JSP como tecnologia para criar páginas web com programação Java e define os principais componentes de uma página JSP.
Seminário apresentado na disciplina Tópicos Especias de Programada para a Web, do curso de Análise e Desenvolvimento de Sistemas. Apresenta o funcionamento do JSP.
Conteudo sobre java e suas features por versão (8, 9, 10, 11), SOA X MICROSERVICES, versionamento de contrato, Protocolo HTTP E HTTPS .
java 8 - streams e Metodos default.
java 9 - jigsaw e jshell.
java 10 - Local variable type Inference E Garbage Collector Interface.
java 11 - Local-Variable Syntax for Lambda Parameters E Launch Single-File Source-Code Programs.
1) O documento introduz o PHP 5 e suas melhorias na programação orientada a objetos em relação às versões anteriores. 2) O WAMP é um pacote que facilita a instalação dos servidores necessários para usar PHP 5 como Apache, MySQL e PHP. 3) PHP 5 introduz novos recursos de orientação a objetos como métodos construtores e destrutores, modificadores de acesso, interfaces e classes abstratas.
1) O documento introduz o PHP 5 e suas melhorias na programação orientada a objetos em relação às versões anteriores. 2) O WAMP é um pacote que facilita a instalação dos servidores necessários (Apache, PHP e MySQL) para desenvolvimento web com PHP. 3) PHP 5 introduz novos recursos de orientação a objetos como propriedades públicas/privadas, interfaces, classes abstratas e métodos estáticos.
O documento descreve o desenvolvimento de um sistema de login web simples utilizando arquitetura MVC. Ele inclui instruções para criar a estrutura do projeto, modelagem de dados, classes de modelo, camada de acesso a dados e separação em pacotes.
Introdução ao Desenvolvimento de aplicações WEB com JSPManoel Afonso
Slides do minicurso "Introdução ao Desenvolvimento de aplicações WEB com JSP" apresentado na Universidade Federal do Pará nos dias 4 e 5 de novembro de 2013 durante a III Semana Acadêmica da FACOMP.
O documento descreve como codificar um servlet em Java usando as classes HttpServlet e HttpServletRequest/Response. Explica que um servlet deve estender HttpServlet e implementar os métodos doGet() ou doPost() dependendo do tipo de requisição. Também mostra como criar um servlet simples que retorna a data atual e mapeá-lo em um arquivo web.xml.
Este documento fornece um resumo sobre Java Server Pages (JSP):
1) JSP permite implementar servlets escrevendo código Java em páginas HTML/XML para gerar dinamicamente conteúdo da web.
2) JSP usa marcadores especiais para inserir código Java em páginas, que são compiladas em servlets antes de serem executadas.
3) Objetos como request, response, out e session estão implicitamente disponíveis em JSP para acessar dados de entrada/saída.
O documento fornece instruções para instalação e configuração do Eclipse e do Tomcat, necessários para o desenvolvimento de aplicações Java no Eclipse. Inclui links para download do Eclipse e do Tomcat, além de etapas como configurar a JRE do Eclipse para JDK, adicionar o servidor Tomcat no Eclipse e criar um projeto e página JSP de teste.
Palestra sobre JavaFX 1.2 apresentada no Sun Day da II Semana da Computação da UFPB. Apresenta uma introdução sobre JavaFX e as novidades do JavaFX 1.2.
1) O documento discute Servlets e JSP, tecnologias Java para desenvolvimento de aplicações web.
2) Servlets são objetos Java que estendem a funcionalidade de servidores HTTP de forma independente de plataforma.
3) JSPs permitem programação através da saída e inclusão de código Java em páginas, gerando um servlet na primeira requisição.
1. O documento apresenta um livro sobre desenvolvimento web com Java EE 7 utilizando JSF, PrimeFaces e CDI.
2. O livro aborda tópicos como introdução ao desenvolvimento web com Java, persistência de dados com JPA, introdução ao JSF, componentes de interface, templates com Facelets, conversão e validação, CDI e injeção de dependências.
3. O autor é Thiago Faria, fundador e instrutor da AlgaWorks, e o livro visa ensinar o desenvolvimento de aplicações web completas utilizando as principais tecnologias da
O documento descreve como testar uma API REST chamada Mollom API utilizando Maven e Cucumber. Ele explica como encapsular as chamadas para a API usando um conceito similar ao Page Object e como implementar os testes em Cucumber com exemplos de cenários e passos.
Este documento fornece uma introdução ao framework Spring, descrevendo suas principais características como injeção de dependência, Spring MVC, Spring Data JPA, Spring Security e Spring Boot. O documento também apresenta o projeto de um sistema de gestão de convidados que será desenvolvido usando essas tecnologias Spring.
Este documento fornece instruções para integrar Flex, Java e BlazeDS. Ele descreve como configurar os requisitos necessários, criar um projeto Flex com suporte a Java e configurar o BlazeDS para permitir que classes Java sejam acessadas remotamente de aplicativos Flex. Ele também mostra como criar uma classe Java simples e acessá-la de um aplicativo Flex usando um RemoteObject.
1. JSP é convertida para Servlet que é compilado e carregado para aguardar requisições.
2. A primeira requisição a uma página JSP é mais lenta, mas subsequentemente o processo é mais rápido se o código não foi alterado.
3. Uma página JSP passa por fases de tradução, compilação, carga, instanciação e execução do método _jspService() a cada requisição.
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...clesiojunior
Este documento descreve como integrar sistemas desenvolvidos em tecnologias diferentes, como Java e PHP, utilizando web services. Ele apresenta um exemplo prático de um sistema Java que oferece um serviço web para consulta de preços e um cliente PHP que consome este serviço. O documento explica passo a passo como implementar o serviço web no Java usando NetBeans e como construir um cliente PHP para consumi-lo usando o framework NuSOAP.
O documento descreve as principais características e capacidades da plataforma Android, incluindo seu kernel Linux, máquina virtual Dalvik, suporte a Java, arquivos e recursos, widgets, multitarefa, OpenGL, sensores, SQLite, Webkit, HTML5, Flash e suporte a dispositivos móveis como smartphones e tablets.
1. O documento apresenta um sumário detalhado de um curso sobre desenvolvimento de sistemas financeiros utilizando a bolsa de valores como exemplo.
2. Os tópicos abordados incluem modelagem de dados da bolsa, testes automatizados, trabalho com XML, design driven pelo teste, acesso a web services e desenvolvimento web com JSF.
3. O documento fornece exemplos de código e exercícios para cada tópico para auxiliar na aprendizagem dos conceitos apresentados.
Conteudo sobre java e suas features por versão (8, 9, 10, 11), SOA X MICROSERVICES, versionamento de contrato, Protocolo HTTP E HTTPS .
java 8 - streams e Metodos default.
java 9 - jigsaw e jshell.
java 10 - Local variable type Inference E Garbage Collector Interface.
java 11 - Local-Variable Syntax for Lambda Parameters E Launch Single-File Source-Code Programs.
1) O documento introduz o PHP 5 e suas melhorias na programação orientada a objetos em relação às versões anteriores. 2) O WAMP é um pacote que facilita a instalação dos servidores necessários para usar PHP 5 como Apache, MySQL e PHP. 3) PHP 5 introduz novos recursos de orientação a objetos como métodos construtores e destrutores, modificadores de acesso, interfaces e classes abstratas.
1) O documento introduz o PHP 5 e suas melhorias na programação orientada a objetos em relação às versões anteriores. 2) O WAMP é um pacote que facilita a instalação dos servidores necessários (Apache, PHP e MySQL) para desenvolvimento web com PHP. 3) PHP 5 introduz novos recursos de orientação a objetos como propriedades públicas/privadas, interfaces, classes abstratas e métodos estáticos.
O documento descreve o desenvolvimento de um sistema de login web simples utilizando arquitetura MVC. Ele inclui instruções para criar a estrutura do projeto, modelagem de dados, classes de modelo, camada de acesso a dados e separação em pacotes.
Introdução ao Desenvolvimento de aplicações WEB com JSPManoel Afonso
Slides do minicurso "Introdução ao Desenvolvimento de aplicações WEB com JSP" apresentado na Universidade Federal do Pará nos dias 4 e 5 de novembro de 2013 durante a III Semana Acadêmica da FACOMP.
O documento descreve como codificar um servlet em Java usando as classes HttpServlet e HttpServletRequest/Response. Explica que um servlet deve estender HttpServlet e implementar os métodos doGet() ou doPost() dependendo do tipo de requisição. Também mostra como criar um servlet simples que retorna a data atual e mapeá-lo em um arquivo web.xml.
Este documento fornece um resumo sobre Java Server Pages (JSP):
1) JSP permite implementar servlets escrevendo código Java em páginas HTML/XML para gerar dinamicamente conteúdo da web.
2) JSP usa marcadores especiais para inserir código Java em páginas, que são compiladas em servlets antes de serem executadas.
3) Objetos como request, response, out e session estão implicitamente disponíveis em JSP para acessar dados de entrada/saída.
O documento fornece instruções para instalação e configuração do Eclipse e do Tomcat, necessários para o desenvolvimento de aplicações Java no Eclipse. Inclui links para download do Eclipse e do Tomcat, além de etapas como configurar a JRE do Eclipse para JDK, adicionar o servidor Tomcat no Eclipse e criar um projeto e página JSP de teste.
Palestra sobre JavaFX 1.2 apresentada no Sun Day da II Semana da Computação da UFPB. Apresenta uma introdução sobre JavaFX e as novidades do JavaFX 1.2.
1) O documento discute Servlets e JSP, tecnologias Java para desenvolvimento de aplicações web.
2) Servlets são objetos Java que estendem a funcionalidade de servidores HTTP de forma independente de plataforma.
3) JSPs permitem programação através da saída e inclusão de código Java em páginas, gerando um servlet na primeira requisição.
1. O documento apresenta um livro sobre desenvolvimento web com Java EE 7 utilizando JSF, PrimeFaces e CDI.
2. O livro aborda tópicos como introdução ao desenvolvimento web com Java, persistência de dados com JPA, introdução ao JSF, componentes de interface, templates com Facelets, conversão e validação, CDI e injeção de dependências.
3. O autor é Thiago Faria, fundador e instrutor da AlgaWorks, e o livro visa ensinar o desenvolvimento de aplicações web completas utilizando as principais tecnologias da
O documento descreve como testar uma API REST chamada Mollom API utilizando Maven e Cucumber. Ele explica como encapsular as chamadas para a API usando um conceito similar ao Page Object e como implementar os testes em Cucumber com exemplos de cenários e passos.
Este documento fornece uma introdução ao framework Spring, descrevendo suas principais características como injeção de dependência, Spring MVC, Spring Data JPA, Spring Security e Spring Boot. O documento também apresenta o projeto de um sistema de gestão de convidados que será desenvolvido usando essas tecnologias Spring.
Este documento fornece instruções para integrar Flex, Java e BlazeDS. Ele descreve como configurar os requisitos necessários, criar um projeto Flex com suporte a Java e configurar o BlazeDS para permitir que classes Java sejam acessadas remotamente de aplicativos Flex. Ele também mostra como criar uma classe Java simples e acessá-la de um aplicativo Flex usando um RemoteObject.
1. JSP é convertida para Servlet que é compilado e carregado para aguardar requisições.
2. A primeira requisição a uma página JSP é mais lenta, mas subsequentemente o processo é mais rápido se o código não foi alterado.
3. Uma página JSP passa por fases de tradução, compilação, carga, instanciação e execução do método _jspService() a cada requisição.
INTEROPERABILIDADE ENTRE SISTEMAS DE INFORMAÇÃO HETEROGÊNEOS NA PRÁTICA – NO ...clesiojunior
Este documento descreve como integrar sistemas desenvolvidos em tecnologias diferentes, como Java e PHP, utilizando web services. Ele apresenta um exemplo prático de um sistema Java que oferece um serviço web para consulta de preços e um cliente PHP que consome este serviço. O documento explica passo a passo como implementar o serviço web no Java usando NetBeans e como construir um cliente PHP para consumi-lo usando o framework NuSOAP.
O documento descreve as principais características e capacidades da plataforma Android, incluindo seu kernel Linux, máquina virtual Dalvik, suporte a Java, arquivos e recursos, widgets, multitarefa, OpenGL, sensores, SQLite, Webkit, HTML5, Flash e suporte a dispositivos móveis como smartphones e tablets.
1. O documento apresenta um sumário detalhado de um curso sobre desenvolvimento de sistemas financeiros utilizando a bolsa de valores como exemplo.
2. Os tópicos abordados incluem modelagem de dados da bolsa, testes automatizados, trabalho com XML, design driven pelo teste, acesso a web services e desenvolvimento web com JSF.
3. O documento fornece exemplos de código e exercícios para cada tópico para auxiliar na aprendizagem dos conceitos apresentados.
1. A Caelum é uma empresa de consultoria, treinamento e ensino em computação com foco em Java, Ruby on Rails e Scrum.
2. A Caelum oferece treinamentos presenciais e online em suas unidades em São Paulo, Rio de Janeiro e Brasília para mais de 8 mil alunos.
3. Além de treinamentos, a Caelum também oferece serviços de consultoria, mentoria e desenvolvimento de projetos personalizados para empresas.
1. O documento apresenta um sumário detalhado sobre o curso Desenvolvimento Web com HTML, CSS e JavaScript da Caelum, com tópicos que vão desde a introdução aos conceitos até exercícios avançados de posicionamento.
2. É apresentado um guia passo-a-passo para desenvolvimento de páginas web, começando pelos fundamentos de HTML e CSS e evoluindo para conceitos mais complexos como posicionamento, formulários e JavaScript.
3. O documento fornece todos os recursos necessários para aprender a desenvolver
Este documento proporciona instrucciones para escribir un cuento en 6 pasos: 1) elegir un narrador en primera o tercera persona, 2) describir al protagonista, 3) incluir otros personajes como antagonistas o secundarios, 4) establecer un tema principal, 5) seleccionar un escenario para la acción, y 6) comenzar a escribir usando la imaginación.
O documento discute as evoluções na persistência de dados em Java, começando pelo acesso direto ao banco de dados via JDBC, depois o uso do Hibernate para mapeamento objeto-relacional e por fim a abstração proporcionada pela especificação JPA.
Este documento explica los conceptos de hiperónimos e hipónimos. Los hiperónimos son palabras de significado amplio que incluyen otras palabras más específicas, mientras que los hipónimos son palabras cuyo significado concreta o especifica el significado de otras palabras más generales. Se dan ejemplos como "flor" es un hiperónimo de "clavel", "rosa" y "margarita", y "vehículo" es un hiperónimo de "coche", "autobús" y "camión".
Este documento explica los conceptos de hiperonimia, hiponimia y cohiponimia. La hiperonimia se refiere a palabras más generales que incluyen el significado de palabras más específicas. La hiponimia son palabras más específicas incluidas dentro de un hiperónimo. Finalmente, la cohiponimia es la relación entre hipónimos que comparten el mismo hiperónimo.
LA ACENTUACIÓN, LA TILDACIÓN Y LAS CLASES DE PALABRAandrenesh
Conceptos importantes sobre la Acentuación. La sílaba, clases de sílaba. Además de las clases de acento, clases de palabra según la Acentuación y para la ejercitación y aprendizaje, el Análisis del Acento.
Este documento presenta información sobre los hiperónimos e hipónimos. Explica que los hiperónimos son palabras más amplias e inclusivas que agrupan otras palabras más específicas llamadas hipónimos. Proporciona ejemplos como "flor" como hiperónimo de clavel, rosa, etc. Luego incluye ejercicios para que los estudiantes identifiquen hiperónimos y hipónimos en diferentes conjuntos de palabras.
Este documento describe las características de un texto narrativo y del cuento como un tipo de texto narrativo. Explica que un texto narrativo tiene como intención comunicativa narrar o contar una historia con personajes y una trama temporal. Luego detalla elementos como el narrador, el lenguaje, la estructura y clases de discurso narrativo. Finalmente, ofrece pasos para crear un cuento que incluyen definir el tema, crear personajes y describir el espacio y tiempo de la historia.
Este documento presenta la programación anual del área de Comunicación para el primer grado de secundaria. Se describen los objetivos de aprendizaje que busca alcanzar el estudiante en las competencias de comprensión y producción oral y escrita, así como en literatura. La programación consiste en 6 unidades organizadas en torno a situaciones significativas, las cuales abordan diversos campos temáticos a través de diferentes productos. Cada unidad desarrolla capacidades comunicativas específicas a lo largo de un número determinado de sesiones.
El documento presenta las instrucciones para una clase de 2 horas cuyo objetivo es que los niños creen e ilustren cuentos y los lean en voz alta. La metodología incluye una lluvia de ideas y la creación colaborativa de un cuento. También define los elementos clave de un cuento como la estructura, personajes, ambiente y trama, y ofrece consejos sobre cómo escribir un cuento con una idea principal y dinámicas de participación.
El documento define el cuento como una narración corta que presenta personajes, lugar y tiempo. Explica que un cuento típicamente contiene una introducción, nudo y desenlace. La introducción presenta la época, lugar y personajes. El nudo describe los problemas y sucesos que ocurren. El desenlace resuelve el problema y devuelve la normalidad.
O documento apresenta a tecnologia JavaServer Faces (JSF), que permite o desenvolvimento de aplicações web com Java de forma simplificada através de componentes pré-definidos e separação de responsabilidades. O JSF utiliza o padrão MVC e fornece uma arquitetura baseada em componentes para construção de interfaces gráficas dinâmicas. Um exemplo simples de aplicação JSF é descrito para demonstrar seus conceitos.
O documento fornece uma introdução ao framework ASP.NET MVC, descrevendo suas principais características e componentes, como Models, Views e Controllers. O autor também discute abordagens de desenvolvimento como Code First e Database First e ferramentas como Razor e HTML Helpers.
O documento descreve o padrão MVC (Model-View-Controller) e como aplicá-lo em aplicações Delphi para separar as camadas de apresentação, domínio e dados. Ele explica o que são as camadas Model, View e Controller no MVC e apresenta um exemplo simples de multiplicação para demonstrar como implementar cada parte e a comunicação entre elas.
Engenharia da Computação: Resumo servlet + jsp br galoGuilhermePetrosky
O documento descreve o que são Servlets e JSP, tecnologias usadas no desenvolvimento de aplicações web em Java. Servlets são classes Java que processam requisições e respostas HTTP, estendendo funcionalidades de servidores web. JSPs permitem produzir páginas dinâmicas em Java e são transformadas em Servlets após a implantação. O documento lista e explica os principais tipos de tags usadas em JSP.
1) O documento descreve conceitos e procedimentos para acesso a bancos de dados relacionais usando JDBC no Java, incluindo como instalar o driver, estabelecer conexões, criar statements e usar transações.
2) É explicado como carregar o driver JDBC, obter uma conexão passando a URL, usuário e senha, e como criar e executar statements SQL como SELECTs, INSERTs e outros comandos.
3) O uso de transações é descrito para agrupar vários statements e garantir que todos sejam executados ou nenhum
Programação Web com Zend Framework e Ajax com Dojofabioginzel
O documento resume conceitos básicos da programação web, incluindo:
1) A mudança da Web 1.0 estática para a Web 2.0 dinâmica e participativa;
2) Tecnologias como JavaScript, Ajax e CSS que permitem a interatividade;
3) Ferramentas como Firebug e Zend Studio para desenvolvimento web.
O documento fornece uma introdução ao framework ASP.NET MVC, resumindo suas principais características em 3 frases: ASP.NET MVC permite a construção de aplicações web seguindo o padrão Model-View-Controller, dando total controle sobre HTML e URLs e facilitando testes. O documento então explica conceitos-chave como controllers, actions, views e HTML helpers.
O documento fornece uma introdução ao framework ASP.NET MVC, resumindo suas principais características em 3 frases: ASP.NET MVC permite a construção de aplicações web seguindo o padrão Model-View-Controller, dando total controle sobre HTML e URLs e facilitando testes. O documento então explica conceitos-chave como controllers, actions, views e HTML helpers.
Este documento fornece uma introdução completa sobre React JS, incluindo: (1) O que é React JS e suas principais características e vantagens; (2) Como começar a desenvolver projetos usando React, incluindo a instalação e criação de um primeiro projeto; (3) Uma explicação sobre React Native e como pode ser usado para desenvolver aplicativos móveis.
O documento fornece uma introdução ao framework React, discutindo seus principais conceitos e vantagens, como: (1) facilitar a criação de componentes reutilizáveis; (2) uso do Virtual DOM para renderização eficiente; (3) suporte a testes automatizados. O documento também explica conceitos-chave como JSX, props e CSS in JS.
O documento apresenta o framework Realm para banco de dados no Android, explicando suas vantagens como evitar código SQL e foco na linguagem de programação, limitações como acoplamento forte com a API e impossibilidade de passar objetos entre activities, e como configurar, modelar dados, realizar consultas e gravações no banco.
O documento apresenta uma introdução ao desenvolvimento web com .NET Core, descrevendo sua história, arquitetura, ferramentas e como transformar um projeto console em um site web usando o framework MVC.
O documento apresenta um resumo sobre:
1) O livro ensina a desenvolver aplicações web usando a arquitetura MVC do ASP.NET;
2) Explica os principais conceitos do ASP.NET MVC como Model, View e Controller e como eles se relacionam;
3) Fornece instruções sobre como configurar o ambiente de desenvolvimento com o Visual Studio e o IIS para criar e executar projetos ASP.NET MVC.
O documento introduz o framework vRaptor para desenvolvimento web em Java. Apresenta seus principais pontos fortes como ser um framework brasileiro com documentação em português e convenções simples, e também seus pontos fracos como necessitar de mais conhecimento em HTML/CSS/Javascript. Detalha as convenções do framework para organização de arquivos e URLs, além de explicar conceitos como Injeção de Dependência e o objeto Result.
Este documento discute Servlets e JSPs, incluindo por que usá-los, o que fazem clientes e servidores web, e como eles se comunicam usando HTML e HTTP. Também explica como containers mapeiam requisições para servlets usando um deployment descriptor.
O documento resume as principais características do framework Easy Framework: 1) É um framework MVC para PHP que facilita a construção de aplicações robustas e seguras; 2) Utiliza padrões como ORM e permite fácil integração com bancos de dados; 3) Fornece recursos como cache, segurança, internacionalização e suporte a aplicações RESTful.
O documento descreve a arquitetura MVC (Modelo, Visão, Controlador) para desenvolvimento web em PHP. MVC separa a aplicação em três camadas: Modelo para dados, Visão para apresentação e Controlador para lidar com entradas do usuário. O documento também apresenta exemplos simples de implementação de MVC em PHP.
O documento apresenta um resumo de um curso sobre Ruby on Rails. O curso aborda tópicos como introdução à linguagem Ruby, estruturas do framework Rails, exercícios práticos de instalação, CRUD e associações com banco de dados.
O documento resume os principais conceitos e ferramentas do framework Ruby on Rails. Apresenta os pilares do MVC, models, views e controllers, e explica como o Rails promove princípios como DRY e convenções sobre configuração. Também discute recursos como testes, internacionalização, deploy e ferramentas de apoio como Capistrano.
Este documento apresenta o framework Nest para construção de APIs com Node e TypeScript. Cobre tópicos como estrutura de projeto, controllers, rotas, parâmetros, services e injeção de dependência. O objetivo é consolidar conhecimentos em APIs e aplicar padrões de mercado como o modelo do Angular.
Semelhante a Mvc model view controller - java para desenvolvimento web (20)
Here are the safety notices translated to additional languages:
Before removing any FRU, power off the computer, unplug all power cords from electrical outlets, remove the battery pack, and then disconnect any interconnecting cables.
Avant de retirer une unité en clientèle (FRU), éteindre l’ordinateur, débrancher tous les cordons d’alimentation des prises électriques, retirer la batterie et puis déconnecter tous les câbles de connexion.
Vor dem Auswechseln einer FRU stromlos schalten, alle Netzteile vom Stromnetz trennen, den Akku entfernen
Este manual fornece instruções sobre como usar com segurança e manter o notebook Titanium B155 da Avell®. Ele descreve os principais componentes, como conectar a fonte de energia, usar a bateria, luzes indicadoras e cuidados gerais com o dispositivo. O manual também fornece considerações ergonômicas para uso prolongado.
O documento descreve o projeto de desenvolvimento de um sistema de advocacia para a empresa Alci & Araújo Advogados Associados. Foi realizada uma entrevista com o sócio Alci Araújo para levantar os requisitos funcionais e não funcionais do sistema. O sistema permitirá cadastrar e gerenciar processos, clientes, agenda e funcionários, além de se integrar com o sistema financeiro para geração de folha de pagamento.
O documento descreve o projeto de um sistema para uma clínica veterinária, incluindo os processos de levantamento de requisitos, regras de negócio, diagramas de casos de uso, interfaces gráficas e diagramas de sequência. O sistema permitirá cadastrar medicamentos, funcionários e gerenciar a folha de pagamento.
Projeto de Redes residencial - IFMS - Campo Grande/MS.
Sistemas para Internet 2015.
Acadêmicos: Jaqueline Nardes França e Valdir Pereira da Silva Junior.
Trabalho de E-Commerce B2C IFMS-Campo Grande/MS
Sistemas para Internet 2014.
Acadêmicos: Anderson dos Santos Ferreira, Jaqueline Nardes França e Valdir Pereira da Silva Junior.
Professor: Jeferson Rodrigues
Sistemas Distribuídos - Replicação de Banco de DadosValdir Junior
Trabalho de Sistemas Distribuídos - Replicação de Banco de Dados MySql e PostgreSQL. 5º Semestre - Curso superior de tecnologia em Sistemas para Internet. Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso do Sul.
A tecnologia: Possibilidades e desafios para o meio ambiente natural.Valdir Junior
Trabalho de Filosofia da Ciência e Tecnologia. 5º Semestre - Curso superior de tecnologia em Sistemas para Internet. Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso do Sul.
O documento discute o desenvolvimento de aplicativos móveis para dispositivos BlackBerry, incluindo recursos, persistência de dados, compilação vs interpretação, webservices, padrões de projeto e ferramentas de desenvolvimento. Também fornece uma breve história da empresa BlackBerry e detalhes sobre seus sistemas operacionais e linguagens suportadas.
Gestão da Cadeia de Suprimentos - E-CommerceValdir Junior
O documento discute a gestão da cadeia de suprimentos, incluindo seus objetivos, atividades, fluxos e relacionamentos. Ele define gestão da cadeia de suprimentos como a ligação de processos desde a matéria-prima até o consumidor final. Também descreve os objetivos de qualidade, rapidez, confiabilidade, flexibilidade e custo, bem como atividades como gestão de suprimentos, distribuição, logística e gestão de materiais.
Este documento discute sistemas peer-to-peer (P2P) e como o Napster popularizou a troca de arquivos entre pares. Apresenta a arquitetura do Napster e como ele funcionava, além de discutir lições aprendidas com seu sucesso inicial e posterior bloqueio judicial. Também aborda middleware P2P e sobreposição de roteamento em sistemas distribuídos.
Mvc model view controller - java para desenvolvimento web
1. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 1/14
CAPÍTULO 9
MVC - Model View Controller
"Ensinar é aprender duas vezes."
— Joseph Joubert
Nesse capítulo, você aprenderá:
O padrão arquitetural MVC;
A construir um framework MVC simples.
9.1 - SERVLET OU JSP?
Colocar todo HTML dentro de uma Servlet realmente não nos parece a melhor
ideia. O que acontece quando precisamos mudar o design da página? O designer
não vai saber Java para editar a Servlet, recompilá-la e colocá-la no servidor.
Imagine usar apenas JSP. Ficaríamos com muito scriptlet, que é muito difícil de
dar manutenção.
Uma ideia mais interessante é usar o que é bom de cada um dos dois.
O JSP foi feito apenas para apresentar o resultado, e ele não deveria fazer acessos
a banco de dados e nem fazer a instanciação de objetos. Isso deveria estar em
código Java, na Servlet.
O ideal então é que a Servlet faça o trabalho árduo, a tal da lógica de negócio. E o
JSP apenas apresente visualmente os resultados gerados pela Servlet. A Servlet
ficaria então com a lógica de negócios (ou regras de negócio) e o JSP tem a lógica
de apresentação.
Imagine o código do método da servlet AdicionaContatoServletque fizemos
antes:
protectedvoidservice(HttpServletRequestrequest,
HttpServletResponseresponse){
//log
System.out.println("Tentandocriarumnovocontato...");
//acessaobean
Contatocontato=newContato();
//chamaossetters
...
//adicionaaobancodedados
ContatoDaodao=newContatoDao();
dao.adiciona(contato);
//ok....visualização
out.println("<html>");
out.println("<body>");
out.println("Contato"+contato.getNome()+
"adicionadocomsucesso");
out.println("</body>");
APOSTILA JAVA PARA DESENVOLVIMENTO WEB
2. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 2/14
Repare que, no final do nosso método, misturamos o código HTML com Java. O
que queremos extrair do código acima é justamente essas últimas linhas.
Seria muito mais interessante para o programador e para o designer ter um
arquivo JSP chamado contato-adicionado.jspapenas com o HTML:
Buscamos uma forma de redirecionar as requisições, capaz de encaminhar essa
requisição para um outro recurso do servidor: por exemplo indo de uma servlet
para um JSP.
Para isso, fazemos o dispatch das requisições, para que o JSP só seja
renderizado depois que suas regras de negócio, dentro de uma servlet por exemplo,
foram executadas.
9.2 - REQUEST DISPATCHER
Poderíamos melhorar a nossa aplicação se trabalhássemos com o código Java na
servlet e o HTML apenas no JSP.
A API de Servletsnos permite fazer tal redirecionamento. Basta conhecermos
a URL que queremos acessar e podemos usar um objeto RequestDispatcherpara
acessar outro recurso Web, seja esse recurso uma página JSP ou uma servlet:
Podemos facilmente executar a lógica de nossa aplicação Web em uma servlet e
então redirecionar para uma página JSP, onde você possui seu código HTML e tags
que irão manipular os dados trazidos pela servlet.
Forward e include
O método forwardsó pode ser chamado quando nada foi ainda escrito para a
saída. No momento que algo for escrito, fica impossível redirecionar o
usuário, pois o protocolo HTTP não possui meios de voltar atrás naquilo que
já foi enviado ao cliente.
Existe outro método da classe RequestDispatcherque representa a
inclusão de página e não o redirecionamento. Esse método se chama
includee pode ser chamado a qualquer instante para acrescentar ao
resultado de uma página os dados de outra.
out.println("</html>");
}
<html>
<body>
Contato${param.nome}adicionadocomsucesso
</body>
</html>
RequestDispatcherrd=request
.getRequestDispatcher("/contato-adicionado.jsp");
rd.forward(request,response);
3. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 3/14
Você pode também fazer o curso FJ-21 dessa apostila na Caelum
Querendo aprender ainda mais sobre Java na Web e
Hibernate? Esclarecer dúvidas dos exercícios? Ouvir
explicações detalhadas com um instrutor?
A Caelum oferece o curso FJ-21 presencial nas cidades de São
Paulo, Rio de Janeiro e Brasília, além de turmas incompany.
Consulte as vantagens do curso Java para Desenvolvimento Web.
9.3 - EXERCÍCIOS: REQUESTDISPATCHER
Vamos evoluir nossa adição de contatos antes puramente usando Servlets para
usar o RequestDispatcher.
1. Seguindo a separação aprendida nesse capítulo, queremos deixar em um JSP
separado a responsabilidade de montar o HTML a ser devolvido para o usuário.
Crie então um novo arquivo contato-adicionado.jsp na pasta WebContent:
2. Altere sua servlet AdicionaContatoServletpara que, após a execução da lógica
de negócios, o fluxo da requisição seja redirecionado para nosso novo JSP.
Remova no fim da classe o código que monta a saída HTML (as chamadas de
out.println). Vamos substituir por uma chamada ao RequestDispatchere exibir
o mesmo resultado usando o JSP que criamos. A chamada fica no final de nossa
servlet:
3. Teste a URL: http://localhost:8080/fj21-agenda/adiciona-contato.jsp
Resultado
<html>
<body>
Contato${param.nome}adicionadocomsucesso
</body>
</html>
RequestDispatcherrd=request
.getRequestDispatcher("/contato-adicionado.jsp");
rd.forward(request,response);
4. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 4/14
Perceba que já atingimos um resultado que não era possível anteriormente.
Muitos projetos antigos que foram escritos em Java utilizavam somente JSP ou
servlets e o resultado era assustador: diferentes linguagens misturadas num único
arquivo, tornando difícil a tarefa de manutenção do código. Com o conteúdo
mostrado até esse momento, é possível escrever um código com muito mais
qualidade: cada tecnologia com a sua responsabilidade.
9.4 - MELHORANDO O PROCESSO
Aqui temos várias servlets acessando o banco de dados, trabalhando com os
DAOs e pedindo para que o JSP apresente esses dados, o diagrama a seguir mostra a
representação do AdicionaContatoServletapós a modificação do exercício
anterior.
Temos o problema de ter muitas servlets. Para cada lógica de negócios, teríamos
uma servlet diferente, que significa várias portas de entradas, algo abominável em
um projeto de verdade. Imagine dez classes de modelo, cinco lógicas diferentes,
isso totaliza cinquenta formas diferentes de acesso.
E se quiséssemos fazer um Log das chamadas dessas lógicas? Teríamos que
espalhar o código para esse Log por toda nossa aplicação.
Sabemos da existência de ferramentas para gerar tal código automaticamente,
mas isso não resolve o problema da complexidade de administrar tantas servlets.
Utilizaremos uma ideia que diminuirá bastante o número de portas de entradas
em nossa aplicação: colocar tudo em uma Servlet só e, de acordo com os
parâmetros que o cliente usar, decidimos o que executar. Teríamos aí uma Servlet
para controlar essa parte, como o esboço abaixo:
//TodasaslógicasdentrodeumaServlet
@WebServlet("/sistema")
publicclassSistemaTodoServletextendsHttpServlet{
protectedvoidservice(HttpServletRequestrequest,
HttpServletResponseresponse){
Stringacao=request.getParameter("logica");
ContatoDaodao=newContatoDao();
if(acao.equals("AdicionaContato")){
Contatocontato=newContato();
contato.setNome(request.getParameter("nome"));
contato.setEndereco(request.getParameter("endereco"));
contato.setEmail(request.getParameter("email"));
dao.adiciona(contato);
RequestDispatcherrd=
request.getRequestDispatcher("/contato-adicionado.jsp");
rd.forward(request,response);
}elseif(acao.equals("ListaContatos")){
//buscaalistanoDAO
//despachaparaumjsp
}elseif(acao.equals("RemoveContato")){
//fazaremoçãoeredirecionaparaalista
}
}
}
5. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 5/14
Poderíamos acessar no navegador algo como
http://localhost:8080/<contexto>/sistema?logica=AdicionaContato.
Mas para cada ação teríamos um if/ else if, tornando a Servlet muito grande,
com toda regra de negócio do sistema inteiro.
Podemos melhorar fazendo refactoring de extrair métodos. Mas continuaríamos
com uma classe muito grande.
Seria melhor colocar cada regra de negócio (como inserir contato, remover
contato, fazer relatório etc) em uma classe separada. Cada ação (regra de negócio)
em nossa aplicação estaria em uma classe.
Então vamos extrair a nossa lógica para diferentes classes, para que nossa
Servlet pudesse ter um código mais enxuto como esse:
E teríamos classes AdicionaContato, ListaContatos, etc com um método
(digamos, executa) que faz a lógica de negócios apropriada.
Porém, a cada lógica nova, lógica removida, alteração etc, temos que alterar essa
servlet. Isso é trabalhoso e muito propenso a erros.
Repare dois pontos no código acima. Primeiro que ele possui o mesmo
comportamento de switch! E switchem Java quase sempre pode ser substituído
com vantagem por polimorfismo, como veremos a seguir. Outra questão é que
recebemos como parâmetro justamente o nome da classe que chamamos em
seguida.
Vamos tentar generalizar então, queremos executar o seguinte código:
Queremos pegar o nome da classe a partir do parâmetro e instanciá-la.
Entretanto não podemos, pois nomeDaClasseé o nome de uma variável e o código
acima não é válido. O nosso problema é que só sabemos o que vamos instanciar em
tempo de execução (quando o parâmetro chegar) e não em tempo de compilação.
Mas a partir do nome da classe nós podemos recuperar um objeto que
representará as informações contidas dentro daquela classe, como por exemplo
atributos, métodos e construtores. Para que consigamos esse objeto, basta
utilizarmos a classe Classinvocando o método forNameindicando de qual classe
queremos uma representação. Isso nos retornará um objeto do tipo Class
representando a classe. Como abaixo:
Ótimo, podemos ter uma representação de AdicionaContatoou de
ListaContatoe assim por diante. Mas precisamos de alguma forma instanciar
essas classes.
Já que uma das informações guardadas pelo objeto do tipo Classé o construtor,
nós podemos invocá-lo para instanciar a classe através do método newInstance.
E como chamar o método executa? Repare que o tipo declarado do nosso objeto
é Object. Dessa forma, não podemos chamar o método executa. Uma primeira
alternativa seríamos fazer novamente if/elsepara sabermos qual é a lógica que
if(acao.equals("AdicionaContato")){
newAdicionaContato().executa(request,response);
}elseif(acao.equals("ListaContato")){
newListaContatos().executa(request,response);
}
StringnomeDaClasse=request.getParameter("logica");
newnomeDaClasse().executa(request,response);
StringnomeDaClasse="br.com.caelum.mvc.logica."+
request.getParameter("logica");
Classclasse=Class.forName(nomeDaClasse);
Objectobjeto=classe.newInstance();
6. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 6/14
está sendo invocada, como abaixo:
Mas estamos voltando para o if/elseque estávamos fugindo no começo. Isso
não é bom. Todo esse if/elseé ocasionado por conta do tipo de retorno do
método newInstanceser Objecte nós tratarmos cada uma de nossas lógicas
através de um tipo diferente.
Repare que, tanto AdicionaContatoquanto ListaContatos, são consideradas
Logicas dentro do nosso contexto. O que podemos fazer então é tratar ambas
como algo que siga o contrato de Logicaimplementando uma interface de mesmo
nome que declare o método executa:
Podemos simplificar nossa Servletpara executar a lógica de forma polimórfica
e, tudo aquilo que fazíamos em aproximadamente 8 linhas de código, podemos
fazer em apenas 2:
Dessa forma, uma lógica simples para logar algo no console poderia ser
equivalente a:
Alguém precisa controlar então que ação será executada para cada requisição, e
que JSP será utilizado. Podemos usar uma servlet para isso, e então ela passa a ser a
servlet controladora da nossa aplicação, chamando a ação correta e fazendo o
dispatch para o JSP desejado.
Melhorando ainda mais nossa servlet controladora, poderíamos deixar nela a
responsabilidade de nos redirecionar para uma página JSP ou para qualquer outra
lógica ao final da execução das lógicas, bastando que o método executaretorne um
simples String, eliminando toda a repetição de código RequestDispatcher.
Começaríamos alterando a assinatura do método executada interface Logica
que era voide agora retornará String:
Depois faríamos as lógicas retornarem um Stringcom o nome do .jsp que deve
ser chamado ao final das suas execuções.
StringnomeDaClasse="br.com.caelum.mvc."+
request.getParameter("logica");
Classclasse=Class.forName(nomeDaClasse);
Objectobjeto=classe.newInstance();
if(nomeDaClasse.equals("br.com.caelum.mvc.AdicionaContato")){
((AdicionaContato)objeto).executa(request,response);
}elseif(nomeDaClasse.equals("br.com.caelum.mvc.ListaContatos")){
((ListaContatos)objeto).executa(request,response);
}//eassimpordiante
publicinterfaceLogica{
voidexecuta(HttpServletRequestreq,
HttpServletResponseres)
throwsException;
}
Logicalogica=(Logica)classe.newInstance();
logica.executa(request,response);
publicclassPrimeiraLogicaimplementsLogica{
publicvoidexecuta(HttpServletRequestreq,
HttpServletResponseres)
throwsException{
System.out.println("Executandoalogicaeredirecionando...");
RequestDispatcherrd=req
.getRequestDispatcher("primeira-logica.jsp");
rd.forward(req,res);
}
}
publicinterfaceLogica{
Stringexecuta(HttpServletRequestreq,HttpServletResponseres)
throwsException;
}
7. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 7/14
Por fim, a servlet controladora deve receber esse Stringe implementar o código
de RequestDispatcher:
9.5 - RETOMANDO O DESIGN PATTERN FACTORY
Note que o método forNameda classe Classretorna um objeto do tipo Class,
mas esse objeto é novo? Foi reciclado através de um cache desses objetos?
Repare que não sabemos o que acontece exatamente dentro do método forName,
mas ao invocá-lo e a execução ocorrer com sucesso, sabemos que a classe que foi
passada em forma de Stringfoi lida e inicializada dentro da virtual machine.
Na primeira chamada a Class.forNamepara determinada classe, ela é
inicializada. Já em uma chamada posterior, Class.forNamedevolve a classe que já
foi lida e está na memória, tudo isso sem que afete o nosso código.
Esse exemplo do Class.forNameé ótimo para mostrar que qualquer código que
isola a instanciação através de algum recurso diferente do construtor é uma
factory.
Tire suas dúvidas no novo GUJ Respostas
O GUJ é um dos principais fóruns brasileiros de computação
e o maior em português sobre Java. A nova versão do GUJ é
baseada em uma ferramenta de perguntas e respostas (QA) e
tem uma comunidade muito forte. São mais de 150 mil
usuários pra ajudar você a esclarecer suas dúvidas.
Faça sua pergunta.
9.6 - EXERCÍCIOS: CRIANDO NOSSAS LÓGICAS E A SERVLET DE CONTROLE
publicclassPrimeiraLogicaimplementsLogica{
publicStringexecuta(HttpServletRequestreq,
HttpServletResponseres)
throwsException{
System.out.println("Executandoalogicaeredirecionando...");
return"primeira-logica.jsp";
}
}
@WebServlet("/sistema")
publicclassControllerServletextendsHttpServlet{
protectedvoidservice(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
Stringparametro=request.getParameter("logica");
StringnomeDaClasse="br.com.caelum.mvc.logica."+parametro;
try{
Class<?>classe=Class.forName(nomeDaClasse);
Logicalogica=(Logica)classe.newInstance();
//RecebeoStringapósaexecuçãodalógica
Stringpagina=logica.executa(request,response);
//FazoforwardparaapáginaJSP
request.getRequestDispatcher(pagina).forward(request,response);
}catch(Exceptione){
thrownewServletException(
"Alógicadenegócioscausouumaexceção",e);
}
}
}
8. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 8/14
1. Crie a sua interface no pacote br.com.caelum.mvc.logica:
2. Crie uma implementação da interface Logica, nossa classe PrimeiraLogica,
também no pacote br.com.caelum.mvc.logica:
3. Faça um arquivo JSP chamado primeira-logica.jspdentro do diretório
WebContent:
4. Vamos escrever nossa Servlet que coordenará o fluxo da nossa aplicação.
Crie sua servlet chamada ControllerServletno pacote
br.com.caelum.mvc.servlet:
5. Teste a url http://localhost:8080/fj21-agenda/mvc?logica=PrimeiraLogica
9.7 - EXERCÍCIOS: CRIANDO UMA LÓGICA PARA REMOVER CONTATOS
1. Crie uma nova classe chamada RemoveContatoLogicno mesmo pacote
br.com.caelum.mvc.logica. Devemos implementar a interface Logicae durante
publicinterfaceLogica{
Stringexecuta(HttpServletRequestreq,
HttpServletResponseres)throwsException;
}
publicclassPrimeiraLogicaimplementsLogica{
publicStringexecuta(HttpServletRequestreq,
HttpServletResponseres)throwsException{
System.out.println("Executandoalogica...");
System.out.println("RetornandoonomedapáginaJSP...");
return"primeira-logica.jsp";
}
}
<html>
<body>
<h1>Páginadanossaprimeiralógica</h1>
</body>
</html>
@WebServlet("/mvc")
publicclassControllerServletextendsHttpServlet{
protectedvoidservice(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
Stringparametro=request.getParameter("logica");
StringnomeDaClasse="br.com.caelum.mvc.logica."+parametro;
try{
Classclasse=Class.forName(nomeDaClasse);
Logicalogica=(Logica)classe.newInstance();
Stringpagina=logica.executa(request,response);
request.getRequestDispatcher(pagina).forward(request,response);
}catch(Exceptione){
thrownewServletException(
"Alógicadenegócioscausouumaexceção",e);
}
}
}
9. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 9/14
sua execução receberemos um idpelo request e removeremos o contato no banco a
partir deste id.
2. Na página lista-contatos.jsp, vamos acrescentar uma coluna na tabela que
lista os contatos com um link chamando a lógica de remoção e passando o iddo
contato:
3. Teste a logica de remoção acessando http://localhost:8080/fj21-
agenda/lista-contatos.jspe clicando em algum link Remover.
9.8 - FAZENDO A LÓGICA PARA LISTAR OS CONTATOS
Agora que todo nosso processamento está passando pela Servlet controladora e
conseguimos organizar nosso código em camadas bem definidas, nos deparamos
com uma situação que ainda está um pouco distante do ideal.
Se olharmos a página lista-contatos.jspveremos que para fazer a listagem
dos contatos funcionar estamos criando uma instância da classe ContatoDaopara
utilizá-la depois no <c:forEach>recuperando uma lista de contatos.
Instanciar objetos da camada Model na camada View não é considerada uma boa
prática na arquitetura MVC (antipattern).
Podemos resolver facilmente isso tranferindo essa responsabilidade de montar a
lista de contatos para uma lógica ListaContatosLogice depois passá-la pronta
direto para o JSP pelo request.
publicclassRemoveContatoLogicimplementsLogica{
publicStringexecuta(HttpServletRequestreq,HttpServletResponseres)
throwsException{
longid=Long.parseLong(req.getParameter("id"));
Contatocontato=newContato();
contato.setId(id);
ContatoDaodao=newContatoDao();
dao.exclui(contato);
System.out.println("Excluindocontato...");
return"lista-contatos.jsp";
}
}
<!--códigoomitido-->
<c:forEachvar="contato"items="${dao.lista}">
<tr>
<!--códigoomitido-->
<td>
<ahref="mvc?logica=RemoveContatoLogic&id=${contato.id}">Remover</a>
</td>
</tr>
</c:forEach>
<!--códigoomitido-->
<jsp:useBeanid="dao"class="br.com.caelum.agenda.dao.ContatoDao"/>
<table>
<c:forEachvar="contato"items="${dao.lista}">
<tr>
<td>${contato.nome}</td>
<!--códigoomitido-->
</tr>
</c:forEach>
</table>
10. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 10/14
Para guardarmos algo na requisição, precisamos invocar o método
.setAttribute()no request. Passamos para esse método uma identificação para
o objeto que estamos guardando na requisição e também passamos o próprio
objeto para ser guardado no request.
Agora é só ajustar a página lista-contatos.jsppara não instanciar mais o
ContatoDao, removendo a linha <jsp:useBean id="dao"
class="br.com.caelum.agenda.dao.ContatoDao" />, e depois fazer com que o
<c:forEach>use a lista de contatos que foi colocada no request:
Nova editora Casa do Código com livros de uma forma diferente
Editoras tradicionais pouco ligam para ebooks e novas
tecnologias. Não conhecem programação para revisar os
livros tecnicamente a fundo. Não têm anos de experiência em
didáticas com cursos.
Conheça a Casa do Código, uma editora diferente, com
curadoria da Caelum e obsessão por livros de qualidade a preços justos.
Casa do Código, ebook com preço de ebook.
9.9 - EXERCÍCIOS: LÓGICA PARA LISTAR CONTATOS
1. Crie uma nova classe chamada ListaContatosLogicno mesmo pacote
br.com.caelum.mvc.logica. Devemos implementar nela a interface Logicae,
durante sua execução vamos criar uma lista de contatos através de uma instância
da classe ContatoDao, guardá-la no request e retornar para a servlet controladora:
2. Agora, vamos modificar a página lista-contatos.jsppara não instanciar mais
ContatoDaona View, removendo a linha <jsp:useBean id="dao"
class="br.com.caelum.agenda.dao.ContatoDao" />, e alterar o <c:forEach>
para usar a lista de contatos que foi colocada pela lógica no request ao invés de
${dao.lista}:
3. Agora podemos testar chamando: http://localhost:8080/fj21-agenda/mvc?
publicclassListaContatosLogicimplementsLogica{
publicStringexecuta(HttpServletRequestreq,HttpServletResponseres)
throwsException{
//Montaalistadecontatos
List<Contato>contatos=newContatoDao().getLista();
//Guardaalistanorequest
req.setAttribute("contatos",contatos);
return"lista-contatos.jsp";
}
}
<c:forEachvar="contato"items="${contatos}">
publicclassListaContatosLogicimplementsLogica{
publicStringexecuta(HttpServletRequestreq,HttpServletResponseres)
throwsException{
List<Contato>contatos=newContatoDao().getLista();
req.setAttribute("contatos",contatos);
return"lista-contatos.jsp";
}
}
<c:forEachvar="contato"items="${contatos}">
11. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 11/14
logica=ListaContatosLogic
4. Depois dessas alterações, será necessário alterar o retorno da classe
RemoveContatoLogicpois agora a chamada direta do lista-contatos.jspnão é
mais possível. Devemos agora chamar a lógica que lista os contatos:
9.10 - ESCONDENDO NOSSAS PÁGINAS
Como alteramos nossa listagem para ser acessada pela lógica
ListaContatosLogic, se acessarmos a jsp lista-contatos.jspdiretamente pelo
navegador, a página não mostrará nenhum contato. Precisamos então sempre
passar pela lógica, que por sua vez disponibilizará a listagem para a página.
Portanto, não devemos permitir que o usuário acesse diretamente nossa página.
Para impossibilitar este acesso direto, colocaremos nossas páginas dentro do
diretório WEB-INF/jsp.
Agora que estamos usando MVC, uma boa prática é não deixarmos os usuários
acessarem nossas páginas diretamente, e sim passando sempre por uma lógica.
Nossa lógica de listagem ficará da seguinte forma:
Além disso, se quisermos aplicar este mesmo conceito para as demais jsps,
precisaremos alterar as demais lógicas correspondentes acrescentando o diretório
WEB-INF/jspantes do nome da página.
9.11 - EXERCÍCIOS OPCIONAIS
1. Crie uma lógica chamada AlteraContatoLogice teste a mesma através de um
link na listagem da lista-contatos.jsp. Lembre-se, antes de chamar essa lógica
é preciso criar uma outra lógica que mostre os dados do contato em uma nova
página, permitindo assim a alteração dos dados, e só depois, no clique de um
botão, que a alteração será de fato efetivada.
2. Crie a lógica de adicionar contatos (AdicionaContatoLogic). Repare que ela é
bem parecida com a AlteraContatoLogic. Crie um formulário de adição de novo
contato. Coloque um link para adicionar novos contatos dentro do lista-
contatos.jsp.
3. Desafio: As lógicas de adição e de alteração ficaram muito parecidas. Tente criar
uma versão de uma dessas lógicas que faça as duas. Dica: A única diferença entre as
duas é a presença ou não do parâmetro Id.
publicclassRemoveContatoLogicimplementsLogica{
publicStringexecuta(HttpServletRequestreq,HttpServletResponseres)
throwsException{
//códigoomitido
return"mvc?logica=ListaContatosLogic";
}
}
publicclassListaContatosLogicimplementsLogica{
publicStringexecuta(HttpServletRequestreq,HttpServletResponseres)
throwsException{
List<Contato>contatos=newContatoDao().getLista();
req.setAttribute("contatos",contatos);
return"/WEB-INF/jsp/lista-contatos.jsp";
}
12. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 12/14
4. Desafio: Altere seu projeto para que nenhuma jsp seja acessível diretamente,
colocando-as no diretório WEB-INF/jsp. Modifique também suas lógicas de
acordo. OBS: Deverá ser criada uma nova lógica para a visualização do formulário
de adição de contatos.
Já conhece os cursos online Alura?
A Alura oferece dezenas de cursos online em sua
plataforma exclusiva de ensino que favorece o
aprendizado com a qualidade reconhecida da Caelum.
Você pode escolher um curso nas áreas de Java, Ruby,
Web, Mobile, .NET e outros, com uma assinatura que dá
acesso a todos os cursos.
Conheça os cursos online Alura.
9.12 - MODEL VIEW CONTROLLER
Generalizando o modelo acima, podemos dar nomes a cada uma das partes dessa
nossa arquitetura. Quem é responsável por apresentar os resultados na página web
é chamado de Apresentação (View).
A servlet (e auxiliares) que faz os dispatches para quem deve executar
determinada tarefa é chamada de Controladora (Controller).
As classes que representam suas entidades e as que te ajudam a armazenar e
buscar os dados são chamadas de Modelo (Model).
Esses três formam um padrão arquitetural chamado de MVC, ou Model View
Controller. Ele pode sofrer variações de diversas maneiras. O que o MVC garante é
a separação de tarefas, facilitando assim a reescrita de alguma parte, e a
manutenção do código.
O famoso Struts ajuda você a implementar o MVC, pois tem uma controladora já
pronta, com uma série de ferramentas para te auxiliar. O Hibernate pode ser
usado como Model, por exemplo. E como View você não precisa usar só JSP, pode
usar a ferramenta Velocity, por exemplo.
9.13 - LISTA DE TECNOLOGIAS: CAMADA DE CONTROLE
Há diversas opções para a camada de controle no mercado. Veja um pouco sobre
algumas delas:
1. Struts Action - o controlador mais famoso do mercado Java, é utilizado
principalmente por ser o mais divulgado e com tutoriais mais acessíveis. Possui
vantagens características do MVC e desvantagens que na época ainda não eram
percebidas. É o controlador pedido na maior parte das vagas em Java hoje em dia. É
um projeto que não terá grandes atualizações pois a equipe dele se juntou com o
WebWork para fazer o Struts 2, nova versão do Struts incompatível com a primeira
e totalmente baseada no WebWork.
2. VRaptor - desenvolvido inicialmente por profissionais da Caelum e baseado em
diversas ideias dos controladores mencionados acima, o VRaptor usa o conceito de
favorecer Convenções em vez de Configurações para minimizar o uso de XML e
anotações em sua aplicação Web.
3. JSF - JSF é uma especificação Java para frameworks MVC. Ele é baseado em
componentes e possui várias facilidades para desenvolver a interface gráfica.
Devido ao fato de ser um padrão oficial, ele é bastante adotado. O JSF é ensinado no
curso FJ-22 e em detalhes no nosso curso FJ-26.
13. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 13/14
CAPÍTULO ANTERIOR:
Tags customizadas com Tagfiles
PRÓXIMO CAPÍTULO:
Recursos importantes: Filtros
4. Spring MVC - é uma parte do Spring Framework focado em implementar um
controlador MVC. É fácil de usar em suas últimas versões e tem a vantagem de se
integrar a toda a estrutura do Spring com várias tecnologias disponíveis.
9.14 - LISTA DE TECNOLOGIAS: CAMADA DE VISUALIZAÇÃO
Temos também diversas opções para a camada de visualização. Um pouco sobre
algumas delas:
JSP - como já vimos, o JavaServer Pages, temos uma boa ideia do que ele é, suas
vantagens e desvantagens. O uso de taglibs (a JSTL por exemplo) e expression
language é muito importante se você escolher JSP para o seu projeto. É a escolha
do mercado hoje em dia.
Velocity - um projeto antigo, no qual a EL do JSP se baseou, capaz de fazer tudo o
que você precisa para a sua página de uma maneira extremamente compacta.
Indicado pela Caelum para conhecer um pouco mais sobre outras opções para
camada de visualização.
Freemarker - similar ao Velocity e com ideias do JSP - como suporte a taglibs - o
freemarker vem sendo cada vez mais utilizado, ele possui diversas ferramentas na
hora de formatar seu texto que facilitam muito o trabalho do designer.
Sitemesh - não é uma alternativa para as ferramentas anteriores mas sim uma
maneira de criar templates para seu site, com uma ideia muito parecida com o
struts tiles, porém genérica: funciona inclusive com outras linguagens como PHP
etc.
Em pequenas equipes, é importante uma conversa para mostrar exemplos de
cada uma das tecnologias acima para o designer, afinal quem vai trabalhar com as
páginas é ele. A que ele preferir, você usa, afinal todas elas fazem o mesmo de
maneiras diferentes. Como em um projeto é comum ter poucos designers e muitos
programadores, talvez seja proveitoso facilitar um pouco o trabalho para aqueles.
Você não está nessa página a toa
Você chegou aqui porque a Caelum é referência nacional em
cursos de Java, Ruby, Agile, Mobile, Web e .NET.
Faça curso com quem escreveu essa apostila.
Consulte as vantagens do curso Java para Desenvolvimento
Web.
9.15 - DISCUSSÃO EM AULA: OS PADRÕES COMMAND E FRONT CONTROLLER
Você encontra a Caelum também em:
14. 25/4/2014 MVC - Model View Controller - Java para Desenvolvimento Web
http://www.caelum.com.br/apostila-java-web/mvc-model-view-controller/ 14/14
Blog Caelum
Cursos Online
Facebook
Newsletter
Casa do Código
Twitter
Code Editor New Browser Agile Methods New Web Browser Firefox Browser Agile Software