JavaRush /Blogue Java /Random-PT /O que é JSP? Vamos explorar as possibilidades na prática
Анзор Кармов
Nível 31
Санкт-Петербург

O que é JSP? Vamos explorar as possibilidades na prática

Publicado no grupo Random-PT
JSP ou Java Server Pages é uma tecnologia Java que permite criar páginas da web dinâmicas para aplicativos Java. Neste artigo, falaremos com mais detalhes sobre o que é JSP, discutiremos alguns dos recursos dessa tecnologia, veremos a estrutura das páginas JSP e também tentaremos dar uma olhada prática no que são essas Java Server Pages. O que é JSP?  Entendendo as possibilidades na prática - 1Mas primeiro, vamos falar sobre os benefícios e a importância do JSP. JSP permite ao desenvolvedor:
  • receber dados de uma página da web em código Java;
  • enviar dados do código Java para uma página da web;
  • escreva código Java diretamente dentro do html (no entanto, você não deve abusar disso).
A necessidade de conhecimento JSP pode ser avaliada de forma bastante elevada por vários motivos:
  • JSP é uma das principais tecnologias web Java;
  • JSP é amplamente utilizado na maioria das empresas e projetos;
  • JSP integra-se perfeitamente com servlets Java dentro de um contêiner de servlet.

Definição JSP

Aqui está uma definição da Wikipedia: JSP (JavaServer Pages) é uma tecnologia que permite aos desenvolvedores web criar conteúdo que possui componentes estáticos e dinâmicos. Uma página JSP contém dois tipos de texto: dados de origem estáticos, que podem estar em um dos formatos de texto HTML, SVG, WML ou XML, e elementos JSP, que constroem conteúdo dinâmico. Além disso, bibliotecas de tags JSP podem ser usadas, bem como Expression Language (EL) para incorporar código Java no conteúdo estático de páginas JSP. O código da página JSP é traduzido em código Java de servlet usando o compilador de páginas Jasper JSP e, em seguida, compilado em bytecode Java Virtual Machine (JVM). Os contêineres de servlet capazes de executar páginas JSP são escritos na linguagem Java independente de plataforma. A tecnologia JSP é uma tecnologia independente de plataforma, portátil e facilmente extensível para o desenvolvimento de aplicações web.

Estrutura da página JSP

Em geral, JSP refere-se a páginas web dinâmicas nas quais a parte dinâmica é gerada usando Java, e a parte estática é gerada usando linguagens de marcação, geralmente HTML. Tal página é um documento de texto com extensão .jsp, escrito em uma das linguagens de marcação (como HTML, SVG, WML e XML), intercalado com elementos JSP (ou tags JSP). Essas tags contêm chamadas ao código do servidor (dados) e também realizam alguns cálculos. Esses arquivos são processados ​​​​no servidor, como resultado todas as tags JSP são convertidas em tags HTML e a saída é uma página HTML normal. O diagrama abaixo mostra um diagrama da estrutura de uma página JSP e sua interação com o servidor. O que é JSP?  Entendendo as possibilidades na prática - 2Um exemplo de uma página JSP simples:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
Neste exemplo, uma expressão JSP escrita em uma linguagem especial, Expression Language (EL), é “incorporada” dentro do código HTML . Ele fornece um mecanismo importante para interação entre a camada de apresentação (páginas da web) e a camada de lógica de negócios do aplicativo (código Java). Como você pode ver no exemplo, a expressão JSP está entre chaves, com um cifrão à esquerda - ${...}. Tudo o que está entre chaves é avaliado no servidor, e o resultado desta expressão é dado em html, no local onde a expressão JSP foi originalmente definida. Após processar todas as tags, a página ficará assim:
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

Instalando e executando o contêiner de servlet

Como o código JSP é traduzido em código de servlet Java, precisamos obter algum tipo de contêiner de servlet em algum lugar para que possamos conversar sobre como o JSP funciona. Caso contrário, sem um contêiner, o JSP não funcionará. Mas primeiro, vamos dar uma olhada na definição de contêiner de servlet. Um contêiner de servlet é um programa que é um servidor que fornece suporte de sistema para servlets e garante seu ciclo de vida de acordo com as regras definidas nas especificações. Ele pode funcionar como um servidor web independente completo, ser um provedor de páginas para outro servidor web ou integrar-se a um servidor de aplicativos Java EE. Um dos contêineres de servlet mais populares é o Apache Tomcat. O que é JSP?  Entendendo as possibilidades na prática - 3Vale ressaltar que o Tomcat não é um servidor de aplicativos Java EE completo. Entretanto, para as necessidades vitais de servlets e páginas JSP, o servidor Tomcat é mais que suficiente. Vamos iniciar a instalação. Você pode baixar o Tomcat na página oficial . Para o sistema operacional Windows, você pode instalar o Tomcat da seguinte maneira:
  1. Baixe o instalador de serviço do Windows de 32/64 bits.

  2. Vamos executar o arquivo.

  3. A seguir, siga o procedimento normal de instalação:

    1. Não se esqueça de marcar a caixa de seleção Exemplos na janela do instalador correspondente:

      O que é JSP?  Entendendo as possibilidades na prática – 4
    2. e especifique o caminho para o JRE pré-instalado:

      O que é JSP?  Entendendo as possibilidades na prática – 5
  4. Após a instalação, inicie o Tomcat e abra o navegador. Vá para http://localhost:8080/ .

