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


826

Eu tenho algumas questões. Esses são :

  1. Como o JSP e o Servlet estão relacionados entre si?
  2. JSP é algum tipo de servlet?
  3. Como o JSP e o JSF estão relacionados entre si?
  4. O JSF é algum tipo de JSP pré-compilado por UI, como o ASP.NET-MVC?

3
No JSF 2.0+, o xml não é necessário.
Divyesh Kanzariya

Respostas:


1229

JSP (JavaServer Pages)

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

Quando uma JSP é solicitada pela primeira vez ou quando o aplicativo Web é iniciado, o contêiner do servlet o compila em uma classe que se estende HttpServlete o usa durante a vida útil do aplicativo Web. Você pode encontrar o código fonte gerado no diretório de trabalho do servidor. Por exemplo , no Tomcat , é o /workdiretório Em uma solicitação JSP, o contêiner de servlet executará a classe 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 conhecido é o HttpServletque fornece métodos para conectar-se a solicitações HTTP usando os métodos HTTP populares , como GETe POST. Você pode configurar HttpServlets para escutar um determinado padrão de URL HTTP, configurável web.xmlou mais recentemente no Java EE 6 , com @WebServletanotação.

Quando um Servlet é solicitado pela primeira vez ou durante a inicialização do aplicativo Web, o contêiner do servlet cria uma instância dele e a mantém na memória durante a vida útil do aplicativo Web. A mesma instância será reutilizada para cada solicitação de entrada cujo URL corresponda ao padrão de URL do servlet. Você pode acessar os dados da solicitação HttpServletRequeste manipular a resposta por HttpServletResponse. Ambos os objetos estão disponíveis como argumentos de método em qualquer um dos métodos substituídos de HttpServlet, como doGet()e doPost().

JSF (JavaServer Faces)

O JSF é uma estrutura MVC baseada em componente que é construída sobre a API do Servlet e fornece componentes via taglibs que podem ser usados ​​no JSP ou em qualquer outra tecnologia de exibição baseada em Java, como Facelets . Facelets é muito mais adequado para JSF do que JSP. Ele fornece ótimos recursos de modelagem , como componentes compostos , enquanto o JSP basicamente oferece apenas <jsp:include>modelagem no JSF, para que você seja forçado a criar componentes personalizados com código Java bruto (que é um pouco opaco e com muito trabalho tedioso) quando você deseja substituir um grupo repetido de componentes por um único componente. Desde o JSF 2.0, o JSP foi descontinuado como tecnologia de visualização em favor do Facelets.

Nota : O próprio JSP NÃO está obsoleto, apenas a combinação de JSF com JSP está obsoleta.

Nota : O JSP possui ótimas habilidades de modelagem por meio de Taglibs, especialmente a variante ( Tag File ). O modelo JSP em combinação com o JSF é o que está faltando.

Por ser uma estrutura MVC ( Model-View-Controller ), o JSF fornece FacesServleto único controlador de solicitação-resposta . É necessário todo o trabalho de solicitação / resposta HTTP padrão e tedioso de suas mãos, como reunir entrada do usuário, validar / converter, colocar em objetos de modelo, chamar ações e renderizar a resposta. Dessa forma, você acaba basicamente com uma página JSP ou Facelets (XHTML) para View e uma classe JavaBean como Model . Os componentes JSF são usados ​​para vincular a exibição ao modelo (como o controle da Web do ASP.NET faz) e FacesServletusa a árvore de componentes JSF para fazer todo o trabalho.

Perguntas relacionadas


8
@ Shanks: Não inteiramente. Somente a <c:forEach>tag é do JSTL. Veja também stackoverflow.com/tags/jstl/info
BalusC

1
Sim. <mytag:doesSomething/>parece uma tag personalizada e <jsp:attribute>uma tag jsp.
Shashank Kadne 29/09/12

3
Como essa é uma resposta muito popular, quero adicionar um pouco muito importante, que é o arquivo de tags JSP, que permite a criação de tags personalizadas para composição e layout da página sem escrever código Java. Esse recurso é extremamente útil e faz parte do padrão há muitos anos, mas permanece subutilizado.
Jiggy #

