top of page
Buscar

Como criar um Java Servlet simples.

No nosso post a respeito das aplicações que um Servlet pode ter nos nossos projetos Java Web, disponível aqui, vimos algumas das situações em que esse tipo de objeto Java pode ser utilizado. De modo geral, podemos utilizar os Servlets sempre que precisarmos fazer uma comunicação via métodos HTTP com outros sistemas ou até mesmo internamente.

Neste post, vou demonstrar como fazer a implementação de um Servlet simples, que poderá receber tanto chamadas GET quanto POST e retornará um HTML a ser exibido no sempre que a chamada for realizada.


Mão na Massa

Após criado o arquivo no diretório específico onde você irá armazenar seus Servlets (lembrando que as boas praticas recomendam que esse tipo de arquivo fique sempre dentro da pasta WebContent do seu projeto) podemos então iniciar a implementação da seguinte forma:


  • Criar a nossa classe e sinalizar ela como um Java Servlet:

@WebServlet(urlPatterns = "/HelloWorld")
public class HelloWorldServlet extends HttpServlet {

}

Ao criar a nossa classe adicionamos essa anotação "@WebServlet" para sinalizar que ela é um Java Servlet. Ao fazer isso, o projeto passará a entender essa classe como um objeto diferenciado que poderá receber requisições.


No atributo urlPatterns é onde definimos qual vai ser o caminho dentro do nosso projeto em que este Servlet ficará disponível para serem feita as chamadas.


Repare que na parte destacada em amarelo estendemos a classe HttpServlet. Com isso, estamos fazendo com que nossa classe ( HelloWorldServlet ) tenha disponíveis alguns métodos que ela herdará da classe HttpServlet, esses métodos são referentes as funcionalidades que de fato se espera que um Servlet tenha.



  • Definir o método padrão para recebimento das requisições:

@WebServlet(urlPatterns = "/HelloWorld")
public class HelloWorldServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		
	}
}

A partir da definição do método service já temos disponíveis o nosso request e o nosso response básicos de qualquer tipo de comunicação via métodos HTTP. Agora só falta de fato trabalhar com esses dois atributos e retornar algo ao client da nossa aplicação quando ele fizer uma request.



  • Definindo uma response simples:

@WebServlet(urlPatterns = "/HelloWorld")
public class HelloWorldServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		
		PrintWriter out = resp.getWriter();

		out.println("<html>");
		out.println("<body>");
		out.println("<p>Servlet funcionando, parabéns!</p>");
		out.println("</body>");
		out.println("</html>");
		
	}
}

Desta forma estamos retornando na response para o navegador um HTML simples contendo uma mensagem que você pode definir. Agora, ao reiniciar o seu servidor e realizar uma chamada você deve ver a resposta parecida com esta:



Print da tela demonstrando que o servlet retornou o valor esperado.

-------- x --------- x --------- x --------- x --------


Resumo do que temos até o momento:


Até aqui temos implementado o nosso primeiro Java Servlet. Este já pode receber uma chamada, tanto GET quanto POST e, sempre retornará a mesma estrutura HTML, independente da chamada.

Agora, iremos tornar essa resposta algo dinâmico. Na request, o nosso client irá enviar um atributo, e nós passaremos a retornar esse atributo junto com o HTML:


-------- x --------- x --------- x --------- x --------


  • Tornando a resposta dinâmica:

@WebServlet(urlPatterns = "/HelloWorld")
public class HelloWorldServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		
		String nome = req.getParameter("nome");
		
		PrintWriter out = resp.getWriter();
		
		out.println("<html>");
		out.println("<body>");
		out.println("<p>Servlet funcionando, parabéns!</p>");
		out.println("<p>Nome inserido: "+ nome + "</p>");
		out.println("</body>");
		out.println("</html>");
		
	}
}

Com essas duas linhas de código, nós passamos a receber o parâmetro "nome" que será enviado juntamente com a chamada, e adicionamos esse atributo na nossa response. O esperado então é que você possa realizar a chamada passando o atributo "nome" e este seja exibido em tela, como demonstrado a seguir:

Print da tela demonstrando que o servlet retornou o valor esperado. Agora com o atributo dinâmico.

Lembrando que os atributos podem ser passados via browser adicionando um ponto de interrogação ao fim da URL, seguido do nome do atributo, um sinal de igualdade e do valor do atributo.

Caso o seu Servlet não tenha retornado o nome inserido como o esperado, verifique nos logs gerados no servidor, provavelmente você verá algum erro destacado lá...



Conclusão


Neste post de fato implementamos um Servlet. Este é um Servlet muito simples, muito mesmo. As possibilidades que temos não param por aí, e essas possibilidades serão abordadas em posts futuros aqui no Acadêmico Tech. Dentre as possibilidade temos:

  • Bloqueio de requisições de um tipo específico (GET ou POST).

  • Exigir uma autenticação na hora da chamada.

  • Implementar um retorno em XML ou JSON.

  • Etc.

Aguardo vocês nos próximos posts e obrigado por ter acessado este aqui. Até logo!


Como está o seu currículo?

Ter um bom currículo é uma fator chave para você ter seu trabalho reconhecido perante o mercado de trabalho.

 

Sabemos que elaborar um bom currículo que descreva bem suas habilidade e suas expectativas pode ser uma tarefa muito complicada.

Clique no botão abaixo para ter todo o suporte necessário na elaboração de um currículo nota 10.

Como está o seu currículo?

Ter um bom currículo é uma fator chave para você ter seu trabalho reconhecido perante o mercado de trabalho.

 

Sabemos que elaborar um bom currículo que descreva bem suas habilidade e suas expectativas pode ser uma tarefa muito complicada.

Clique no botão abaixo para ter todo o suporte necessário na elaboração de um currículo nota 10.

Sobre o Autor

"Olá meu nome é Tiago Stasaitis, sou formado

Técnico em Informática e bacharel em Sistemas de Informação.

   

Fundei o Acadêmico Tech no intuito de compartilhar conteúdo que pode ajudar pessoas a se desenvolverem pessoal e profissionalmente. "

1633903387510.jpg
  • LinkedIn - Black Circle
  • Instagram
bottom of page