Se você vir a página inicial do Tomcat, significa que a instalação foi bem-sucedida e o servidor está em execução. Para iniciar e parar o Tomcat manualmente, você pode executar um dos dois arquivos executáveis ​​no diretório bin. Ele está localizado dentro do diretório onde o Tomcat está instalado: O que é JSP?  Entendendo as possibilidades na prática – 6

Aplicativos de demonstração. Objetos escondidos

Vejamos alguns recursos JSP em ação. Um deles é o acesso aos chamados objetos ocultos ( Objetos Implícitos ). São objetos que podem ser acessados ​​usando a Expression Language (EL). Exemplos de tais objetos são cabeçalhos HTTP ou parâmetros de URL. Vamos revelar (ou refrescar nossa memória) o que são parâmetros de URL. O exemplo abaixo mostra uma URL com parâmetros. Os parâmetros estão em negrito: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom Os parâmetros sempre começam com um ponto de interrogação (?). Isto é seguido pelo nome do parâmetro, seguido pelo sinal de igual - o valor do parâmetro é determinado. Pode haver vários ou um parâmetro. Se houver mais de um, cada par nome-valor será separado por um caractere E comercial (&). No exemplo acima foram definidos diversos parâmetros e seus valores:
Nome do parâmetro Valor do parâmetro
parâmetro1 valor1
parâmetro2 valor2
a 1
nome Tom
Vamos dar uma olhada em como você pode acessar objetos ocultos em JSP, incluindo parâmetros de URL. Para fazer isso, inicie o Tomcat e abra o navegador na página http://localhost:8080/ Em seguida vá para a página Exemplos: O que é JSP?  Entendendo as possibilidades na prática – 7Em seguida siga o link Exemplos JSP: O que é JSP?  Entendendo as possibilidades na prática – 8Na página de exemplos siga o link Objetos Implícitos -> Executar: O que é JSP?  Entendendo as possibilidades na prática – 9Neste página você pode ver um exemplo de uso de objetos ocultos. Abaixo segue uma captura de tela da página com explicações detalhadas: O que é JSP?  Entendendo as possibilidades na prática – 10Tente alterar o valor do parâmetro fooutilizando o campo correspondente na página, então observe que o valor deste parâmetro também mudou na barra de endereço. A página apresentada não possui muitas funcionalidades, mas é uma boa referência que você poderá consultar no futuro quando precisar acessar um determinado objeto oculto. Esta página contém uma lista de objetos ocultos que podem ser acessados. E abaixo, na tabela, é demonstrado como você pode acessar um determinado objeto.

Funções JSP

Agora vamos voltar à página anterior e dar uma olhada no código fonte da página “objetos ocultos”: O que é JSP?  Entendendo as possibilidades na prática – 11Aqui está:
<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<html>
  <head>
    <title>JSP 2.0 Expression Language - Implicit Objects</title>
  </head>
  <body>
    <h1>JSP 2.0 Expression Language - Implicit Objects</h1>
    <hr>
    This example illustrates some of the implicit objects available
    in the Expression Language.  The following implicit objects are
    available (not all illustrated here):
    <ul>
      <li>pageContext - the PageContext object</li>
      <li>pageScope - a Map that maps page-scoped attribute names to
          their values</li>
      <li>requestScope - a Map that maps request-scoped attribute names
          to their values</li>
      <li>sessionScope - a Map that maps session-scoped attribute names
          to their values</li>
      <li>applicationScope - a Map that maps application-scoped attribute
          names to their values</li>
      <li>param - a Map that maps parameter names to a single String
          parameter value</li>
      <li>paramValues - a Map that maps parameter names to a String[] of
          all values for that parameter</li>
      <li>header - a Map that maps header names to a single String
          header value</li>
      <li>headerValues - a Map that maps header names to a String[] of
          all values for that header</li>
      <li>initParam - a Map that maps context initialization parameter
          names to their String parameter value</li>
      <li>cookie - a Map that maps cookie names to a single Cookie object.</li>
    </ul>

    <blockquote>
      <u><b>Change Parameter</b></u>
      <form action="implicit-objects.jsp" method="GET">
          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
          <input type="submit">
      </form>
      <br>
      <code>
        <table border="1">
          <thead>
            <td><b>EL Expression</b></td>
            <td><b>Result</b></td>
          </thead>
          <tr>
            <td>\${param.foo}</td>
            <td>${fn:escapeXml(param["foo"])} </td>
          </tr>
          <tr>
            <td>\${param["foo"]}</td>
            <td>${fn:escapeXml(param["foo"])} </td>
          </tr>
          <tr>
            <td>\${header["host"]}</td>
            <td>${fn:escapeXml(header["host"])} </td>
          </tr>
          <tr>
            <td>\${header["accept"]}</td>
            <td>${fn:escapeXml(header["accept"])} </td>
          </tr>
          <tr>
            <td>\${header["user-agent"]}</td>
            <td>${fn:escapeXml(header["user-agent"])} </td>
          </tr>
        </table>
      </code>
    </blockquote>
  </body>
