我正在使用
<%=request.getRequestURL()%>
重定向到当前页面,但是地址有问题,如下所示:
http://xxx.com/yyy/x/search?mesg=welcome&initial=true&app=
并重定向到没有参数的地址,这会导致问题。
有没有解决方案来获取整个地址?
答案 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>
谢谢大家