Servlets Java são programas executados em um servidor da Web ou de aplicativos e atuam como uma camada intermediária entre uma solicitação proveniente de um navegador da Web ou outro cliente HTTP e bancos de dados ou aplicativos no servidor HTTP.
Os servlets oferecem várias vantagens em comparação com o CGI.
O desempenho é significativamente melhor.
Os servlets são executados no espaço de endereço de um servidor web. Não é necessário criar um processo separado para lidar com cada solicitação do cliente.
Os servlets são independentes de plataforma porque são escritos em Java.
O gerenciador de segurança Java no servidor impõe um conjunto de restrições para proteger os recursos em uma máquina servidor. Portanto, os servlets são confiáveis.
A funcionalidade completa das bibliotecas de classes Java está disponível para um servlet. Ele pode se comunicar com applets, bancos de dados ou outro software por meio de soquetes e mecanismos RMI que você já viu.
Os servlets realizam as seguintes tarefas principais:
Leia os dados explícitos enviados pelos clientes (navegadores). Isso inclui um formulário HTML em uma página da Web ou também pode vir de um miniaplicativo ou programa cliente HTTP personalizado.
Leia os dados de solicitação HTTP implícitos enviados pelos clientes (navegadores). Isso inclui cookies, tipos de mídia e esquemas de compactação que o navegador entende e assim por diante.
Processe os dados e gere os resultados. Esse processo pode exigir a comunicação com um banco de dados, a execução de uma chamada RMI ou CORBA, a invocação de um serviço da Web ou o cálculo direto da resposta.
Envie os dados explícitos (ou seja, o documento) para os clientes (navegadores). Este documento pode ser enviado em uma variedade de formatos, incluindo texto (HTML ou XML), binário (imagens GIF), Excel, etc.
Envie a resposta HTTP implícita aos clientes (navegadores). Isso inclui informar aos navegadores ou outros clientes que tipo de documento está sendo retornado (por exemplo, HTML), definir cookies e parâmetros de cache e outras tarefas semelhantes.
O ciclo de vida de um servlet pode ser definido como o processo completo, desde sua criação até a destruição. A seguir estão os caminhos seguidos por um servlet.
O servlet é inicializado chamando o método init ().
O servlet chama o método service () para processar a solicitação de um cliente.
O servlet é encerrado chamando o método destroy ().
Finalmente, o servlet é coletado como lixo pelo coletor de lixo da JVM.
O método init foi projetado para ser chamado apenas uma vez. É chamado quando o servlet é criado pela primeira vez e não é chamado novamente para cada solicitação do usuário. Portanto, ele é usado para inicializações únicas, assim como com o método init dos miniaplicativos.
Cada vez que o servidor recebe uma solicitação de um servlet, o servidor gera um novo thread e chama o serviço. O método service () verifica o tipo de solicitação HTTP (GET, POST, PUT, DELETE, etc.) e chama os métodos doGet, doPost, doPut, doDelete, etc. conforme apropriado.
Uma solicitação GET resulta de uma solicitação normal de um URL ou de um formulário HTML que não tem nenhum MÉTODO especificado e deve ser tratada pelo método doGet ().
Uma solicitação POST resulta de um formulário HTML que lista especificamente POST como o MÉTODO e deve ser tratada pelo método doPost ().
O método destroy () é chamado apenas uma vez no final do ciclo de vida de um servlet.
O método init () simplesmente cria ou carrega alguns dados que serão usados durante a vida do servlet.
Este método dá ao seu servlet a chance de fechar conexões de banco de dados, interromper threads em segundo plano, gravar listas de cookies ou contagens de ocorrências no disco e executar outras atividades de limpeza.
Este método deve ser usado para obter dados do servidor.
Este método deve ser usado para processar dados no servidor.
O método service () é o principal método para executar a tarefa real. O contêiner de servlet (ou seja, servidor da web) chama o método service () para lidar com solicitações vindas do cliente (navegadores) e para escrever a resposta formatada de volta para o cliente.
Cada vez que o servidor recebe uma solicitação de um servlet, o servidor gera um novo thread e chama o serviço. O método service () verifica o tipo de solicitação HTTP (GET, POST, PUT, DELETE, etc.) e chama os métodos doGet, doPost, doPut, doDelete, etc. conforme apropriado.
Aqui está a assinatura deste método:
public void service(ServletRequest request,
ServletResponse response)
throws ServletException, IOException{
}
O método service () é chamado pelo contêiner e o método de serviço invoca os métodos doGe, doPost, doPut, doDelete etc. conforme apropriado. Portanto, você não tem nada a ver com o método service (), mas substitui doGet () ou doPost () dependendo do tipo de solicitação que você recebe do cliente.
Os servlets lidam com a análise de dados do formulário automaticamente usando os seguintes métodos, dependendo da situação:
getParameter(): Você chama o método request.getParameter () para obter o valor de um parâmetro de formulário.
getParameterValues(): Chame este método se o parâmetro aparecer mais de uma vez e retornar vários valores, por exemplo, caixa de seleção.
getParameterNames(): Chame este método se quiser uma lista completa de todos os parâmetros na solicitação atual.
O método getParameterNames () de HttpServletRequest retorna uma lista completa de todos os parâmetros na solicitação atual. Este método retorna uma Enumeração que contém os nomes dos parâmetros em uma ordem não especificada.
Assim que tivermos uma Enumeração, podemos fazer um loop da Enumeração da maneira padrão, usando o método hasMoreElements () para determinar quando parar e usando o método nextElement () para obter cada nome de parâmetro.
Podemos usar o método getHeaderNames () de HttpServletRequest para ler as informações do cabeçalho HTTP. Este método retorna uma Enumeração que contém as informações do cabeçalho associadas à solicitação HTTP atual.
Assim que tivermos uma Enumeração, podemos fazer um loop da Enumeração da maneira padrão, usando o método hasMoreElements () para determinar quando parar e usando o método nextElement () para obter cada nome de parâmetro.
Quando um navegador solicita uma página da web, ele envia muitas informações ao servidor da web que não podem ser lidas diretamente porque essas informações viajam como parte do cabeçalho da solicitação HTTP. HTTPServletRequest representa esta solicitação HTTP.
quando um servidor Web responde a uma solicitação HTTP para o navegador, a resposta geralmente consiste em uma linha de status, alguns cabeçalhos de resposta, uma linha em branco e o documento. HTTPServletResponse representa essa resposta HTTP.
Obtenha o objeto de PrintWriter usando request.
PrintWriter out = response.getWriter();
Agora imprima html.
out.println("Hello World");
Podemos usar o método setStatus (statuscode) de HttpServletResponse para enviar um erro de autenticação.
// Set error code and reason.
response.sendError(407, "Need authentication!!!" );
O redirecionamento de página é geralmente usado quando um documento é movido para um novo local e precisamos enviar o cliente para esse novo local ou pode ser devido ao balanceamento de carga ou para randomização simples. A maneira mais simples de redirecionar uma solicitação para outra página é usando o método sendRedirect () do objeto de resposta.
Este método gera uma resposta 302 junto com um cabeçalho Location fornecendo a URL do novo documento.
Este método envia um código de status (geralmente 404) junto com uma mensagem curta que é formatada automaticamente dentro de um documento HTML e enviada ao cliente.
Filtros de servlet são classes Java que podem ser usadas na programação de servlet para os seguintes propósitos:
Para interceptar solicitações de um cliente antes que eles acessem um recurso no back end.
Para manipular as respostas do servidor antes de serem enviadas de volta ao cliente.
Existem vários tipos de filtros sugeridos pelas especificações:
Filtros de autenticação.
Filtros de compressão de dados.
Filtros de criptografia.
Filtros que acionam eventos de acesso a recursos.
Filtros de conversão de imagem.
Filtros de registro e auditoria.
Filtros de cadeia do tipo MIME.
Filtros de tokenização.
Filtros XSL / T que transformam conteúdo XML.
Os filtros são implantados no arquivo descritor de implantação web.xml e, em seguida, são mapeados para nomes de servlet ou padrões de URL no descritor de implantação de seu aplicativo.
Este método é chamado pelo contêiner da web para indicar a um filtro que ele está sendo colocado em serviço.
Este método é chamado pelo contêiner cada vez que um par de solicitação / resposta é passado pela cadeia devido a uma solicitação do cliente por um recurso no final da cadeia.
Este método é chamado pelo contêiner da web para indicar a um filtro que ele está sendo retirado de serviço.
Sim.
Sim. A ordem dos elementos de mapeamento de filtro em web.xml determina a ordem em que o contêiner da web aplica o filtro ao servlet. Para reverter a ordem do filtro, você só precisa reverter os elementos de mapeamento de filtro no arquivo web.xml.
Use o elemento error-page em web.xml para especificar a chamada de servlets em resposta a certas exceções ou códigos de status HTTP.
Se você deseja ter um manipulador de erro genérico para todas as exceções, você deve definir a seguinte página de erro em vez de definir elementos de página de erro separados para cada exceção:
<error-page>
<exception-type>java.lang.Throwable</exception-type >
<location>/ErrorHandler</location>
</error-page>
Cookies são arquivos de texto armazenados no computador cliente e são mantidos para diversos fins de rastreamento de informações. Java Servlets suporta cookies HTTP de forma transparente.
Definir cookies com servlet envolve três etapas:
(1) Criando um objeto Cookie: você chama o construtor Cookie com um nome de cookie e um valor de cookie, sendo que ambos são strings.
Cookie cookie = new Cookie("key","value");
Lembre-se de que nem o nome nem o valor devem conter espaço em branco ou qualquer um dos seguintes caracteres: [] () =, "/? @:;
(2) Definindo a idade máxima: use setMaxAge para especificar por quanto tempo (em segundos) o cookie deve ser válido. A seguir configuraria um cookie por 24 horas.
cookie.setMaxAge(60*60*24);
(3) Enviando o cookie para os cabeçalhos de resposta HTTP: você usa response.addCookie para adicionar cookies no cabeçalho de resposta HTTP da seguinte maneira:
response.addCookie(cookie);
Para ler cookies, você precisa criar uma matriz de objetos javax.servlet.http.Cookie chamando o método getCookies () de HttpServletRequest. Em seguida, percorra o array e use os métodos getName () e getValue () para acessar cada cookie e valor associado.
Excluir cookies é muito simples. Se você deseja excluir um cookie, basta seguir as três etapas seguintes:
Leia um cookie já existente e armazene-o no objeto Cookie.
Defina a idade do cookie como zero usando o método setMaxAge () para excluir um cookie existente.
Adicione este cookie de volta ao cabeçalho da resposta.
A sessão fornece uma maneira de identificar um usuário em mais de uma solicitação de página ou visita a um site e de armazenar informações sobre esse usuário. A sessão persiste por um período de tempo especificado, em mais de uma conexão ou solicitação de página do usuário.
Você pode anexar alguns dados extras no final de cada URL que identifica a sessão, e o servidor pode associar esse identificador de sessão aos dados que ele armazenou sobre essa sessão. Por exemplo, com http://tutorialspoint.com/file.htm;sessionid=12345, o identificador de sessão é anexado como sessionid = 12345, que pode ser acessado no servidor da web para identificar o cliente.
Você obteria o objeto HttpSession chamando o método público getSession () de HttpServletRequest, conforme abaixo:
// Create a session object if it is already not created.
HttpSession session = request.getSession();
Ao terminar com os dados de sessão de um usuário, você tem várias opções:
Remove a particular attribute: Você pode chamar o método public void removeAttribute (String name) para excluir o valor associado a uma chave específica.
Delete the whole session:Você pode chamar o método void invalidate () público para descartar uma sessão inteira. Configurando o tempo limite da sessão: você pode chamar o método public void setMaxInactiveInterval (int interval) para definir o tempo limite de uma sessão individualmente.
Log the user out: Os servidores que suportam servlets 2.4, você pode chamar o logout para fazer o logout do cliente do servidor Web e invalidar todas as sessões pertencentes a todos os usuários.
setAttribute (String name, Object value) do objeto HTTPSession vincula um objeto a esta sessão, usando o nome especificado e pode ser usado para atualizar um atributo na sessão.
setMaxInactiveInterval (int interval) do objeto HTTPSession especifica o tempo, em segundos, entre as solicitações do cliente antes que o contêiner do servlet invalide esta sessão.
A maneira mais simples de atualizar uma página da web é usar o método setIntHeader () do objeto de resposta.
Isso significa habilitar um site para fornecer diferentes versões de conteúdo traduzido para o idioma ou nacionalidade do visitante.
Isso significa adicionar recursos a um site para adaptá-lo a uma região geográfica ou cultural específica, por exemplo, a tradução do hindi para um site.
Esta é uma região cultural ou geográfica particular. É geralmente referido como um símbolo de idioma seguido por um símbolo de país que é separado por um sublinhado. Por exemplo, "en_US" representa a localidade em inglês dos EUA.
A seguir está o método do objeto de solicitação que retorna o objeto Locale.
java.util.Locale request.getLocale()
O método a seguir retorna um nome para o país da localidade apropriado para exibição ao usuário.
String getDisplayCountry()
O que vem a seguir?
Além disso, você pode passar por suas atribuições anteriores que fez com o assunto e certificar-se de que consegue falar sobre elas com segurança. Se você está mais descansado, o entrevistador não espera que você responda a perguntas muito complexas; em vez disso, você precisa tornar seus conceitos básicos muito fortes.
Em segundo lugar, realmente não importa muito se você não pudesse responder a algumas perguntas, mas é importante que tudo o que você respondeu, você deve ter respondido com confiança. Portanto, sinta-se confiante durante a entrevista. Nós da tutorialspoint desejamos a você boa sorte em ter um bom entrevistador e tudo de melhor para seu futuro empreendimento. Felicidades :-)