Sobes.tech
Junior

Quais ações são necessárias para criar servlets?

sobes.tech IA

Resposta da IA

  1. Criar uma classe que implemente a interface javax.servlet.Servlet ou que herde de uma das suas subclasses (por exemplo, javax.servlet.GenericServlet ou javax.servlet.http.HttpServlet).
  2. Sobrescrever os métodos do ciclo de vida do servlet (por exemplo, init(), service(), destroy()). Para servlets HTTP, geralmente sobrescrevem-se os métodos doGet(), doPost(), etc., para lidar com os métodos HTTP correspondentes.
  3. Registar o servlet na aplicação web. Isto pode ser feito de uma das seguintes formas:
    • Usar a anotação @WebServlet na classe do servlet, indicando o nome do servlet e os padrões de URL em que estará disponível.
    • Configurar o servlet no descriptor de deployment web.xml usando os elementos <servlet> e <servlet-mapping>.
  4. Empacotar o servlet e outros recursos da aplicação web (HTML, JSP, ficheiros estáticos) num ficheiro WAR.
  5. Despregar o ficheiro WAR num servidor de aplicações (por exemplo, Tomcat, WildFly, Jetty).

Exemplo de classe de um servlet HTTP:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "HelloWorldServlet", urlPatterns = {"/hello"})
public class HelloWorldServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html"); // Definir o tipo de conteúdo
        PrintWriter out = response.getWriter(); // Obter o writer para a resposta

        out.println("<html>");
        out.println("<head><title>Hello World</title></head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

Exemplo de configuração no web.xml:

<!-- web.xml -->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>HelloWorldServletXml</servlet-name>
        <servlet-class>com.example.HelloWorldServlet</servlet-class> <!-- Especifica o nome completo da classe --></servlet>

    <servlet-mapping>
        <servlet-name>HelloWorldServletXml</servlet-name>
        <url-pattern>/hello-xml</url-pattern> <!-- Padrão de URL --></servlet-mapping>

</web-app>