Qual é a diferença entre JSF, Servlet e JSP?

Como o JSP e o Servlet estão relacionados entre si? O JSP é algum tipo de Servlet? Como o JSP e o JSF estão relacionados entre si? O JSF é algum tipo de JSP baseado em UI pré-construção como o ASP.NET-MVC?

   

JSP (JavaServer Pages)

JSP é uma tecnologia de visualização Java em execução na máquina do servidor que permite gravar texto de modelo em linguagens do lado do cliente (como HTML, CSS, JavaScript, etc.). O JSP suporta taglibs , que são apoiados por partes do código Java que permitem controlar o stream da página ou a saída dinamicamente. Um taglib bem conhecido é o JSTL . O JSP também suporta o Expression Language , que pode ser usado para acessar dados de back-end (via atributos disponíveis na página, solicitação, session e escopos de aplicativos), principalmente em combinação com taglibs.

Quando uma JSP é solicitada pela primeira vez ou quando o aplicativo da Web é inicializado, o contêiner de servlet a compila em uma class que estende o HttpServlet e a utiliza durante o tempo de vida do aplicativo da web. Você pode encontrar o código-fonte gerado no diretório de trabalho do servidor. Por exemplo, no Tomcat , é o diretório /work . Em uma solicitação JSP, o contêiner do servlet executará a class JSP compilada e enviará a saída gerada (geralmente apenas HTML / CSS / JS) através do servidor da Web em uma rede para o lado do cliente, que por sua vez a exibe no navegador da web.

Servlets

Servlet é uma interface de programação de aplicativos (API) Java em execução na máquina do servidor, que intercepta solicitações feitas pelo cliente e gera / envia uma resposta. Um exemplo bem conhecido é o HttpServlet que fornece methods para enganchar em solicitações HTTP usando os methods HTTP populares, como GET e POST . Você pode configurar o HttpServlet s para ouvir um determinado padrão de URL HTTP, que pode ser configurado no web.xml ou, mais recentemente, no Java EE 6 , com a anotação @WebServlet .

Quando um Servlet é solicitado pela primeira vez ou durante a boot do aplicativo da Web, o contêiner do servlet cria uma instância dele e o mantém na memory durante o tempo de vida do aplicativo da Web. A mesma instância será reutilizada para cada solicitação recebida cujo URL corresponda ao padrão de URL do servlet. Você pode acessar os dados da solicitação por HttpServletRequest e manipular a resposta por HttpServletResponse . Ambos os objects estão disponíveis como argumentos de método dentro de qualquer um dos methods substituídos do HttpServlet , como doGet() e doPost() .

JSF (JavaServer Faces)

O JSF é um framework MVC baseado em componentes que é construído sobre a API do Servlet e fornece componentes via taglibs que podem ser usados ​​em JSP ou qualquer outra tecnologia de visualização baseada em Java, como Facelets . Facelets é muito mais adequado ao JSF do que ao JSP. Ele fornece resources de modelo excelentes, como componentes compostos , enquanto o JSP basicamente oferece apenas o para modelagem, de modo que você é forçado a criar componentes personalizados com código Java bruto (que é um pouco opaco e muito tedioso trabalho no JSF) quando você deseja replace um grupo repetido de componentes por um único componente. Desde o JSF 2.0, o JSP foi substituído como tecnologia de visualização em favor do Facelets.

Como sendo uma estrutura MVC ( Model-View-Controller ), o JSF fornece o FacesServlet como o único Controller de solicitação-resposta. Ele tira todo o trabalho de solicitação / resposta HTTP padrão e entediante de suas mãos, como reunir a input do usuário, validar / convertê-los, colocá-los em objects de modelo, invocar ações e renderizar a resposta. Dessa forma, você acaba com basicamente uma página JSP ou Facelets (XHTML) para View e uma class JavaBean como Model . Os componentes do JSF são usados ​​para vincular a exibição ao modelo (como o controle da Web do ASP.NET) e o FacesServlet usa a tree de componentes do JSF para fazer todo o trabalho.

Perguntas relacionadas

  • Qual é a alternativa Java de stream principal para o ASP.NET / PHP?
  • Desenvolvimento Web Java EE, de quais habilidades eu preciso?
  • Como os servlets funcionam? Instanciação, variables ​​de session e multithreading
  • O que é um jababeano e onde eles são usados?
  • Como evitar o código Java em arquivos JSP?
  • Quais componentes são MVC no framework JSF MVC?
  • Qual é a necessidade do JSF, quando a interface do usuário pode ser obtida de CSS, HTML, JavaScript, jQuery?

Veja http://www.oracle.com/technetwork/java/faq-137059.html

A tecnologia JSP faz parte da família de tecnologia Java. As páginas JSP são compiladas em servlets e podem chamar componentes JavaBeans (beans) ou componentes Enterprise JavaBeans (enterprise beans) para executar o processamento no servidor. Como tal, a tecnologia JSP é um componente chave em uma arquitetura altamente escalonável para aplicativos baseados na web.

Veja https://jcp.org/en/introduction/faq

