O que é o Java Servlet?

277

Li muitos artigos para entender o servlet java, mas não obtive sucesso.

Você pode dar uma breve introdução aos servlets java (em linguagem fácil). Como o que é servlet? Quais são as vantagens? E tudo isso.

Não consigo entender a diferença entre linguagens de programação do lado do servidor (PHP, ASP) e servlets.

hardik
fonte
38
Passe o mouse servletsabaixo da sua pergunta até que uma caixa preta seja exibida. Clique nele no link de informações .
precisa saber é o seguinte
1
Servlets Você pode ver isso. Eu acho que isso é detalhes e autêntico.
Shohan

Respostas:

336

Um servlet é simplesmente uma classe que responde a um tipo específico de solicitação de rede - geralmente uma solicitação HTTP. Basicamente, os servlets são geralmente usados ​​para implementar aplicativos da Web - mas também existem várias estruturas que operam sobre os servlets (por exemplo, Struts) para fornecer uma abstração de nível superior ao nível "aqui está uma solicitação HTTP, escreva nesta resposta HTTP" que servlets providenciar.

Os servlets são executados em um contêiner de servlet que lida com o lado da rede (por exemplo, analisando uma solicitação HTTP, manipulação de conexão etc.). Um dos contêineres de servlet de código aberto mais conhecidos é o Tomcat .

Jon Skeet
fonte
16
Servlets são trechos de código java chamados pelo servidor da web dentro do próprio servidor da web. Se você quiser algo parecido com PHP ou ASP, precisará de JSPs (que são um tipo especial de servlets) #
Thorbjørn Ravn Andersen
3
Obrigado pela resposta, mas ainda assim não consigo obter o uso real de servlets, seria melhor se você pudesse explicar por exemplo, como situção, onde podemos usar servlets. Eu não entendi o uso de servlet como o que servlet pode fazer que outras linguagens de programação do lado do servidor não podem fazer.
hardik
4
@ Hardik: não é que eles possam fazer algo que não possa ser feito de outra maneira. Servlets são apenas uma tecnologia comum para o trabalho Java do lado do servidor. Servlets não são uma linguagem - nem ASPX. Ambas são plataformas que você usa em conjunto com outra linguagem - geralmente Java no caso de servlets.
quer
7
@Hardik: Como escrevi no meu post, servlets são classes que operam dentro de um contêiner de servlet. O contêiner de servlet pode hospedar vários servlets ao mesmo tempo.
precisa
5
@ Hardik: Sim, exatamente. O servlet pode fornecer o HTML para exibir o formulário e também atuar no envio. Servlets também podem ser usados ​​para implementar serviços da web. Eles podem ser usados ​​para outros protocolos além do HTTP, mas o HTTP é predominantemente o transporte mais comum manipulado pelos servlets.
precisa saber é o seguinte
102

Um servlet em sua essência é uma classe java; que pode lidar com solicitações HTTP. Normalmente, o detalhamento interno da leitura de uma solicitação e resposta HTTP através da conexão é resolvido pelos contêineres como o Tomcat. Isso é feito para que, como desenvolvedor do servidor, você possa se concentrar no que fazer com a solicitação e as respostas HTTP e não se preocupar em lidar com código que lida com redes etc. O contêiner cuidará de coisas como agrupar tudo em um Objeto de resposta HTTP e envie-o ao cliente (por exemplo, um navegador).

Agora, a próxima pergunta lógica a ser feita é quem decide o que um contêiner deve fazer? E a resposta é; No mundo Java, pelo menos, é guiado (observe que não usei a palavra controlado) pelas especificações. Por exemplo, as especificações do servlet (consulte o recurso 2) determinam o que um servlet deve ser capaz de fazer. Portanto, se você pode escrever uma implementação para a especificação, parabéns, você acabou de criar um contêiner (tecnicamente, contêineres como o Tomcat também implementam outras especificações e fazem coisas complicadas, como carregadores de classes personalizados, etc., mas você entendeu).

Supondo que você tenha um contêiner, seus servlets agora são classes java cujo ciclo de vida será mantido pelo contêiner, mas sua reação às solicitações HTTP recebidas será decidida por você. Você faz isso escrevendo o que deseja fazer nos métodos predefinidos, como init (), doGet (), doPost () etc. Veja o Recurso 3.

Aqui está um exercício divertido para você. Crie um servlet simples como no Recurso 3 e escreva algumas instruções System.out.println () em seu método construtor (Sim, você pode ter um construtor de um servlet), init (), doGet (), métodos doPost () e execute o servlet no tomcat. Veja os logs do console e do tomcat.

Espero que isso ajude, aprendizado feliz.