1
O @johnny Facelets é a tecnologia de visualização preferida desde que o Java EE 6 foi lançado em 2009 ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). O conjunto mínimo de tecnologias para desenvolver aplicativos da Web Java não é maior que a maioria das outras linguagens, mas há muito mais opções e concorrentes, o que é confuso para os novatos. Desenvolvimento Web em Ruby? A primeira escolha é óbvia.
Davids

1
@BalusC +1 para obter uma explicação detalhada. Minha resposta favorita.
Anish B.

84

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

A tecnologia JSP faz parte da família de tecnologias 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 essencial em uma arquitetura altamente escalável para aplicativos baseados na Web.

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

R: A tecnologia JavaServer Faces é uma estrutura para criar 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 eventos e validação de entrada, definir a navegação da página e dar suporte à internacionalização e acessibilidade.

Uma biblioteca de tags customizada 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.


6
"JSP é um tipo especializado de servlet. JSF é um conjunto de tags que você pode usar com JSP." Esta declaração descreve melhor o relacionamento entre os três!
Lfree 11/03/16

34

Do ponto de vista do navegador / cliente

JSP e JSF têm a mesma aparência. Conforme os Requisitos do aplicativo, o JSP é mais adequado para aplicativos baseados em solicitação-resposta.

O JSF é direcionado para aplicativos da Web baseados em eventos mais ricos. Eu vejo o evento muito mais granular que a solicitação / 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 árvore de componentes (pelo FacesServlet especializado) e segue o ciclo de vida do componente definido por especificação.


23

Servlets:

A API Java Servlet permite que os desenvolvedores Java escrevam código do lado do servidor para fornecer conteúdo dinâmico da Web. Como outras APIs proprietárias de servidor da Web, a API do Java Servlet oferece melhor desempenho em relação ao CGI; no entanto, possui algumas vantagens adicionais importantes. Como os servlets foram codificados em Java, eles fornecem uma abordagem de design orientada a objetos (OO) e, mais importante, podem ser executados em qualquer plataforma. Portanto, o mesmo código era portátil para qualquer host que suportava Java. Os servlets contribuíram muito para a popularidade do Java, pois se tornou uma tecnologia amplamente usada para o desenvolvimento de aplicativos Web no lado do servidor.

JSP:

O JSP é construído sobre os servlets e fornece uma solução mais simples, baseada em página, para gerar grandes quantidades de conteúdo HTML dinâmico para interfaces de usuário da Web. O JavaServer Pages permite que 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 é compilado e executado imediatamente. Solicitações subsequentes para a mesma página simplesmente chamam o servlet de tempo de execução da página. Se uma alteração for feita no JSP no servidor, uma solicitação para visualizá-lo acionará outra tradução, compilação e reinicialização do servlet de tempo de execução.

JSF:

O JavaServer Faces é uma estrutura Java padrão para a construção de interfaces com o usuário para aplicativos da Web. Mais importante, simplifica o desenvolvimento da interface do usuário, que geralmente é uma das partes mais difíceis e tediosas do desenvolvimento de aplicativos da Web.
Embora seja possível construir interfaces com o usuário usando tecnologias Java Web fundamentais (como servlets Java e JavaServer Pages) sem uma estrutura abrangente projetada para o desenvolvimento de aplicativos Web corporativos, essas tecnologias principais geralmente podem levar a uma variedade de problemas de desenvolvimento e manutenção. Mais importante, quando os desenvolvedores obtiverem uma solução com qualidade de produção, o mesmo conjunto de problemas resolvidos pelo JSF terá sido resolvido de maneira fora do padrão. O JavaServer Faces foi projetado para simplificar o desenvolvimento de interfaces de usuário para aplicativos Java da Web das seguintes maneiras:
• Fornece uma abordagem de desenvolvimento independente do cliente, centrada em componentes, para criar interfaces de usuário da Web, melhorando assim a produtividade do desenvolvedor e a facilidade de uso.
• Simplifica o acesso e o 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 arquiteturais para um aplicativo da web.

[ Fonte: Referência completa: JSF ]


3
Não fui eu, mas imagino que seja porque você basicamente copia e cola uma resposta de um livro.
mawburn

