2

我在用着

<%=request.getRequestURL()%>

重定向到当前页面,但地址有问题,一些参数如下:

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

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

有什么解决方案可以获取整个地址吗?

4

3 回答 3

2

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

编辑

HttpServletRequest.getQueryString()是我正在寻找的方法。谢谢@AlpeshGediya。因此,通过将它与 结合起来getRequestURL,您就拥有了想要的东西。

于 2013-05-27T05:37:35.143 回答
2

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

使用核心 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> 

使用小脚本

<%
  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

于 2013-05-27T05:45:03.713 回答
1

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

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

谢谢大家

于 2013-05-27T06:59:02.317 回答