R: A tecnologia JavaServer Faces é uma estrutura para construir interfaces de usuário para aplicativos da web. A tecnologia JavaServer Faces inclui:

Um conjunto de APIs para: representar componentes da interface do usuário e gerenciar seu estado, manipular events e validar inputs, definir navegação de páginas e suportar internacionalização e acessibilidade.

Uma biblioteca de tags personalizadas JavaServer Pages (JSP) para expressar uma interface JavaServer Faces em uma página JSP.

JSP é um tipo especializado de servlet.

JSF é um conjunto de tags que você pode usar com JSP.

Da perspectiva do navegador / cliente

JSP e JSF são ambos iguais, conforme os requisitos de aplicativos, o JSP é mais adequado para aplicativos baseados em solicitações e respostas.

O JSF é destinado a aplicativos da Web baseados em events mais ricos. Eu vejo o evento muito mais granular que o pedido / resposta.

Da perspectiva do servidor

A página JSP é convertida em servlet e possui apenas um comportamento mínimo.

A página JSF é convertida em tree de componentes (por FacesServlet especializado) e segue o ciclo de vida do componente definido por especificação.

Servlets:

A API Java Servlet permite que os desenvolvedores Java gravem código do lado do servidor para fornecer conteúdo da Web dynamic. Como outras APIs proprietárias do servidor Web, a API do Java Servlet oferecia melhor desempenho em CGI; no entanto, tem algumas vantagens adicionais importantes. Como os servlets foram codificados em Java, eles fornecem uma abordagem de projeto orientada a objects (OO) e, mais importante, podem ser executados em qualquer plataforma. Assim, o mesmo código era portável para qualquer host que suportasse Java. Os servlets contribuíram muito para a popularidade do Java, uma vez que se tornou uma tecnologia amplamente utilizada para o desenvolvimento de aplicativos da Web no lado do servidor.

JSP:

O JSP é construído sobre os servlets e fornece uma solução mais simples baseada em páginas para gerar grandes quantidades de conteúdo HTML dynamic para interfaces com o usuário da Web. O JavaServer Pages permite que os desenvolvedores e designers da Web simplesmente editem páginas HTML com tags especiais para as partes dinâmicas do Java. O JavaServer Pages funciona com um servlet especial conhecido como contêiner JSP, que é instalado em um servidor da Web e manipula todas as solicitações de exibição de página JSP. O contêiner JSP converte um JSP solicitado em código de servlet que é então compilado e executado imediatamente. Pedidos subseqüentes para a mesma página simplesmente invocam o servlet de tempo de execução para a página. Se uma alteração for feita no JSP no servidor, uma solicitação para exibi-lo acionará outra tradução, compilation e reboot do servlet de tempo de execução.

JSF:

JavaServer Faces é uma estrutura Java padrão para construir interfaces de usuário para aplicativos da Web. Mais importante, simplifica o desenvolvimento da interface do usuário, que é frequentemente uma das partes mais difíceis e tediosas do desenvolvimento de aplicativos da Web.
Embora seja possível construir interfaces de usuário usando tecnologias Java da Web básicas (como servlets Java e JavaServer Pages) sem uma estrutura abrangente projetada para o desenvolvimento de aplicativos corporativos da Web, essas tecnologias principais podem frequentemente levar a uma série de problemas de desenvolvimento e manutenção. Mais importante, quando os desenvolvedores alcançarem uma solução de qualidade de produção, o mesmo conjunto de problemas resolvidos pelo JSF terá sido resolvido de maneira não padrão. O JavaServer Faces foi projetado para simplificar o desenvolvimento de interfaces com o usuário para aplicativos da Web Java das seguintes maneiras:
• Fornece uma abordagem de desenvolvimento independente do cliente e cinput no componente para criar interfaces de usuário da Web, melhorando assim a produtividade do desenvolvedor e a facilidade de uso.
• Simplifica o access e gerenciamento de dados de aplicativos a partir da interface do usuário da Web.
• Gerencia automaticamente o estado da interface do usuário entre várias solicitações e vários clientes de maneira simples e discreta.
• Fornece uma estrutura de desenvolvimento que é amigável para um público diversificado de desenvolvedores com diferentes conjuntos de habilidades.
• Descreve um conjunto padrão de padrões de arquitetura para um aplicativo da web.

[ Fonte: Referência completa: JSF ]

Há também situações em que você pode favorecer o JSP sobre o JSF. A natureza da aplicação deve ser o fator decisivo para escolher a tecnologia.

Se você tem uma rica interação com GUI e muitos scripts de Java necessários, então favorece o JSF. Basicamente, se a sua arquitetura de aplicativo GUI é como Component orientado e até mesmo dirigido como Swing, então JSF é o melhor.

Se o aplicativo for apenas uma forma simples de envio, não é necessária muita interação da GUI, então a JSP pode se dar bem se aprender uma nova tecnologia for uma sobrecarga e também a estrutura complexa for desnecessária.

Servlet – é a camada do lado do servidor java.

  • JSP – é servlet com html
  • JSF – seus componentes baseiam em libs de tag
  • JSP – é convertido em servlet uma vez quando o servidor recebe um pedido.