Recursos

  1. Veja como o servlet HTTP se parece aqui (exemplo do Tomcat).

  2. Especificação de Servlet .

  3. Exemplo simples de servlet .

  4. Comece a ler o livro on-line / PDF Ele também fornece o download do livro inteiro. Pode ser que isso ajude. se você está apenas iniciando servlets, é uma boa ideia ler o material junto com a API do servlet. é um processo mais lento de aprendizado, mas é muito mais útil para esclarecer o básico.

Ayusman
fonte
12
As respostas somente de link são desencorajadas no Stack Overflow, porque os recursos aos quais eles vinculam podem ficar indisponíveis no futuro ou podem mudar. Considere resumir o conteúdo relevante do link na sua resposta para melhorá-lo.
6
O @Cupcake agradece seu feedback construtivo. Tentei adicionar um pouco de carne à resposta. Obrigado por melhorar a comunidade.
Ayusman
34

Além do exposto, e apenas para apontar o sangramento óbvio ...

Para muitos, isso é hiper óbvio, mas para alguém acostumado a escrever aplicativos que são executados e terminados: um servlet passa a maior parte do tempo sem fazer nada ... esperando receber algo, uma solicitação e respondendo a ele . Por esse motivo, um servlet tem uma vida útil: é inicializado e depois aguarda, respondendo a qualquer coisa lançada nele e, em seguida, é destruído. O que implica que ele deve ser criado (e posteriormente destruído) por outra coisa (uma estrutura), que seja executado em seu próprio encadeamento ou processo e que não fará nada a menos que seja solicitado. E também que, de uma maneira ou de outra, um mecanismo deve ser implementado pelo qual essa "entidade" possa "escutar" solicitações.

Eu sugiro que a leitura de threads, processos e soquetes jogue alguma luz sobre isso: é bem diferente da maneira como um aplicativo básico "olá mundo" funciona.

Pode-se argumentar que o termo "servidor" ou "servlet" é um pouco exagerado. Um nome mais racional e mais simples pode ser "responder". A razão para a escolha do termo "servidor" é histórica: os primeiros acordos foram "servidores de arquivos", em que vários terminais usuário / cliente solicitavam um arquivo específico de uma máquina central e esse arquivo seria "veiculado" "como um livro ou um prato de peixe e batatas fritas.

microfone roedor
fonte
1
É incorreto exibir o servlet como análogo a um "controlador" em uma estrutura MVC padrão?
user2490003
Pessoalmente, não vejo como essa analogia se aplica. Eu também tendem a pensar que as pessoas que acham que minha resposta é útil (ajuda a esclarecer as coisas para elas) podem ficar confusas com sua sugestão.
mike roedor
Eu acho que essa resposta é útil. Mas também me perguntei (independentemente desta resposta e antes de lê-la) a mesma pergunta que @ user2490003 colocou acima. Qual é a diferença entre um Servlet e um MVC-framework Controller? Por que a analogia do user2490003 não se mantém?
Cellepo 19/12/19
Um arranjo MVC é mais complicado e ainda menos complicado. Não envolve necessariamente a espera de entrada. Ao definir a idéia básica de uma configuração servidor-cliente, é essa simplicidade que procuro enfatizar. Veja o diagrama básico do MVC aqui: en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller . Em uma configuração simples de cliente-servidor, o usuário interage apenas com o cliente, não com dois objetos, a saber, uma visualização e um controlador. Com o MVC, também pode haver várias visualizações, vários controladores e vários modelos. E esperar pela entrada não está (necessariamente) envolvido.
microfone roedor
Além do acima, um servidor pode atender a vários usuários, enquanto que não existe esse requisito com uma configuração do MVC. Uma configuração do MVC pertence ao mundo da computação clássica, ou seja, aplicativos independentes. Com os servidores, damos o primeiro passo no universo da computação interativa. Não é que a analogia esteja 100% errada, mais 90% errada e, acima de tudo, que qualquer analogia simplesmente não serve para nada, se na verdade não ajudar ninguém nem nada. Um arranjo servidor-cliente é tão simples quanto uma idéia que ninguém precisa de analogias, de qualquer tipo , para entender.
Mike rodent
10

O que é um servlet?

  • Um servlet é simplesmente uma classe que responde a um tipo específico de solicitação de rede - geralmente uma solicitação HTTP.
  • Basicamente, os servlets são geralmente usados ​​para implementar aplicativos da Web - mas também existem várias estruturas que operam sobre os servlets (por exemplo, Struts) para fornecer uma abstração de nível superior ao nível "aqui está uma solicitação HTTP, escreva nesta resposta HTTP" que servlets providenciar.
  • Os servlets são executados em um contêiner de servlet que lida com o lado da rede (por exemplo, analisando uma solicitação HTTP, manipulação de conexão etc.). Um dos contêineres de servlet de código aberto mais conhecidos é o Tomcat.

  • Em um paradigma de solicitação / resposta, um servidor da web pode servir apenas páginas estáticas ao cliente

  • Para veicular páginas dinâmicas, exigimos Servlets.
  • Servlet nada mais é que um programa Java
  • Este programa Java não possui um método principal. Ele possui apenas alguns métodos de retorno de chamada.
  • Como o servidor da web se comunica com o servlet? Via contêiner ou mecanismo Servlet.
  • O servlet vive e morre dentro de um contêiner da web.
  • O contêiner da Web é responsável por chamar métodos em um servlets. Ele sabe quais métodos de retorno de chamada o Servlet possui.

