Prévia do material em texto
<p>Você ainda está conectado?</p><p>Sua sessão expira após 180 minutos de inatividade, o que protege suas informações caso você tenha saído do dispositivo sem fazer logout.</p><p>Pressione uma tecla ou clique em qualquer lugar para permanecer conectado.</p><p>Ah, aí está você!</p><p>DANIELA ALVES BRATZ</p><p>Parada para a Prática 4 - Unidade 4 - Resultados</p><p>Tentativa 1 de 3</p><p>Por escrito 18 de setembro de 2023 10:34 – 18 de setembro de 2023 10:54</p><p>Liberado 21 de setembro de 2023 0:01</p><p>Pontuação da tentativa</p><p>10 / 10 - 100%</p><p>Nota geral (Maior tentativa)</p><p>10 / 10 - 100%</p><p>Pergunta 1 1 / 1 ponto</p><p>O padrão de projeto DAO (Data Access Object) é um dos padrões documentados no clássico livro Core J2EE Patterns. Segundo essa referência, o padrão é usado para abstrair e encapsular todo o acesso a uma fonte de dados, podendo ser ela um banco de dados relacional, um arquivo contendo diversos registros, ou ainda outras formas de armazenamento de dados. Segundo o padrão, no caso de bancos de dados relacionais o DAO é responsável por gerenciar não só a conexão com o banco de dados, mas também a maneira como os dados são obtidos e armazenados no banco.</p><p>O trecho de código abaixo ilustra um exemplo de implementação do padrão DAO. Nessa classe podemos observar métodos para consulta, inclusão, alteração e exclusão de pedidos. Por simplicidade e clareza, a implementação dos métodos foi omitida.</p><p>public class PedidoDAO {</p><p>public List<Pedido> pesquisarTodosPedidos( ) { .... }</p><p>public Pedido pesquisarPedidoPorId( Integer idPedido ) { .... }</p><p>public void incluirPedido( Pedido pedido ) { .... }</p><p>public void alterarPedido( Pedido pedido ) { .... }</p><p>public void excluirPedido( Integer idPedido ) { .... }</p><p>}</p><p>Tendo como referência esse trecho de código, assinale a opção INCORRETA:</p><p>Um grande problema do padrão DAO é que uma classe do nosso sistema, que fizesse uso da classe PedidoDAO, precisaria estar ciente de que o DAO faz uso de JDBC ou JPA para ter acesso aos dados armazenados no banco de dados.</p><p>Como o acesso ao banco de dados é encapsulado (ou melhor dizendo, "escondido") dentro do DAO, seria possível trocar um DAO implementado com JDBC por outro implementado com JPA, sem grande impacto no sistema, desde que a assinatura dos métodos de ambos DAOs permanecesse a mesma.</p><p>A classe PedidoDAO poderia ser implementada usando JDBC. Nesse caso, ela encapsularia (ou melhor dizendo, "esconderia dentro dela") todo o código necessário para acesso ao banco de dados.</p><p>A classe PedidoDAO poderia ser implementada usando JPA. Nesse caso, ela encapsularia (ou melhor dizendo, "esconderia dentro dela") todo o código necessário para acesso ao banco de dados.</p><p>Uma classe do nosso sistema que fizesse uso da classe PedidoDAO não precisaria se preocupar com a maneira como os dados são recuperados e armazenados no banco de dados. Pois essa responsabilidade é do DAO, e não da classe que faz uso do DAO.</p><p>Pergunta 2 1 / 1 ponto</p><p>A JSTL (JSP Standard TAG Library) consiste em um conjunto de classes e tags que simplifica a inclusão de código Java nas páginas JSP. A Expression Language (EL), por sua vez, consiste em um recurso que simplifica o uso de expressões nas páginas JSP. Com o uso da EL, por exemplo, podemos deixar de lado a escrita de expressões na forma <%= expressão %>, para usar ${expressão} em seu lugar. Com o uso de JSTL e EL, então, é possível então escrever páginas JSP de melhor qualidade. Tomemos como exemplo o código abaixo, que ilustra um exemplo de como inserir código Java em páginas JSP:</p><p><% for(Aluno aluno: listaAlunos) { %></p><p><tr></p><p><td> <%= aluno.getNome() %> </td></p><p><td> <%= aluno.getSexo() %> </td></p><p><td> <%= aluno.getSemestre() %> </td></p><p></tr></p><p><% } %></p><p>Usando JSTL e EL poderíamos reescrever esse mesmo código da seguinte maneira:</p><p><c:forEach var="aluno" items="${listaAlunos}"></p><p><tr></p><p><td> ${aluno.nome} </td></p><p><td> ${aluno.sexo} </td></p><p><td> ${aluno.semestre} </td></p><p></tr></p><p></c:forEach></p><p>Tendo como referência esse exemplo, analise as afirmações abaixo colocadas:</p><p>I - O laço "for", que aparece entre as tag JSP <% e %>, foi substituído pela tag equivalente em JSTL, "c:forEach", que apresenta a mesma funcionalidade de loop.</p><p>II - A expressão JSP <%= aluno.getNome() %> foi substituída por ${aluno.nome}, que é a expressão equivalente usando os recursos da EL.</p><p>III - Entre as desvantagens do uso da JSTL, que podem ser claramente observados nesse exemplo, podemos citar: grande quantidade de código Java nas páginas JSP, gerando com isso uma maior dificuldade de entendimento do código e consequentemente uma manutenção mais difícil das páginas.</p><p>A respeito dessas afirmações, assinale a opção CORRETA:</p><p>Apenas as afirmativas I e III são verdadeiras.</p><p>Apenas as afirmativas I e II são verdadeiras.</p><p>Todas as afirmativas são verdadeiras.</p><p>Todas as afirmativas são falsas.</p><p>Apenas as afirmativas II e III são verdadeiras.</p><p>Pergunta 3 1 / 1 ponto</p><p>O Java EE faz uso de containers para fornecer importantes serviços para aplicações corporativas. O container web, por exemplo, provê uma interface entre o servidor Java EE e os componentes que geram conteúdo dinâmico para web. Um container EJB, por sua vez, provê uma interface entre o servidor de aplicações e os componentes de negócio (Enterprise Java Beans) que são ali executados. Os containers, dessa maneira, provêm um ambiente de execução para diversos componentes Java EE.</p><p>Tendo como referência esse contexto, analise as afirmações abaixo colocadas:</p><p>I - Os Servlets são componentes Java que executam dentro de um container web, e que geram conteúdo dinâmico para a web, como uma página HTML.</p><p>II - Uma página JSP contém tanto código HTML quanto código Java, e executa dentro de um container web. E assim como os servlets, também geram conteúdo dinâmico para a web, como resposta a uma requisição.</p><p>III - A JPA (Java Persistence API) é uma API que utiliza o conceito de mapeamento objeto-relacional para persistir dados em um banco de dados. Essa tecnologia permite o desenvolvimento de aplicações que fazem uso de banco de dados relacionais sem ser necessária a escrita de código SQL. Uma aplicação em Java que usa a JPA, por sua vez, deve necessariamente executar dentro de um container web.</p><p>A respeito dessas afirmações, assinale a opção CORRETA:</p><p>Apenas as afirmativas I e III são verdadeiras.</p><p>Apenas as afirmativas II e III são verdadeiras.</p><p>Apenas as afirmativas I e II são verdadeiras.</p><p>Todas as afirmativas são verdadeiras.</p><p>Todas as afirmativas são falsas.</p><p>Pergunta 4 1 / 1 ponto</p><p>Podemos afirmar que o enorme sucesso da World Wide Web se deve, em grande parte, à linguagem HTML (Hyper Text Markup Language), que permitiu que informações pudessem ser compartilhadas na Internet por meio de páginas que podiam ser "linkadas" a outras páginas, possibilitando assim que as pessoas facilmente "navegassem" de uma página para outra, em busca de novas informações. Tendo como referência esse contexto, analise as afirmações abaixo colocadas:</p><p>I - A linguagem HTML é uma linguagem de formatação simples, baseada em marcadores</p><p>(tags), e que pode ser utilizada para a criação de documentos de hypertexto.</p><p>II - A linguagem HTML é usada para descrever a estrutura de uma página web.</p><p>III - Na linguagem HTML todas tags, sem exceção, possuem um par de abertura e fechamento. Como exemplo, temos <html> e </html>, <body> e </body>, <p> e </p>, <ol> e </ol>, <br> e </br>, <hr> e </hr>.</p><p>A respeito dessas afirmações, assinale a opção CORRETA:</p><p>Apenas as afirmativas I e III são verdadeiras.</p><p>Apenas as afirmativas I e II são verdadeiras.</p><p>Apenas as afirmativas II e III são verdadeiras.</p><p>Todas as afirmativas são falsas.</p><p>Todas as afirmativas são verdadeiras.</p><p>Pergunta 5 1 / 1 ponto</p><p>O modelo MVC corresponde a um padrão arquitetural que propõe a divisão da aplicação em três camadas: model, view e controller. Tendo como referência esse contexto, analise as afirmações abaixo colocadas:</p><p>I- A camada de model corresponde à camada responsável pelos dados mantidos pela aplicação. É na camada de model que usualmente ocorrem as operações básicas de inserção, atualização e pesquisa em um banco de dados. No caso das aplicações web em Java, essa camada pode ser construída com o uso de JDBC ou JPA.</p><p>II- A camada de view corresponde à camada de apresentação da aplicação, responsável por gerar a visualização para o usuário final. No caso das aplicações web em Java, essa camada pode ser construída com classes que armazenam dados do usuário que está interagindo com a aplicação.</p><p>III- A camada de controller corresponde à camada responsável por fazer a ligação entre as outras duas camadas, gerenciando a interação entre view e model. No caso das aplicações web em Java, essa camada pode ser construída com Servlets.</p><p>A respeito dessas afirmações, assinale a opção CORRETA:</p><p>Todas as afirmativas são verdadeiras.</p><p>Apenas as afirmativas I e II são verdadeiras.</p><p>Apenas as afirmativas I e III são verdadeiras.</p><p>Apenas as afirmativas II e III são verdadeiras.</p><p>Todas as afirmativas são falsas.</p><p>Pergunta 6 1 / 1 ponto</p><p>O protocolo HTTP tem um importante papel na Internet, e grande parte da troca de informações que acontece na grande rede ocorre por meio dele. Tendo como referência esse protocolo, analise as afirmações abaixo colocadas:</p><p>I - O protocolo HTTP é um protocolo de rede, definido na camada de aplicação do modelo TCP/IP, e que permite a comunicação de um navegador com um servidor web.</p><p>II - O protocolo HTTP é um protocolo sem estado (stateless)</p><p>III - O protocolo HTTP prevê diversos tipos de requisição, como por exemplo, requisições do tipo GET e requisições do tipo POST.</p><p>A respeito dessas afirmações, assinale a opção CORRETA:</p><p>Todas as afirmativas são falsas.</p><p>Todas as afirmativas são verdadeiras.</p><p>Apenas as afirmativas II e III são verdadeiras.</p><p>Apenas as afirmativas I e III são verdadeiras.</p><p>Apenas as afirmativas I e II são verdadeiras.</p><p>Pergunta 7 1 / 1 ponto</p><p>Observe o código abaixo, que corresponde à definição de um Servlet em Java:</p><p>@WebServlet("/OlaMundo")</p><p>public class OlaMundoServlet extends HttpServlet {</p><p>protected void service( HttpServletRequest request, HttpServletResponse response)</p><p>throws ServletException, IOException {</p><p>PrintWriter out = response.getWriter() ;</p><p>out.println( "<html>" );</p><p>out.println( "<body>" );</p><p>out.println( "<h2> Olá, mundo!!!</h2>" );</p><p>out.println( "</body>" );</p><p>out.println( "</html>" );</p><p>}</p><p>}</p><p>Tendo como referência esse exemplo, analise as afirmações abaixo colocadas:</p><p>I - Para programar um Servlet criamos uma classe que estende HttpServlet. Usando a anotação @WebServlet definimos qual é a url que será usada para chamar o Servlet.</p><p>II - O método "service" recebe dois objetos: um deles tem o tipo HttpServletRequest, o outro tem o tipo HttpServletResponse. Esses objetos correspondem, respectivamente, à requisição que será tratada pelo Servlet e à resposta que será por ele enviada.</p><p>III - A partir do objeto "response" podemos obter um objeto do tipo PrintWriter, que nos permite construir uma página HTML dinâmica para ser enviada como resposta do Servlet.</p><p>A respeito dessas afirmações, assinale a opção CORRETA:</p><p>Apenas as afirmativas I e II são verdadeiras.</p><p>Apenas as afirmativas I e III são verdadeiras.</p><p>Todas as afirmativas são falsas.</p><p>Todas as afirmativas são verdadeiras.</p><p>Apenas as afirmativas II e III são verdadeiras.</p><p>Pergunta 8 1 / 1 ponto</p><p>A tecnologia de Java Server Pages (JSP) surgiu como uma maneira de simplificar a programação com servlets. Assim, enquanto a programação de um servlet requer do programador uma boa compreensão dos fundamentos da linguagem Java, a programação de uma página JSP pode ser feita com um conhecimento básico da linguagem. Tendo como referência esse contexto, analise as afirmações abaixo colocadas:</p><p>I - Um servlet nada mais é do que uma classe escrita na linguagem Java. Para ser reconhecida como um servlet, no entanto, essa classe não pode herdar de nenhuma outra classe particular. Ela precisa apenas da anotação @WebServlet definida na classe e da anotação @RequestMapping definida no método responsável pelo tratamento da requisição HTTP.</p><p>II - As páginas JSP contém tags html e código Java, que é embutido na página por meio das tags <% e %>.</p><p>III - Toda página JSP é transformada em um servlet pelo servidor Java EE, e por isso podemos dizer que uma página JSP é equivalente a um servlet.</p><p>A respeito dessas afirmações, assinale a opção CORRETA:</p><p>Todas as afirmativas são falsas.</p><p>Todas as afirmativas são verdadeiras.</p><p>Apenas as afirmativas I e II são verdadeiras.</p><p>Apenas as afirmativas I e III são verdadeiras.</p><p>Apenas as afirmativas II e III são verdadeiras.</p><p>Pergunta 9 1 / 1 ponto</p><p>Desde a criação da plataforma Java, seus desenvolvedores se preocuparam com a definição de uma solução para a persistência de dados que fizesse uso de interfaces de programação. A API (Application Programming Interface) JDBC (Java Database Connectivity) corresponde ao padrão que foi estabelecido para permitir a conexão entre código desenvolvido na linguagem Java e diferentes bancos de dados, como por exemplo, SQLServer, Oracle e MySQL. Essa conexão, por sua vez, é realizada por meio de um driver específico para cada banco de dados.</p><p>O trecho de código abaixo ilustra um exemplo de como fazer a conexão a um banco de dados Mysql para recuperar dados de uma tabela nele armazenada:</p><p>String driver = "com.mysql.jdbc.Driver" ;</p><p>Class.forName( driver );</p><p>String url = "jdbc:mysql://localhost:3306/meuBD" ;</p><p>String user = "root" ;</p><p>String pass = "root" ;</p><p>Connection con = DriverManager.getConnection( url, user, pass );</p><p>Statement stmt = con.createStatement() ;</p><p>String instrucaoSQL = " select * from Alunos " ;</p><p>ResultSet rs = stmt.executeQuery( instrucaoSQL ) ;</p><p>while ( rs.next() ) {</p><p>System.out.println( "======================================" );</p><p>System.out.println( "Matricula:" + rs.getString("matricula")</p><p>);</p><p>System.out.println( "Nome:" + rs.getString("nome") );</p><p>System.out.println( "Semestre:" + rs.getInt("semestre") );</p><p>}</p><p>rs.close();</p><p>con.close();</p><p>Tendo como referência esse código, assinale a opção INCORRETA:</p><p>Podemos observar, nesse código, que o driver Mysql é carregado em memória pelo comando "Class.forName( driver )". Ao executar esse comando, o driver fica disponível para ser utilizado pela API JDBC.</p><p>Esse mesmo código poderia ser utilizado para acessar um banco de dados Oracle. O banco de dados Oracle, nesse caso, poderia ser acessado com o mesmo driver que foi usado para acessar o banco de dados Mysql.</p><p>Usando a conexão ao banco de dados criamos um objeto do tipo Statement. Esse objeto é utilizado para executar uma consulta SQL na instrução "stmt.executeQuery( instrucaoSQL )"</p><p>O objeto do tipo ResultSet corresponde ao resultado da consulta SQL. O método "next" é chamado, nesse objeto, para navegarmos entre os registros retornados pela consulta.</p><p>Esse código mostra que podemos obter uma conexão ao banco de dados por meio da classe DriverManager. Isso ocorre com a chamada ao método "getConnection", em "DriverManager.getConnection( url, user, pass )"</p><p>Pergunta 10 1 / 1 ponto</p><p>As pessoas, nos dias de hoje, estão cada vez mais conectadas. Seja no computador de casa ou do trabalho, ou mesmo em seus smartphones, elas estão sempre navegando por páginas da World Wide Web, fazendo compras, pesquisas, ou mesmo conversando com amigos. Tendo como referência esse contexto, analise as afirmações abaixo colocadas:</p><p>I - A popularidade da World Wide Web se deve, em grande parte, à imensa variedade e quantidade de informações que pode ser ali encontradas.</p><p>II - A World Wide Web surgiu a partir da necessidade da troca de informações entre pesquisadores de diferentes países.</p><p>III - Podemos dizer que, enquanto a Internet consiste de uma grande rede mundial de computadores interconectados, a World Wide Web pode ser vista como uma de suas funcionalidades – que permite a navegação através de hipertextos.</p><p>A respeito dessas afirmações, assinale a opção CORRETA:</p><p>Apenas as afirmativas I e II são verdadeiras.</p><p>Todas as afirmativas são verdadeiras.</p><p>Apenas as afirmativas I e III são verdadeiras.</p><p>Todas as afirmativas são falsas.</p><p>Apenas as afirmativas II e III são verdadeiras.</p><p>Concluído</p>