A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

J2EE Projeto de Sistemas de Software. 2 © LES/PUC-Rio Agenda Visão geral da Arquitetura J2EE Servlets JSP Boas Práticas –MVC –Command.

Apresentações semelhantes


Apresentação em tema: "J2EE Projeto de Sistemas de Software. 2 © LES/PUC-Rio Agenda Visão geral da Arquitetura J2EE Servlets JSP Boas Práticas –MVC –Command."— Transcrição da apresentação:

1 J2EE Projeto de Sistemas de Software

2 2 © LES/PUC-Rio Agenda Visão geral da Arquitetura J2EE Servlets JSP Boas Práticas –MVC –Command

3 3 © LES/PUC-Rio Java 2 Enterprise Edition (J2EE) Arquitetura de referência Plataforma de Tecnologias Desenvolvimento de aplicações corporativas distribuídas Provê –Suporte ao gerenciamento automático de componentes –Infra-estrutura de serviços complexos Transações Segurança Persistência Objetivo Central –Desenvolvedores podem concentrar-se no desenvolvimento da lógica de negócio

4 4 © LES/PUC-Rio Componentes J2EE Aplicações J2EE –Constituídas por componentes Componente J2EE –Unidade funcional de software –Formada por Conjunto de classes Arquivos relacionados –Pode se comunicar com outros componentes –Pode ser reusado durante a construção de aplicações J2EE –Deve seguir a especificação J2EE

5 5 © LES/PUC-Rio Modelos de Componente J2EE Aplicações stand-alone –aplicação Java –mantidos e executados no cliente –GUI Componentes Web –Servlet Objetos java que respondem requisições em HTTP Resposta normalmente é Html gerado dinamicamente Mantidos e executados no servidor –JSP Linguagem de script adequada para escrita de servlets de apresentação Applets –Normalmente executados dentro do browser –Mantidos pelo servidor e executados no cliente Enterprise JavaBeans (EJBs) –componentes mantidos e executados em um ambiente gerenciado pelo servidor –Provê Monitoramento transacional Persistência Distribuição de objetos Segurança –Não são JavaBeans! Plataforma J2EE define quatro tipos diferentes de componentes de aplicação

6 6 © LES/PUC-Rio Exemplos de Componentes J2EE Componentes Clientes –Applets –Aplicações Java Stand-Alone Componentes Web –Servlets –JSPs Componentes EJB –Session Beans –Entity Beans –Message-Driven Beans

7 7 © LES/PUC-Rio Arquitetura de Aplicações J2EE

8 8 © LES/PUC-Rio Servidores J2EE Componentes J2EE são instalados em servidores Servidores –Oferecem infra-estrutura para gerenciamento do ciclo de vida dos componentes –Incluem containers Web e EJB –Provêem diversos serviços para os componentes Transações Persistência Segurança Nomes Distribuição

9 9 © LES/PUC-Rio J2EE – Tecnologias Associadas Panacéia de tecnologias –Ambientes de desenvolvimento –Servidores de aplicação –Frameworks de apoio ao desenvolvimento –Padrões de Projeto –Ferramentas de geração de código

10 Java Servlets

11 11 © LES/PUC-Rio Servlet - Conceito Aplicação Java executada do lado do servidor, estendendo a capacidade do servidor web –Alternativa Java para os scripts CGI –Gerenciado pelo módulo web Vantagens –Melhor aproveitamento dos recursos do sistema –Fácil de programar –Portável

12 12 © LES/PUC-Rio Arquitetura Cliente-Servidor GET (request) Documento HTML retorna (response) Documento HTML Cliente / Browser Servidor Formulário Submetido via POST (request) Servidor retorna HTML gerado pelo Servlet

13 13 © LES/PUC-Rio Arquitetura Cliente-Servidor Arquitetura baseada na divisão do processamento em processos distintos –Servidor responsável pela manutenção da informação –Clientes responsáveis pela obtenção dos dados envio de pedidos ao processo servidor Cliente faz requisições utilizando protocolo HTTP Para cada requisição o servidor cria uma nova Thread

