Jakarta Server Pages - Jakarta Server Pages

JSP
Extensão de nome de arquivo
.jsp, .jspx, .jspf
Tipo de mídia da Internet
aplicação / jsp
Desenvolvido por Eclipse Foundation
lançamento inicial 1999 ; 22 anos atras ( 1999 )
Último lançamento
3.0
(21 de outubro de 2020 ; 10 meses atrás ) ( 2020-10-21 )
Tipo de formato Página da web dinâmica
Padrão JSR 245
Formato aberto ? sim
Local na rede Internet projects .eclipse .org / projects / ee4j .jsp Edite isso no Wikidata

Jakarta Server Pages ( JSP ; anteriormente JavaServer Pages) é uma coleção de tecnologias que ajuda os desenvolvedores de software a criar páginas da web geradas dinamicamente com base em HTML , XML , SOAP ou outros tipos de documentos. Lançado em 1999 pela Sun Microsystems , o JSP é semelhante ao PHP e ASP , mas usa a linguagem de programação Java .

Para implantar e executar Jakarta Server Pages, é necessário um servidor web compatível com um contêiner de servlet , como Apache Tomcat ou Jetty .

Visão geral

A arquitetura JSP Model 2.

Arquitetonicamente, JSP pode ser visto como uma abstração de alto nível de servlets Java . JSPs são convertidos em servlets no tempo de execução, portanto, JSP é um Servlet; cada servlet JSP é armazenado em cache e reutilizado até que o JSP original seja modificado.

Jakarta Server Pages pode ser usado de forma independente ou como o componente de visualização de um design de modelo-visualização-controlador do lado do servidor , normalmente com JavaBeans como o modelo e servlets Java (ou uma estrutura como Apache Struts ) como o controlador. Este é um tipo de arquitetura do Modelo 2 .

O JSP permite que o código Java e certas ações predefinidas sejam intercalados com o conteúdo de marcação da web estático, como HTML. A página resultante é compilada e executada no servidor para entregar um documento. As páginas compiladas, bem como quaisquer bibliotecas Java dependentes, contêm bytecode Java em vez de código de máquina . Como qualquer outro programa .jar ou Java, o código deve ser executado em uma máquina virtual Java (JVM) que interage com o sistema operacional host do servidor para fornecer um ambiente abstrato e neutro em relação à plataforma.

JSPs geralmente são usados ​​para entregar documentos HTML e XML, mas por meio do uso de OutputStream, eles podem entregar outros tipos de dados também.

O contêiner da Web cria objetos JSP implícitos como solicitação, resposta, sessão, aplicativo, configuração, página, pageContext, saída e exceção. O JSP Engine cria esses objetos durante a fase de tradução.

Sintaxe

As páginas JSP usam vários delimitadores para funções de script . O mais básico é <% ... %>, que inclui um scriptlet JSP . Um scriptlet é um fragmento de código Java executado quando o usuário solicita a página. Outros delimitadores comuns incluem <%= ... %>para expressões, em que o scriptlet e os delimitadores são substituídos pelo resultado da avaliação da expressão e as diretivas , denotadas com <%@ ... %>.

O código Java não precisa ser completo ou autocontido em um único bloco de scriptlet. Ele pode incluir conteúdo de marcação, desde que a página como um todo esteja sintaticamente correta. Por exemplo, qualquer bloco if / for / while Java aberto em um scriptlet deve ser fechado corretamente em um scriptlet posterior para que a página seja compilada com êxito. Isso permite que o código seja misturado e pode resultar em práticas de programação inadequadas.

O conteúdo que cai dentro de um bloco dividido de código Java (abrangendo vários scriptlets) está sujeito a esse código. O conteúdo dentro de um bloco if só aparecerá na saída quando a condição if for avaliada como verdadeira. Da mesma forma, o conteúdo dentro de uma construção de loop pode aparecer várias vezes na saída, dependendo de quantas vezes o corpo do loop é executado.

O seguinte seria um loop for válido em uma página JSP:

<p>Counting to three:</p>
<% for (int i=1; i<4; i++) { %>
    <p>This number is <%= i %>.</p>
<% } %>
<p>OK.</p>

A saída exibida no navegador da web do usuário seria:

Counting to three:

This number is 1.

This number is 2.

This number is 3.

OK.

Linguagem de Expressão

A versão 2.0 da especificação JSP adicionou suporte para Expression Language (EL), usado para acessar dados e funções em objetos Java. No JSP 2.1, ele foi dobrado para a Unified Expression Language , que também é usada no JavaServer Faces .

Um exemplo de sintaxe EL :

O valor da "variável" no objeto "javabean" é $ {javabean.variable}.

Tags adicionais

A sintaxe JSP adiciona tags adicionais, chamadas ações JSP, para chamar a funcionalidade integrada. Além disso, a tecnologia permite a criação de bibliotecas de tags JSP customizadas que atuam como extensões da sintaxe JSP padrão. Uma dessas bibliotecas é a JSTL , com suporte para tarefas comuns, como iteração e condicionais (o equivalente a instruções "for" e "if" em Java).

Compilador

Um compilador JavaServer Pages é um programa que analisa JSPs e os transforma em Java Servlets executáveis . Um programa desse tipo é geralmente incorporado ao servidor de aplicativos e executado automaticamente na primeira vez que um JSP é acessado, mas as páginas também podem ser pré-compiladas para melhor desempenho ou compiladas como parte do processo de construção para testar erros.

Alguns contêineres JSP suportam a configuração da frequência com que o contêiner verifica os carimbos de data / hora do arquivo JSP para ver se a página foi alterada. Normalmente, esse carimbo de data / hora seria definido para um intervalo curto (talvez segundos) durante o desenvolvimento do software e um intervalo mais longo (talvez minutos ou mesmo nunca) para um aplicativo da Web implementado .

Crítica

Em 2000, Jason Hunter, autor de "Java Servlet Programming" descreveu uma série de "problemas" com JavaServer Pages. No entanto, ele escreveu que, embora JSP possa não ser a "melhor solução para a plataforma Java", é a "solução Java que mais se parece com a solução não-Java", com o que ele se referia às Active Server Pages da Microsoft . Mais tarde, ele adicionou uma nota ao seu site dizendo que o JSP havia melhorado desde 2000, mas também citou seus concorrentes, Apache Velocity e Tea (linguagem de modelo). Hoje, existem várias alternativas e várias páginas orientadas a JSP em aplicativos da web maiores são consideradas uma dívida técnica.

Veja também

Recipientes de servlet

Alternativas de modelos baseados em Java

Referências

Leitura adicional

links externos