Fluxo de Solicitação

  • Cliente envia solicitação HTTP ao servidor Web
  • O servidor da Web encaminha a solicitação HTTP para o contêiner da web.
  • Como o Servlet não pode entender HTTP, é um programa Java, ele apenas entende objetos, portanto, o contêiner da Web converte essa solicitação em um objeto de solicitação válido
  • Contêiner da Web gira um encadeamento para cada solicitação
  • Toda a lógica de negócios entra nos métodos de retorno de chamada doGet () ou doPost () dentro dos servlets
  • O servlet cria um objeto de resposta Java e o envia para o contêiner. Ele converte isso em resposta HTTP novamente para enviá-lo ao cliente

Como o contêiner sabe qual cliente do Servlet solicitou?

  • Há um arquivo chamado web.xml
  • Este é o arquivo principal de um contêiner da web
  • Você tem informações sobre o servlet neste arquivo

    • servlets
      • Nome do servlet
      • Classe de servlet
    • servlet-mappings - o caminho como / Login ou / Notifications é mapeado aqui em
      • Nome do servlet
      • padrão de URL
    • e assim por diante
  • Todo servlet no aplicativo da web deve ter uma entrada nesse arquivo

  • Portanto, essa pesquisa acontece como- url-pattern -> servlet-name -> servlet-class

Como "instalar" Servlets? Bem, os objetos de servlet são herdados da biblioteca - javax.servlet. O Tomcat e o Spring podem ser usados ​​para utilizar esses objetos para se ajustarem ao caso de uso.

Ref- Assista a isso em 1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE . Isso tem uma explicação incrível.

Sankalp
fonte
1
Um link para uma solução é bem-vindo, mas garanta que sua resposta seja útil sem ela: adicione contexto ao link para que seus colegas usuários tenham uma idéia do que é e por que está lá, depois cite a parte mais relevante da página que você ' reencaminhando para o caso de a página de destino não estar disponível. Respostas que são pouco mais que um link podem ser excluídas.
Mogsdad
1
Note que o mundo mudou. Em 2020, usamos anotações no código em vez do arquivo de configurações central baseado em string em XML.
Thorbjørn Ravn Andersen
5

Servlet é a tecnologia do lado do servidor usada para criar uma página da web dinâmica no aplicativo da web. Na verdade, servlet é uma API que consiste em um grupo de classes e interfaces, que possui algumas funcionalidades. Quando usamos a API do Servlet, podemos usar a funcionalidade predefinida de classes e interfaces de servlet.

Ciclo de vida do servlet:

O contêiner da Web mantém o ciclo de vida da instância do servlet.

1 Classe de servlet carregada

2) Instância de servlet criada

3) O método init () é chamado

4) método service () chamado

5) método destroy () invocado

Quando a solicitação aumenta pelo cliente (navegador), o contêiner da web verifica se o servlet está em execução ou não, se sim, então ele invoca o método service () e fornece a resposta ao navegador.

Quando o servlet não estiver em execução, o contêiner da web siga as etapas a seguir.

1. classloader carrega a classe de servlet

2. Instancia o servlet

3. Inicializa o servlet

4. invoque o método service ()

depois de atender ao pedido, o contêiner da web aguarda um horário específico; nesse momento, se o pedido chegar, ele chamará apenas o método service (), caso contrário, chamará o método destroy ().

Navnath Adsul
fonte
5

Se você é iniciante, acho que este tutorial pode fornecer uma idéia básica sobre o que é Servlet ...

Alguns pontos valiosos estão abaixo no link fornecido.

A tecnologia Servlet é usada para criar aplicativos da Web que residem no lado do servidor e geram páginas da Web dinâmicas.

Servlet pode ser descrito de várias maneiras, dependendo do contexto.

  • Servlet é uma tecnologia usada para criar aplicativos da web.
  • Servlet é uma API que fornece muitas interfaces e classes, incluindo documentações.
  • Servlet é uma interface que deve ser implementada para criar qualquer servlet.
  • Servlet é uma classe que estende os recursos dos servidores e responde à solicitação recebida. Ele pode responder a qualquer tipo de solicitação.
  • Servlet é um componente da web que é implementado no servidor para criar uma página da web dinâmica. Referência: Aqui .