14 14 © LES/PUC-Rio Requisitando um Servlet via GET GET (HTTP)

15 15 © LES/PUC-Rio Requisitando um Servlet via POST

16 16 © LES/PUC-Rio API de Servlet –Conjunto de classes Java –Define interface padrão entre o cliente web e o servidor web java.lang.Object | +----javax.servlet.GenericServlet | +----javax.servlet.http.HTTPServlet | +----com.teccomm.pss.MeuServlet

17 17 © LES/PUC-Rio HttpServlet Tratador de requisições HTTP Trata métodos HTTP específicos –doGet(HttpServletRequest req, HttpServletResponse resp) –doPost(HttpServletRequest req, HttpServletResponse resp) doGet e doPost –Chamados pelo método service() Subclasses reescrevem os métodos –doGet –doPost Podem reescrever os métodos –init() –destroy()

18 18 © LES/PUC-Rio Ciclo de Vida do Servlet Criação e inicialização –Realizado uma única vez –init(ServletConfig config) –Sempre chama o método da super classe primeiro super.init(config) –Pode sinalizar a exceção UnavailableException caso ocorra algum erro durante o processo de inicialização Os médotos service(), doGet(), doPost() são chamados para atender requisições de clientes –Cada requisição é atendida por uma nova thread destroy() e Coleta de lixo –Executado somente uma vez –Alguns servidores somente removem o servlet quando ocorre o shutdown –Utilizado para liberar recursos

19 19 © LES/PUC-Rio Recapitulando... Para criar um Servlet é necessário –Estender a classe HttpServlet pacote javax.servlet.http do JSDK –Implementar os métodos doGet ou doPost

20 20 © LES/PUC-Rio Request e Response Métodos doGet(), doPost() recebem dois parâmetros –HttpServletRequest encapsula os parâmetros da requisição –HttpServletResponse encapsula a resposta ao cliente

21 21 © LES/PUC-Rio HttpServletRequest Interface que encapsula a requisição feita pelo cliente através do protocolo HTTP Possui métodos que permitem recuperar os dados da requisição –cabeçalho –dados de formulários ou parâmetros enviados –informações sobre a sessão do cliente

22 22 © LES/PUC-Rio HttpServletRequest Alguns métodos definidos em HttpServletRequest para manipulação de Parâmetros –java.util.Enumeration getParameterNames() Obtém listagem, contendo nomes de parâmetros da requisição –java.lang.String[] getParameterValues(java.lang.String name) Obtém valores do parâmetro name da requisição –java.lang.String getParameter(java.lang.String name) Obtém valor do parâmetro name da requisição

23 23 © LES/PUC-Rio HttpServletResponse Interface que encapsula a resposta ao cliente Possui um método responsável por recuperar o canal de resposta com o cliente –getWriter() retorna um PrintWriter Ex: PrintWriter out = response.getWriter(); out.println(Escrevendo no cliente); Também é possível configurar qual é o tipo dos dados que estão sendo enviados de volta ao cliente –setContentType(String type) –Os tipos mais comuns são text/html, text/xml –O método setContentType deve ser chamado antes do método getWriter

24 24 © LES/PUC-Rio Primeiro Exemplo: Hello World! Hello World!

25 25 © LES/PUC-Rio Segundo Exemplo

26 26 © LES/PUC-Rio Gerenciamento de sessão (I) Protocolo HTTP –Protocolo sem estado Não é possível a princípio conhecer o estado do cliente anterior à uma requisição O gerenciamento de sessão provê uma maneira de identificar usuários através de várias requisições HTTPs e recuperar suas informações –Dados do estado do cliente Para obter uma sessão –HttpSession getSession() Obtém sessão existente, caso não exista retorna uma nova sessão –HttpSession getSession(boolean create) Obtém sessão existente ou cria uma nova sessão dependendo do valor do parâmetro create