</html>
Se você estiver familiarizado com HTML, o código-fonte da página deve estar bem claro para você. Preste atenção a estas linhas:
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
Aqui vemos tags html <tr>e <td>. As tags são seguidas por <td>tags JSP, entre chaves ${ }. No entanto, observe como o valor do parâmetro URL é gerado foo:
${fn:escapeXml(param["foo"])}
O valor é gerado através do uso de uma função JSP fn:escapeXml(). As funções JSP encapsulam algumas funcionalidades que podem ser reutilizadas. Nesse caso, é o escape de XML. A tecnologia JSP oferece uma ampla gama de funções para você escolher, bem como a capacidade de criar suas próprias funções. Para utilizar uma função em um JSP, você deve importar a biblioteca apropriada na qual a função está definida para o arquivo JSP.

Bibliotecas de tags

Vamos dar uma olhada em outra linha do código-fonte (segunda linha) acima:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
É assim que as bibliotecas de tags são importadas. A sintaxe é intuitiva. Definimos várias coisas:
  • taglib(biblioteca de tags - biblioteca de tags);
  • url, onde esta biblioteca está localizada;
  • um prefixo (neste caso fn) através do qual será possível chamar funções definidas nesta biblioteca.
No exemplo acima, vimos a importação de funções. Especificamente, em nosso exemplo, importamos a biblioteca JSTL (JSP Standard Tag Library). JSTL é uma biblioteca de tags padrão que contém um conjunto de bibliotecas diferentes que acompanham cada servlet e implementação JSP, incluindo Tomcat. Outra biblioteca de tags popular é a core, que pode ser importada assim:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Tal como acontece com fn, a notação cé opcional e geralmente aceita. Esta designação pode ser encontrada em quase todos os lugares onde essas bibliotecas são usadas. Aqui está um exemplo de uma função da biblioteca principal:
<c:out value = "${'<div>'}"/>
Esta função simplesmente gerará a tag <div>. Esta função já faz escape de XML. Esta função é importante do ponto de vista da segurança, pois ao gerar o valor das variáveis ​​​​diretamente, por meio de ${variable}, abrimos a porta para injeção de script.

Edição JSP

Agora, munidos de novos conhecimentos, vamos tentar fazer alterações no aplicativo de demonstração dentro do Tomcat. Para fazer isso, encontraremos o código fonte desta página dentro da pasta onde este contêiner de servlet foi instalado. Este arquivo pode ser encontrado no seguinte endereço: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Em seguida, abra o arquivo implicit-objects.jsp em qualquer editor de texto Adicione a importação da biblioteca principal e, em seguida, use-o. Vamos gerar algum texto: O que é JSP?  Entendendo as possibilidades na prática - 12Agora vamos atualizar a página de objetos ocultos e dar uma olhada nas alterações feitas: O que é JSP?  Entendendo as possibilidades na prática - 13

Resultados

Portanto, examinamos superficialmente tecnologias como JSP. Nós discutimos:
  • o que é JSP;
  • Estrutura da página JSP;
  • procedimento para instalação e execução do contêiner de servlet Tomcat;
  • aplicativo de demonstração para acesso a objetos ocultos, incluído no pacote de distribuição do servidor Tomcat;
  • Funções JSP e bibliotecas de tags.

Qual é o próximo?

Para proteger o material você pode:
  1. Repita tudo descrito neste artigo.
  2. Considere outros aplicativos de demonstração incluídos no servidor Tomcat.
  3. Escreva seu próprio aplicativo e implante-o em um contêiner de servlet. Como guia, você pode usar o artigo Criando um projeto web simples no IntelliJ Idea Enterprise. Passo a passo, com fotos.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION