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 HttpServletRequest
classe 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>