27 27 © LES/PUC-Rio Gerenciamento de sessão (II) Métodos para manipulação de objetos em sessão –void removeAttribute(java.lang.String name) Retira objeto da sessão –void setAttribute(java.lang.String name, java.lang.Object value) Coloca ou sobreescreve objeto na sessão identificado por name –java.lang.Object getAttribute(java.lang.String name) Obtém objeto da sessão –java.util.Enumeration getAttributeNames() Obtém os nomes de todos os objetos armazenados na sessão

28 28 © LES/PUC-Rio Gerenciamento de sessão (III) Tempo de duração da sessão –Sessões em geral tem intervalo máximo de tempo que podem ficar inativas public int getMaxInactiveInterval() public void setMaxInactiveInterval(int interval) As sessões também podem ser encerradas explicitamente pelo programador –public void invalidate()

29 29 © LES/PUC-Rio Exemplo – Carrinho de compras (I) Adicionando parâmetros à Sessão

30 30 © LES/PUC-Rio Exemplo – Carrinho de compras (II) Recuperando parâmetros da Sessão

31 31 © LES/PUC-Rio Exemplo – Carrinho de compras (III) Recuperando parâmetros da Sessão

32 32 © LES/PUC-Rio Exemplo – Carrinho de compras (IV) Encerrando a Sessão

33 33 © LES/PUC-Rio Parâmetros de Inicialização Motivação –Muitas vezes existem valores que são constantes durante a execução do servlet, mas que podem mudar durante a vida da aplicação –Ex: Localização de recursos Mensagens padrão

34 34 © LES/PUC-Rio Parâmetros de Inicialização Configurando no Tomcat –Arquivo web.xml

35 35 © LES/PUC-Rio Parâmetros de Inicialização Principais métodos –Classes Servlet e ServletConfig public java.util.Enumeration getInitParameterNames() public java.lang.String getInitParameter(java.lang.String name)

36 36 © LES/PUC-Rio Inicializando o Servlet

37 37 © LES/PUC-Rio Inicializando o Servlet

38 38 © LES/PUC-Rio Colocando para Funcionar Para que o servlet funcione –Necessário que um servidor web/aplicação com suporte a java que escute as requisições do cliente –Ex: IBM WebSphere Application Server Jakarta Tomcat Java Web Server Etc. Jakarta Tomcat –Servidor gratuito baseado em java –Configurável de maneira simples via XML –Oferece suporte a Java (Servlets e JSP)

39 39 © LES/PUC-Rio Configurando o Tomcat Onde colocar as classes dos Servlets? –Em geral as classes são colocadas no diretório: %TOMCAT_HOME%\webapps\XXX\WEB-INF\classes –A partir deste diretório devem ser colcadas em seus próprios pacotes

40 40 © LES/PUC-Rio Configurando o Tomcat Registrando os Servlets –Servlets devem ser chamados com seu nome completo (Pacotes e classe) Muitas vezes o nome se torna grande demais –Pode-se então dar um nome ao servlet através do qual o servidor redirecionará a chamada à classe específica –Arquivo web.xml Localizado em geral no diretório %TOMCAT_HOME%\webapps\ROOT\WEB-INF –Registrando um servlet ServletSes interfPesquisa.ServletSes

41 41 © LES/PUC-Rio Jakarta Tomcat

42 42 © LES/PUC-Rio Configurando o Tomcat Outras configurações –Arquivo server.xml Localizado no diretório %TOMCAT_HOME%\conf –Configuração da porta do servidor …

43 JSP

44 44 © LES/PUC-Rio Arquitetura HTML de resposta montado a partir de sucessivos comandos out.println(...). Servlet + Controladores (Controle) Objetos de Negócio (Modelo) JavaBean de Resposta Browser JSP doGet() doPost() (Visão)

45 45 © LES/PUC-Rio JSP - Conceito Tecnologia que permite combinar informações estáticas com informações geradas dinamicamente Script executado no servidor –Combinação de sintaxe JSP e tags de marcação –Tags estáticos HTML, XML –Conteúdo dinâmico gerado pelo código do script Java Exemplo Primeiro JSP Data e hora:

46 46 © LES/PUC-Rio Compilação de JSP (cont.) xxx.jsp requisição para xxx.jsp resposta resposta de erro xxx.class (servlet) Geração de Código Java xxx.java (servlet) Compilação

47 47 © LES/PUC-Rio Escopo dos Atributos O JSP pode acessar objetos em tempo de execução em quatro escopos diferentes –Página Objeto PageContext corrente (pageContext) –Requisição Objeto HttpServletRequest corrente (request) –Sessão Objeto HttpSession corrente (session) –Aplicação Objeto ServletContext corrente (servletContext) Para armazenar informações –setAttribute(String, Object) Para recuperar informações –getAttribute(String)

48 48 © LES/PUC-Rio Do Servlet ao JSP Include –getServletContext().getRequestDispatcher("pagina.jsp"). include(request, response); Forward –getServletContext().getRequestDispatcher("pagina.jsp"). forward(request, response); Servlet JSP ServletJSP

49 49 © LES/PUC-Rio Tags JSP Diretivas – Configuração do processador JSP – Inclusão estática de conteúdo – Encaminhamento de requisições para outros servidores Comandos de script –Inserção de código para a programação de conteúdo dinâmico Ações –Tags de alto nível que encapsulam padrões de programação mais corriqueiros

50 50 © LES/PUC-Rio Diretivas nome-da-diretiva [nome-atributo = valor-do-atributo]* %> Diretivas disponíveis – Inclusão em tempo de compilação –

51 51 © LES/PUC-Rio Atributos da Diretiva Page language=nome-da-linguagem-de-script contentType=mime-type | mime-type; charset=nome- charset errorPage=url-página-de-erro isErrorPage=true | false buffer=none|tamanho-em-kb auto-flush=true | false import=lista-de-pacotes extends=nome-da-classe-base session=true | false isThreadSafe=true | false info=texto-informativo

52 52 © LES/PUC-Rio Exemplos de Diretivas Diretiva Include Diretiva Taglib Diretiva Page Ou

53 53 © LES/PUC-Rio Tags de Script Declarações Scriptlets Expressões Comentários

54 54 © LES/PUC-Rio Declarações Exemplos <%! int i = 0; public void metodo {...} %> Declara variáveis ou métodos a serem utilizados no código JSP

55 55 © LES/PUC-Rio Scriptlets Exemplo <% String name = null; if (request.getParameter(nome") == null) { %> <% } else { foo.setName(request.getParameter(nome")); } %> Um scriptlet pode conter qualquer número de instruções, variáveis, métodos, declarações ou expressões válidos

56 56 © LES/PUC-Rio Expressão Exemplo O mapa tem entradas. Esta tag contém uma expressão que é avaliada e convertida para string, depois de processada.

57 57 © LES/PUC-Rio Comentários ] --> Exemplo O processador JSP trata um comentário como texto HTML não interpretado, retornando-o ao cliente. Uma expressão pode ser incluída em um comentário, sendo avaliada e seu resultado é retornado ao usuário juntamente com o HTML de resposta

58 58 © LES/PUC-Rio Comentários para Desenvolvimento Exemplo Um teste - comentário O processador JSP simplesmente ignora este tipo de comentário e não processa nenhum código ou expressão contida entre os delimitadores. Este tipo de comentário não será enviado para o cliente

59 59 © LES/PUC-Rio Objetos Pré-Definidos Disponíveis para scriplets e expressões –request –response –session –out –exception (somente em páginas de erro) –page

60 60 © LES/PUC-Rio

61 61 © LES/PUC-Rio Ações jsp:useBean jsp:setProperty jsp:getProperty jsp:include jsp:forward –ou então tags personalizadas via taglib

62 62 © LES/PUC-Rio jsp:useBean Cria ou recupera uma instância de um bean A lista_de_atributos pode ser –id: nomeDaInstânciaDoBean –scope:page|request|session|application –class: com.teccomm.NomeClasse –type: com.teccomm.NomeDoTipo Exemplo –