7
@ Oberon: Obrigado pela resposta. Demorou um tempo para eu encontrar as palavras exatas, então fui para o livro. Se não for apropriado, você ou qualquer um pode sugerir que eu retire a resposta. Ficarei feliz em fazê-lo.
Kishor Prakash

18

Também há 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ê tiver uma interação GUI rica e muitos scripts Java forem necessários, favoreça o JSF. Basicamente, se a arquitetura do seu aplicativo GUI é como orientada a componentes e até dirigida como Swing, o JSF é o melhor.

Se o aplicativo for apenas um envio simples de formulário, não é necessária muita interação da GUI, o JSP poderá se sair bem se aprender uma nova tecnologia for uma sobrecarga e também uma estrutura complexa for desnecessária.


13

Servlet - é a camada do lado do servidor java.

  • JSP - é Servlet com html
  • JSF - seus componentes baseiam-se em bibliotecas de tags
  • JSP - é convertido em servlet uma vez quando o servidor recebe solicitação.

2
JSP é convertido em servlet uma vez quando o servidor recebe solicitação.
gargalhe

... quando o servidor recebeu o PRIMEIRO pedido. Mente em cache.
dbalakirev

10

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


6

A diferença básica entre Servlets e JSP é que, em Servlets, escrevemos código java e incorporamos código HTML e existe apenas o caso inverso com JSP. No JSP, escrevemos código HTML e incorporamos o código java usando tags fornecidas pelo JSP.


5

O JSP (Java Server Pages) é uma tecnologia java que permite que desenvolvedores e designers da Web desenvolvam e mantenham rapidamente páginas da Web dinâmicas e ricas em informações que alavancam 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 dinâmico 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 aos desenvolvedores JSF do que o JSP. Ele resolve problemas diferentes que ocorrem no JSP para o desenvolvimento de aplicativos da web.

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

insira a descrição da imagem aqui Fonte


0
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 converte para o arquivo .java. Existem três tipos de tag que estamos usando
1.) Sem script

<%  %>

Aqui, o desenvolvedor pode declarar tudo o que o desenvolvedor deseja levar os dados

2.) Etiqueta 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, após o preenchimento de boas-vindas, será exibido.
Agora, depois de executar a ação, ele pesquisará o URL e, após esse processo, pesquisará o servlet específico lá. operação de serviço será executada.

JSF:

O JSF tem sua própria interface do usuário 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 a interface do usuário aqui da tabela aqui, estamos usando a grade do painel e existem diferentes faces para isso.

Rich Faces
Prime Faces.

-1

JSPs são o componente View do MVC (Model View Controller). O Controller pega a solicitação recebida e a passa para o Model, que pode ser um bean que acessa alguns bancos de dados. O JSP formata a saída usando HTML, CSS e JavaScript, e a saída é enviada de volta ao solicitante.


-1

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

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

Os controladores invocam internamente vários serviços que se comunicam com o banco de dados (usando a API Hibernate ou JPA). É assim que o fluxo acontece em resumo.

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

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


-2

O Jsp também está tendo um código de servlet integrado que não precisa de nenhuma compilação externa, ele pode ser executado diretamente. As alterações terão efeito no jsp diretamente em um navegador.

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

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


-2

JSP significa JAVA SERVER PAGE ........ jsp não é um servlet. O Jsp usa código e tag HTML, por si só, você não precisa criar um HTML e um servlet separadamente. O Jsp está desempenhando um papel magnífico no aplicativo da web. Servlet é uma classe java que desempenha um papel para tornar sua página HTML de estática para dinâmica.


2
JSPs são realmente convertidos em componentes Servlet. "JSPs são convertidos em servlets em tempo de execução". Fonte: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev 27/03

-2

Servlets são os programas java do lado do servidor que são executados dentro do contêiner da web. O principal objetivo do servlet é processar as solicitações recebidas do cliente.

O Java Server Pages é usado para criar páginas da web dinâmicas. Os jsp foram introduzidos para escrever código java plus html em um único arquivo, o que não foi fácil de fazer no programa servlets. E um arquivo jsp é convertido em um servlet java quando é convertido.

O Java Server Faces é uma estrutura da Web MVC que simplifica o desenvolvimento da interface do usuário.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.