Sandun Madola
fonte
1
Esse é realmente um bom tutorial que explica os conceitos básicos #
Nikhil Sahu
3

Servlets Java são módulos de programa Java do lado do servidor que processam e atendem às demandas dos clientes e atualizam a interface do servlet. Ajuda a melhorar a utilidade do servidor da Web com custos indiretos, manutenção e suporte desprezíveis.

Um servlet funciona como um mediador entre o cliente e o servidor. Como os módulos de servlet continuam em execução no servidor, eles podem obter e reagir às demandas feitas pelo cliente. Objetos de demanda e reação do servlet oferecem um método útil para lidar com solicitações HTTP e enviar informações de conteúdo de volta ao cliente.

Como um servlet é coordenado com o dialeto Java, além disso, possui todos os destaques do Java, por exemplo, alta mobilidade, autonomia do estágio, segurança e disponibilidade do banco de dados Java.

Poorna Senani Gamage
fonte
2

Servlet é uma classe java para responder a uma solicitação HTTP e produzir uma resposta HTTP ...... quando fazemos uma página com o uso de HTML, então seria uma página estática, para torná-la dinâmica, usamos SERVLET {em palavras simples pode-se entender} Para fazer uso do servlet é superado pelo JSP, ele usa o código e a tag HTML em si.

Roopam
fonte
2

Servlets são classes Java que executam certas funções quando um usuário do site solicita uma URL de um servidor. Essas funções podem concluir tarefas como salvar dados em um banco de dados, executar lógica e retornar informações (como dados JSON) necessárias para carregar uma página.

A maioria dos programas Java usa um main()método que executa código quando o programa é executado. Servlets Java contêm doGet()e doPost()métodos que agem exatamente como o main()método. Essas funções são executadas quando o usuário faz GETou POSTsolicita a URL mapeada para esse servlet. Assim, o usuário pode carregar uma página para uma GETsolicitação ou armazenar dados de uma POSTsolicitação.

Quando o usuário envia uma solicitação GETou POST, o servidor lê a @WebServletparte superior de cada classe de servlet em seu diretório para decidir qual classe de servlet chamar. Por exemplo, digamos que você tenha uma classe ChatBox e existe essa no topo:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

Quando um usuário solicita a /chatURL, sua ChatBoxclasse é executada.

kundus
fonte
0

Como este artigo descreve, um Servlet é uma maneira padronizada de estender um servidor Java e acessar seus recursos.

Cada Servlet pode ser visto como um servidor minúsculo (daí o nome), que obtém acesso à solicitação e resposta modelada no código Java, juntamente com outros dados de contexto, como a Sessão.

Com isso em mãos, o código Java do servlet pode interagir com o que for necessário para renderizar uma resposta, incluindo a transferência para uma página JSP para gerar uma visualização HTML.

mtyson
fonte
-1

Eu acho que servlet é basicamente uma classe java que atua como um meio termo entre a solicitação HTTP e a resposta HTTP. O servlet também é usado para tornar sua página da web dinâmica. Suponha, por exemplo, se você deseja redirecionar para outra página da web no servidor, você precisa usar servlets. Outra coisa importante é que o servlet pode ser executado no host local, bem como em um navegador da web.

Roopam
fonte
-2

Você acabou de obter a resposta para um servlet normalmente. No entanto, quero compartilhar sobre algo sobre o Servlet 3.0

O que é primeiro um Servlet?

Um servlet é um componente da Web que é gerenciado por um contêiner e gera conteúdo dinâmico. Servlets são classes Java compiladas em código de bytes que podem ser carregadas dinamicamente e executadas por um servidor Web ou contêiner de Servlet ativado pela tecnologia Java.

O Servlet 3.0 é uma atualização para a especificação existente do Servlet 2.5. API necessária do Servlet 3.0 da plataforma Java, Enterprise Edition 6. O Servlet 3.0 está focado na extensibilidade e conectividade da estrutura da web. O Servlet 3.0 traz algumas extensões, como facilidade de desenvolvimento (EoD), conectividade, suporte assíncrono e aprimoramentos de segurança

Facilidade de Desenvolvimento

Você pode declarar Servlets, Filtro, Ouvintes, Parâmetros de inicialização e quase tudo pode ser configurado usando anotações

Pluggability

Você pode criar um subprojeto ou um módulo com um web-fragment.xml. Isso significa que ele permite implementar requisitos funcionais conectáveis ​​de forma independente.

Suporte assíncrono

O Servlet 3.0 fornece a capacidade de processamento assíncrono, por exemplo: Aguardando a disponibilidade de um recurso, Gerando resposta de forma assíncrona.

Aprimoramentos de segurança

Suporte para os métodos de segurança de autenticação, logon e logoff do servlet

Encontrei no Java Servlet Tutorial

David Pham
fonte