63 63 © LES/PUC-Rio jsp:include e jsp:forward Ações utilizadas para o encadeamento de páginas jsp –Suspende o processamento da página chamadora e repassa o controle para a página chamada até que esta retorne-o –O processamento da página chamadora é terminado e o controle é repassado sem espera de retorno para a página chamada

64 64 © LES/PUC-Rio jsp:include }"/> Exemplo

65 65 © LES/PUC-Rio jsp:forward }"/> Exemplo A tag repassa o objeto request enviado para o arquivo JSP para que seja processado por outra aplicação O processador JSP não executa o restante das instruções contidas após a tag.

66 Boas Práticas MVC

67 67 © LES/PUC-Rio Servlet + Modelo de Objetos Agora sabemos –Programar servlets –Modelar um sistema orientado a objetos Mas como fazer os dois funcionarem juntos?

68 68 © LES/PUC-Rio Servlet + Modelo de Objetos browser HTTP Servlet ??

69 69 © LES/PUC-Rio Arquitetura MVC O que é MVC? –MVC – Model-View-Controller –Surgiu nos anos 80 com SmallTalk Sugere a divisão de uma aplicação visual em 3 partes fundamentais –Model Representa o modelo da sua aplicação, com as regras de negócio (business logic) e todo o processamento da aplicação –View Representa a informação e recolhe os dados fornecidos pelo usuário –Controller Recebe as informações da entrada e as transmite para o modelo

70 70 © LES/PUC-Rio Arquitetura MVC Pela arquitetura, a interação de um usuário com o sistema se dá através de seqüências de chamadas MVC Servlet + Controladores (Controle) Objetos de Negócio (Modelo) JavaBean de Resposta Browser JSP doGet() doPost() (Visão)

71 71 © LES/PUC-Rio Arquitetura MVC O modelo será uma aplicação Java orientada a objetos O controlador será alguma tecnologia de implementação (padrão comando) que juntamente com o Servlet redirecionará as chamadas feitas pelo cliente aos objetos responsáveis no modelo A apresentação será representada pelo JSP

72 72 © LES/PUC-Rio MVC Servlet + Controladores (Controle) Objetos de Negócio (Modelo) JavaBean de Resposta Browser JSP doGet() doPost() (Visão)

73 Boas Práticas Padrão Command

74 74 © LES/PUC-Rio Padrão Command Objetivos –Reduzir acoplamento entre as requisições dos clientes e os objetos que as executam –Parametrizar objetos por uma ação a ser executada –Especificar, enfileirar e executar solicitações em tempos diferentes para desfazer operações, por exemplo –Estruturar um sistema em torno de operações de alto nível, como transações, por exemplo

75 75 © LES/PUC-Rio Padrão Command (I) Como implementar? –Atributo hidden

76 76 © LES/PUC-Rio Padrão Command (II) Como implementar? –Atributo hidden Ex: Atributo hidden + Comando abstrato + Hashtable

77 77 © LES/PUC-Rio Padrão Command (III)

78 78 © LES/PUC-Rio Padrão Command (IV) O Comando Genérico: HttpServletRequest –Passa o comando a ser instanciado (input do formulário) HttpServletResponse –Contém o PrintWriter que deverá receber as respostas do Comando

79 79 © LES/PUC-Rio Padrão Command (V) O Servlet deve possuir um atributo HashTable com todos os Commands Ao ser iniciado, cada Comando deve ser instanciado e inserido na HashTable

80 80 © LES/PUC-Rio Padrão Command (VI)

81 81 © LES/PUC-Rio Padrão Command (VII)

82 82 © LES/PUC-Rio Dicas de Modelagem

83 Fim Perguntas?


Carregar ppt "J2EE Projeto de Sistemas de Software. 2 © LES/PUC-Rio Agenda Visão geral da Arquitetura J2EE Servlets JSP Boas Práticas –MVC –Command."

Apresentações semelhantes


Anúncios Google