É verdade que o JSP é convertido em servlet no momento da execução, e o JSF é totalmente novo para tornar a página mais legível, já que o JSF permite gravar todas as estruturas de programação na forma de tag.

A diferença básica entre Servlets e JSP é que em Servlets nós escrevemos código java e nele embutimos código HTML e há apenas caso reverso com JSP. Na JSP, escrevemos código HTML e incorporamos código java usando tags fornecidas pelo JSP.

O JSP (Java Server Pages) é a tecnologia java que permite aos desenvolvedores e designers da Web desenvolver e manter rapidamente páginas da Web dinâmicas, ricas em informações, que aproveitam os sistemas de negócios existentes. A tecnologia JSP separa a interface do usuário da geração de conteúdo, permitindo que os designers alterem o layout geral da página sem alterar o conteúdo dynamic subjacente.

Facelets é a primeira linguagem de declaração de página não JSP projetada para JSF (Java Server Faces) que forneceu um modelo de programação mais simples e mais poderoso para os desenvolvedores JSF, em comparação com JSP. Ele resolve problemas diferentes ocorre no JSP para desenvolvimento de aplicativos da web.

Aqui está uma tabela que compara os resources de scriplets e facelets:

insira a descrição da imagem aqui Fonte

Jsp também está tendo em código de servlet construído que não precisa de qualquer compilation externa, pode ser executado diretamente executado. As alterações entrarão em vigor em jsp diretamente em um navegador.

O servlet precisa ser compilado (ou seja, ele terá uma criação de class específica)

Jsf é um componente de visualização do MVC Framework

JSP significa JAVA SERVER PAGE …….. jsp não é um servlet. Jsp usa código e tag HTML em si mesmo, você não precisa fazer um HTML e um servlet seprately.Jsp estão desempenhando papel magnífico na aplicação web. Servlet é uma class java desempenha um papel para tornar a sua página HTML de estática para dinâmica.

  1. O JSF é um aplicativo da web usado para simplificar a integração de desenvolvimento de interfaces de usuário baseadas na web; O JSP é uma tecnologia baseada em Java usada especificamente para ajudar os desenvolvedores de software a criar páginas da Web dinâmicas.

  2. O JSF contém vários resources principais, incluindo, entre outros, o Managed Beans, um sistema de componentes baseado em modelo e duas bibliotecas de tags baseadas em XML; O JSP deve ser compilado no bytecode do Java para funcionar corretamente.

JSPs são o componente View do MVC (Model View Controller). O Controlador pega a solicitação recebida e a transmite para o Modelo, que pode ser um bean que faz algum access ao database. A JSP formata a saída usando HTML, CSS e JavaScript, e a saída é enviada de volta ao solicitante.

 JSP:means HTML+Java Code: 

JSP tem seu próprio ciclo de vida jsp_init () jsp_service () jsp_destroy

Após a primeira solicitação, o JSP é convertido para o arquivo .java. Existem três tipos de tag que estamos usando
1.) sem escrúpulos

 < % %> 

Aqui, o desenvolvedor pode declarar todas as coisas que o desenvolvedor deseja obter os dados

2.) Tag de Expressão

 < %= %> 

Aqui, o desenvolvedor pode usar alguns dados relacionados à impressão

3.) Declaração

 < !% %> 

Aqui, o desenvolvedor pode declarar alguns dados relacionados ao método.

 Servlet: 

Servlet tem seu próprio ciclo de vida.

 init() service() destroy() 

Após o primeiro pedido, o contêiner lerá os dados do arquivo web.xml e, depois, o preenchimento de boas-vindas será exibido.
Agora, depois de executar a ação, ele pesquisará a url e, após esse processo, procurará o próprio servlet específico. a operação de serviço será executada.

 JSF: 

JSF tem seu próprio ui e seu ciclo de vida pode funcionar de seis maneiras,

 A)Restore view phase B)Apply request values phase C)Process validations phase D)Update model values phase E)Invoke application phase F)Render response phase 

Para ui aqui para tabela aqui estamos usando grade de painel e há diferentes faces para isso que é.

 Rich Faces Prime Faces. 

O JSF é uma estrutura avançada em que é muito fácil implementar arquitetura baseada em Model-View-Controller (MVC) para projetos. A principal vantagem do JSF em relação ao JSP é a fácil renderização dinâmica dos componentes no navegador, com base nas condições e na fácil integração de events do ajax.

O front-end do aplicativo JSF, ou seja, os arquivos xhtml são aqueles mostrados ao usuário pelo navegador. Esses arquivos xhtml chamam internamente os beans gerenciados, por exemplo, os controladores em que a lógica real do aplicativo é gravada.

Os controladores invocam internamente vários serviços que se comunicam com o database (usando o Hibernate ou a API JPA). É assim que o stream acontece em breve.

O JSF também é usado em combinação com o RichFaces, que é uma estrutura para dar uma aparência rica ao seu aplicativo da web.

JSF + RichFaces + Hibernate / JPA é uma boa tecnologia para aprender com certeza!