Atividade Pontuada 2
1. Observe o trecho de um arquivo web.xml referente ao mapeamento de servlets para URLs.
<web-app>
  <servlet>
    <servlet-name>One</servlet-name>
    <servlet-class>foo.DeployTestOne</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>One</servlet-name>
    <url-pattern>*.do </url-pattern>
  </servlet-mapping>
  
  <servlet>
    <servlet-name>Two</servlet-name>
    <servlet-class>foo.DeployTestTwo</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Two</servlet-name>
    <url-pattern>/fooStuff/bar</url-pattern>
  </servlet-mapping>
  
  <servlet>
    <servlet-name>Three</servlet-name>
    <servlet-class>foo.DeployTestThree</servlet-class></servlet>
  <servlet-mapping>
    <servlet-name>Three</servlet-name>
  <url-pattern>/fooStuff/*</url-pattern>
</servlet-mapping>
</web-app>
Agora indique no quadro abaixo para qual servlet seria mapeada cada uma das URLS.
Suponha que o container está em localhost:8080 e o contexto da aplicação seja /MapTest.
| One | Two | Three | 404 Not Found | |
| http://localhost:8080/MapTest/blue.do | ⬤ | ◯ | ◯ | ◯ | 
| http://localhost:8080/MapTest/fooStuff/bar | ◯ | ⬤ | ◯ | ◯ | 
| http://localhost:8080/MapTest/fooStuff/bar/blue.do | ◯ | ◯ | ⬤ | ◯ | 
| http://localhost:8080/MapTest/fooStuff/blue.do | ◯ | ◯ | ⬤ | ◯ | 
| http://localhost:8080/MapTest/fred/blue.do | ⬤ | ◯ | ◯ | ◯ | 
| http://localhost:8080/MapTest/fooStuff | ◯ | ◯ | ⬤ | ◯ | 
| http://localhost:8080/MapTest/fooStuff/bar/foo.fo | ◯ | ◯ | ⬤ | ◯ | 
| http://localhost:8080/MapTest/fred/blue.fo | ◯ | ◯ | ◯ | ⬤ | 
2. A chamada abaixo feita dentro do método doGet() de um servlet define uma resposta em que o cliente é instruído
    a redirecionar para outra URL.
response.sendRedirect("http://www.google.com/");
Qual dos trechos de código a seguir é equivalente à essa chamada.
| a. ◯ | 
       | 
| b. ⬤ | 
       | 
| c. ◯ | 
       | 
| d. ◯ | 
       | 
| e. ◯ | 
       | 
3. Observe a classe de servlet a seguir.
public class AtividadeServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response) throws IOException {
        String paramA = request.getParameter("a");
        String paramB = request.getParameter("b");
        String paramC = request.getParameter("c");
        double a = (paramA == null) ? 0 : Double.parseDouble(paramA);
        double b = (paramB == null) ? 0 : Double.parseDouble(paramB);
        double c = (paramC == null) ? 0 : Double.parseDouble(paramC);
        double delta = Math.pow(b, 2) - 4*a*c;
        response.getWriter().println("Delta: " + delta);
    }
}
Agora escreva uma query string que, enviada ao servlet, o fará retornar a resposta Delta: 12.0.
O valor da variável delta vem da seguinte fórmula
\[delta = b^2 - 4 \times a \times c\]Assim, se \(b=4\), \(a=1\) e \(c=1\),
\[delta = 4^2 - 4 \times 1 \times 1 = 12\]Finalmente, se a seguinte query string for passada, teremos a saída desejada:
b=4&a=1&c=1
Lembrando que existem diversas outras formas de chegar ao mesmo resultado.
4. No servlet abaixo, é identificado o idioma solicitado pelo cliente e criada uma mensagem especializada para três idiomas suportados: inglês, português e espanhol.
No entanto, o cliente, embora receba uma resposta de sucesso (200 OK), nunca recebe a mensagem no corpo da resposta, não importa o idioma solicitado. Identifique a razão desse comportamento e forneça uma solução.
public class AtividadeServlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws IOException {
        String message = "Hi, little friend, how are you?";
        String acceptLanguage = request.getHeader("Accept-Language");
        switch (acceptLanguage) {
            case "pt":
            case "pt-BR":
                message = "Oi, amiguinho, como vai?";
                break;
            case "es":
                message = "Hola, amiguito, ¿cómo estás?";
                break;
        }
    }
}
O problema ocorre porque o servlet em nenhum momento envia o conteúdo através do objeto response.getWriter().
Para solucionar o problema, basta adicionar ao final do método doGet() o código:
response.getWriter().println(message);