Como obter as informações da URL em uma solicitação ao servlet?

No exemplo de código abaixo extrairemos informações referentes ao HTTP (Hypertext Transport Protocol) do objeto request ( HttpServletRequest). Extrairemos o protocolo utilizado (http/https), o nome do servidor e o número da porta atribuído. Também leremos o caminho do contexto do aplicativo, o caminho do servlet, as informações do caminho e a string de consulta. Se combinarmos todas as informações mencionadas anteriormente obteremos algo igual ao valor retornado pelo request.getRequestURL()método.

Vamos verificar o trecho de código abaixo para ver qual método da HttpServletRequestclasse podemos chamar para obter as informações sobre o objeto de solicitação HTTP que podemos coletar.

package br.com.pensanaweb.servlet;

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(urlPatterns = "/url-info")
public class ServletUrlInformation extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // Obtendo URL de solicitação de servlet
        String url = request.getRequestURL().toString();

        // Obtendo string de consulta de solicitação de servlet.
        String queryString = request.getQueryString();

        // Obtendo informações de solicitação sem o nome do host.
        String uri = request.getRequestURI();

        // Abaixo extraímos informações sobre o caminho do objeto de solicitação
        String scheme = request.getScheme();
        String serverName = request.getServerName();
        int portNumber = request.getServerPort();
        String contextPath = request.getContextPath();
        String servletPath = request.getServletPath();
        String pathInfo = request.getPathInfo();
        String query = request.getQueryString();

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        pw.print("Url: " + url + "<br/>");
        pw.print("Uri: " + uri + "<br/>");
        pw.print("Scheme: " + scheme + "<br/>");
        pw.print("Server Name: " + serverName + "<br/>");
        pw.print("Port: " + portNumber + "<br/>");
        pw.print("Context Path: " + contextPath + "<br/>");
        pw.print("Servlet Path: " + servletPath + "<br/>");
        pw.print("Path Info: " + pathInfo + "<br/>");
        pw.print("Query: " + query);
    }
}

Ao acessar este servlet usando o seguinte url http://localhost:8080/url-info?x=1&y=1 , você obterá a seguinte saída em seu navegador:

Url: http://localhost:8080/url-info
Uri: /url-info
Scheme: http
Server Name: localhost
Port: 8080
Context Path:
Servlet Path: /url-info
Path Info: null
Query: x=1&y=1

Dependências do Maven

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
</dependency>

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.