Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 UNIVERSIDADE VEIGA DE ALMEIDA Programação para dispositivos móveis AVA2 Criação de aplicativo Web usando interface JSF e modelos de arquitetura MVC, com integração dos recursos das bibliotecas JPA Prof. PAULO MÁRCIO SOUZA FREIRE Marcio Rodrigues de Freitas RIO DE JANEIRO Junho/2022 2 Introdução: O trabalho tem como objetivo, continuar a trabalhar classes em java, passando por filtros, usando criação de XHTML e trabalhando o objeto managebean. 3 Sumário: Conteúdo………………………………………….4 Conclusão………………………………………...13 Referencia………………………………………...14 4 Conteúdo: A) Uma descrição detalhada do modelo de arquitetura MVC: Vantagens de utilizar esse modelo.MVC é nada mais que um padrão de arquitetura de software, separando sua aplicação em 3 camadas. Camada de interação do usuário (view), camada de processamento de dados (model), camada de controle (controller). Model: Sempre que você pensa em manipulação de dados, os modelos vêm à mente. Ele é responsável por ler e gravar dados e validá-los. View: O nível de interação do usuário. Exibe apenas dados. Controller: é responsável por receber todas as solicitações do usuário. Seus métodos chamados actions são responsáveis pela página, controlando o modelo a ser utilizado e a visualização que será exibida ao usuário. Conforme vem crescendo a complexidade dos sistemas e sites desenvolvidos atualmente, essa arquitetura se concentra em dividir um grande problema em problemas menores. Portanto, qualquer tipo de alteração em uma das camadas não interferirá nas demais camadas, facilitando a atualização de layouts, alteração de regras de negócios e manutenção de código. Alguns benefícios do uso do MVC: Facilita a reutilização de códigos; Fácil de manter e aumentar os recursos; Mais consolidação de equipe e/ou divisão de trabalho; Muitas tecnologias adotaram essa arquitetura. Facilidade de manter seu código sempre limpo; 5 B) descreva a configuração das unidades de persistência no arquivo “persistence.xml” Persistence.xml é um arquivo de configuração usado pelo JPA. O conteúdo deste arquivo contém informações como URL, nome de usuário, senha. Além de conter um mapa das classes que são transformadas ou se tornaram tabelas, esse mapeamento é feito com anotações. Um exemplo de um arquivo persistence.xml: <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http:// www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http:// java.sun.com/xml/ns/persistence/persistence_2_0.xsd" > <persistence-unit name="Hello" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence </provider> <properties> <property name="hibernate.show_sql" value="true" /> <property name="javax.persistence.jdbc.driver" value="com.mys ql.jdbc.Driver" /> <property name="javax.persistence.jdbc.url" value="jdbc:mysql ://127.0.0.1:3306/Hello"/> <property name="javax.persistence.jdbc.user" value="root" /> 6 <property name="javax.persistence.jdbc.password" value="root" /> <property name="hibernate.dialect" value="org.hibernate.diale ct.MySQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit> </persistence> Em <persistence-unit name=”Hello” transaction-type=”RESOURCE_LOCAL”> Temos duas configurações importantes, que são definidas. Em unit name define sobre a configuração, que vai ser utilizada. Podemos ter varios tipos como transaction-type, no mesmo arquivo, que define como será o tipo de transação. Em <provider>org.hibernate.ejb.HibernatePersistence</provider> é idicado qual vai ser o provider da aplicação Já, hibernate.show_sql faz com que a exibição do SQL gerado, seja habilitado. Em javax.persistence.jdbc.driver é definido o agente de conexão com o banco de dados que é utilizado, javax.persistence.jdbc.url é a URL do banco de dados juntos com o schema. Em javax.persistence.jdbc.user e javax.persistence.jdbc.password usuário e senha do banco de dados. Em hibernate.dialect o dialeto que o Hibernate irá utilizar. 7 C) descreva o mapeamento objeto-relacional das entidades, no qual as classes da aplicação são estruturadas para tabelas do banco de dados pela anotação “@Entity”. O mapeamento objeto-relacional foi desenvolvido para abstrair A diferença entre o modelo relacional e o paradigma orientado a objetos. No java, após a especificação JPA, com as implementações, como Hibernate, EclipseLink e OpenJPA. Assim sendo, é só fazer o uso das anotações que são disponibilizadas pela JPA. para viabilizar o mapeamento, evitando assim criar fortes dependências com as implementações. A anotação @Entity é usada para informar que uma classe também é uma entidade. A partir daí, a JPA vai estabelecer a ligação entre as entidades e uma tabela com o mesmo nome, que esteja no banco de dados, onde os dados desse tipo de objeto poderão persistir. Uma entidade representa, uma tabela do banco de dados, e cada uma das instâncias dessa entidade, representa uma linha da tabela. @entity public class Carro { } Neste código, a classe Carro será uma entidade e terá uma tabela de mesmo nome no banco de dados. Objetos do tipo Carro, quando persistidos, terão seus dados armazenados nessa tabela. 8 D) descreva os métodos para a inicialização e a finalização das unidades de persistência usando a interface javax.servlet.Filter. Filtros são as classes que permitem que o código seja executado antes da requisição e depois que foi gerada a resposta. Para criar filtros utilizando a API de Servlets, basta ser criado uma classe que implemente a interface javax.servlet.Filter e anotarmos a classe com @WebFilter. assim que for implementada a interface Filter, nós temos que implementar 3 métodos, fazendo assim tambem em javax.servlet.Servlet, estão associados ao ciclo de vida do objeto: Init (FilterConfig config) – é usado para fazer a inicialização (start) do filtro.assim que a aplicação web é chamada, o mesmo é iniciado. O parâmetro FilterConfig obtem os parâmetros de configuração do filtro definidos no descritor web. Destroy() – chamado quando a aplicação web é finalizada. DoFilter (ServletRequest request, ServletResponse response, FilterChain chain) – É o principal método da interface, método principal da interface, pois é nele que o filtro realiza seu trabalho. Veja também que a assinatura é praticamente igual no método service() de Servlet, exceto pela presença de um parâmetro adicional, como exemplo o FilterChain. Um filtro vai além de um servlet, é possível também fechar “a porta” com o mesmo,esse power vem do argumento FilterChain (a cadeia de filtros).Ele permite que nós indiquemos ao container que o request tem que prosseguir com seu processamento. Isso é feito com uma chamada do método doFilter da classe FilterChain : 9 E) descreva os métodos para a abertura e a confirmação das transações da aplicação usando a interface javax.servlet.Filter. Implemente o tratamento de exceções. public vold doFllter(servletRequest req, ServletResponse res, FilterChain fc) throws IOEXCeption, ServletException, FacesException { HttpServletRequest hreq (HttpServletRequest) req; HttpservletResponse resp (HttpServlet Response) res; Hibernateutil.beginTransaction ().; try { fc.doFilter (req, res); HibernateUtil.commit Transaction () ; } catch (EXception e) { HibernateUtil. rollbackTransaction () ; resp.sendRedirect ("erro.jsf") throw new ServletException (e) ; } finally { HibernateUt il.closeSession (); } } 10 F) crie um objeto “Managed Bean” para gerar um número randômico entre zero e um valor numérico inserido pelo usuário usando o método “Random” da biblioteca “Math”. Ao final, guarde o valor em uma propriedade do “Managed Bean”. package random.bean import java.io.Serializable; import java.util.Random; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext ; import javax.servlet.http.HttpSession;@ManagedBean @sessionscoped public class RandomNumberBean implements Serializable { public static void main (String [] args) { Random gerador new Random ); for (int i = 0; i < 10; i++) { System.out.printIn (gerador.nextInt (23) ); } } FacesContext context - FacesContext.getCurrentNumber () ; NumberGenerated NumberGenerated = (NumberGenerated) context.getELContext () -getELResolver() .getValue (context.getELContext (), null, "NumberGenerated"); } 11 G) crie uma página XHTML de entrada de dados pelo usuário. <xml version="1.0 encoding= “IS0-8859-1”?> <!DOCTYPE html PUBLIC“-//W3C//DTD XHTML 1.e strict//EN” https://www.W3.org/TR/xh <html xmlns="https://www. w3.org/1999/xhtml" xmlns:h="https://java.sun.com/jsf/html xmlns : f-"https ://java. sun.com/jsf/core" > <h:head> <meta http-equiv-"Content- Type" content-" text/html; charset-ISO-8859- 1" /> <title>Random Number</title> </h:head> <h:body> <h:form> <h:panelGrid columns= "2"> <h:output Label value="Number:" /> <h:input Text value="#{number.Number} " /> <h:commandButton value="Gerar" action= "#{number.gerar}" /> </h:panelGrid> <h:messages/> </h:form> </h:body> </html> 12 H) crie uma página XHTML de resposta para exibir o número aleatório gerado. <?Xml version= 1.0 encoding=”iso-8859-1”?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" https://www.w3.org/TR/xh <html xmlns="https://www.w3.org/1999/xhtml” Xxmlns:h="https://java. sun.com/jsf/html” xmlns:f="https://java. sun.com/jsf/core” > <h:head> <meta http-equiv-"Content - Type" content="text/html; charset-IS0-8859-1" /> <title>Success!!</title> </h:head> <h:body> Number Generated Successful !!! </h:body> </html> 13 Conclusção: O projeto foi feito usando as ferramentas e métodos pedidos, assim como a implantação de filtros e criação de Xhtml, exception e etc. 14 Referencia Bibliografica: EBOOK Matéria - UVA DEITEL, P.. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2017. Biblioteca Virtual. Guia de Referência JSF – JavaServer Faces. Devmedia (Links para um site externo.), (Links para um site externo.) 2020. Acesso em: 29 set. 2020 ORACLE CORPORATION. JSR 366: Java Platform, Enterprise Edition 8 (Java EE 8) Specification. Java Community Process (Links para um site externo.), 2020. (Links para um site externo.) Acesso em: 27 set. 2020. https://www.javaavancado.com/servlet-filter-de-autenticacao/
Compartilhar