servlet httpservletrequest httpservlet example ejemplo contenedor java http servlets

httpservletrequest - servlet java ejemplo



HttpServletRequest para completar la URL (9)

Algo tarde para la fiesta, pero lo incluí en mi biblioteca MarkUtils-Web en WebUtils - aprobado por cheques y probado por JUnit:

import javax.servlet.http.HttpServletRequest; public class GetRequestUrl{ /** * <p>A faster replacement for {@link HttpServletRequest#getRequestURL()} * (returns a {@link String} instead of a {@link StringBuffer} - and internally uses a {@link StringBuilder}) * that also includes the {@linkplain HttpServletRequest#getQueryString() query string}.</p> * <p><a href="https://gist.github.com/ziesemer/700376d8da8c60585438" * >https://gist.github.com/ziesemer/700376d8da8c60585438</a></p> * @author Mark A. Ziesemer * <a href="http://www.ziesemer.com.">&lt;www.ziesemer.com&gt;</a> */ public String getRequestUrl(final HttpServletRequest req){ final String scheme = req.getScheme(); final int port = req.getServerPort(); final StringBuilder url = new StringBuilder(256); url.append(scheme); url.append("://"); url.append(req.getServerName()); if(!(("http".equals(scheme) && (port == 0 || port == 80)) || ("https".equals(scheme) && port == 443))){ url.append('':''); url.append(port); } url.append(req.getRequestURI()); final String qs = req.getQueryString(); if(qs != null){ url.append(''?''); url.append(qs); } final String result = url.toString(); return result; } }

Probablemente la respuesta más rápida y más sólida aquí hasta ahora detrás de la de Mat Banik, pero incluso la suya no tiene en cuenta las posibles configuraciones de puertos no estándar con HTTP / HTTPS.

Ver también:

Tengo un objeto HttpServletRequest .

¿Cómo obtengo la URL completa y exacta que hizo que esta llamada llegara a mi servlet?

O al menos con la mayor precisión posible, ya que quizás hay cosas que pueden regenerarse (quizás el orden de los parámetros).



El HttpServletRequest tiene los siguientes métodos:

  • getRequestURL() : devuelve la parte de la URL completa antes de consultar el carácter de separador de cadena ?
  • getQueryString() : devuelve la parte de la URL completa después del carácter separador de la cadena de consulta ?

Entonces, para obtener la URL completa, simplemente haz:

public static String getFullURL(HttpServletRequest request) { StringBuilder requestURL = new StringBuilder(request.getRequestURL().toString()); String queryString = request.getQueryString(); if (queryString == null) { return requestURL.toString(); } else { return requestURL.append(''?'').append(queryString).toString(); } }


En un proyecto de primavera puedes usar

UriComponentsBuilder.fromHttpRequest(new ServletServerHttpRequest(request)).build().toUriString()


HttpUtil está en desuso, este es el método correcto

StringBuffer url = req.getRequestURL(); String queryString = req.getQueryString(); if (queryString != null) { url.append(''?''); url.append(queryString); } String requestURL = url.toString();


Puedes usar el filtro.

@Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest test1= (HttpServletRequest) arg0; test1.getRequestURL()); it gives http://localhost:8081/applicationName/menu/index.action test1.getRequestURI()); it gives applicationName/menu/index.action String pathname = test1.getServletPath()); it gives //menu/index.action if(pathname.equals("//menu/index.action")){ arg2.doFilter(arg0, arg1); // call to urs servlet or frameowrk managed controller method // in resposne HttpServletResponse httpResp = (HttpServletResponse) arg1; RequestDispatcher rd = arg0.getRequestDispatcher("another.jsp"); rd.forward(arg0, arg1); }

no olvide poner <dispatcher>FORWARD</dispatcher> en la asignación de filtros en web.xml


Utilice los siguientes métodos en el objeto HttpServletRequest

java.lang.String getRequestURI() devuelve la parte de la URL de esta solicitud desde el nombre del protocolo hasta la cadena de consulta en la primera línea de la solicitud HTTP.

java.lang.StringBuffer getRequestURL() -Reconstruye la URL que el cliente usó para realizar la solicitud.

java.lang.String getQueryString() devuelve la cadena de consulta que está contenida en la URL de la solicitud después de la ruta.


Yo uso este método:

public static String getURL(HttpServletRequest req) { String scheme = req.getScheme(); // http String serverName = req.getServerName(); // hostname.com int serverPort = req.getServerPort(); // 80 String contextPath = req.getContextPath(); // /mywebapp String servletPath = req.getServletPath(); // /servlet/MyServlet String pathInfo = req.getPathInfo(); // /a/b;c=123 String queryString = req.getQueryString(); // d=789 // Reconstruct original requesting URL StringBuilder url = new StringBuilder(); url.append(scheme).append("://").append(serverName); if (serverPort != 80 && serverPort != 443) { url.append(":").append(serverPort); } url.append(contextPath).append(servletPath); if (pathInfo != null) { url.append(pathInfo); } if (queryString != null) { url.append("?").append(queryString); } return url.toString(); }


// http://hostname.com/mywebapp/servlet/MyServlet/a/b;c=123?d=789 public static String getUrl(HttpServletRequest req) { String reqUrl = req.getRequestURL().toString(); String queryString = req.getQueryString(); // d=789 if (queryString != null) { reqUrl += "?"+queryString; } return reqUrl; }