如何在java中重定向到当前url?

时间:2013-05-27 05:32:51

标签: java html jsp

我正在使用

<%=request.getRequestURL()%>

重定向到当前页面,但是地址有问题,如下所示:

http://xxx.com/yyy/x/search?mesg=welcome&initial=true&app= 

并重定向到没有参数的地址,这会导致问题。

有没有解决方案来获取整个地址?

3 个答案:

答案 0 :(得分:2)

作为HttpServletRequest.getRequestURL()状态的文档,它不包含查询字符串。我无法在HttpServletRequest上看到任何直接包含此内容的方法,因此您可能必须自己构建,这不应该太难。您可以使用getParameterMap()方法获取所有查询参数的映射。

修改

HttpServletRequest.getQueryString()是我正在寻找的方法。谢谢@AlpeshGediya。因此,通过将其与getRequestURL相结合,您就拥有了所需的一切。

答案 1 :(得分:2)

您可以使用以下两种方法重定向网址。

使用核心jsp taglib 。(我更喜欢这个)

<c:redirect url="your url">   
     <c:param name="mesg" value ="${mesg}" />   
     <c:param name="initial" value ="${initial}" /> 
     <c:param name="app" value="${app}" />
<c:redirect> 

使用scriptlet

<%
  String queryString =  request.getQueryString();
  if(queryString != null) {
    response.sendRedirect("http://xxx.com/yyy/x/search?" + queryString); 
  }
  else {
    response.sendRedirect("http://xxx.com/yyy/x/search"); 
  }
%>

getQueryString(),返回请求的查询字符串,但如果没有提供/可用的请求参数,则返回null,因此您需要处理null

答案 2 :(得分:1)

我刚刚修改了之前的答案并写了这个:

<c:set var="parameter" value="<%=request.getQueryString()%>"/>
<c:if test="${not empty parameter}">
    <c:set var="parameter" value="?${parameter}"/>
</c:if>

谢谢大家