我有一个场景,用户点击"餐馆"链接(用于搜索特定地区的餐馆).我必须检查位置是否设置.如果未设置,我想将其重定向到允许他设置位置的页面,然后返回到按设置位置过滤的搜索结果.我正在使用response.sendRedirect(url)将用户重定向到设置位置页面.但是,我如何发送重定向回URL(即,在设置位置后我想要发送用户的URL)?
我试过这个:
response.sendRedirect("/location/set.html?action=asklocation&redirectUrl="+
request.getRequestUri()+request.getQueryString());
Run Code Online (Sandbox Code Playgroud)
但这不起作用,显示404错误; 此外,浏览器中形成的网址看起来不太好.
如果有人能解决问题,请
看起来你至少缺少一个"?" 之间request.getRequestUri()和request.getQueryString().您也应该对参数进行url-encode,您可以使用该参数java.net.URLEncoder.
此外,在进行重定向时,您需要预先添加上下文路径:request.getContextPath().
就像是
String secondRedirectUrl = request.getRequestUri()+"?"+request.getQueryString();
String encodedSecondRedirectUrl = URLEncoder.encode(secondRedirectUrl, serverUrlEncodingPreferablyUTF8);
String firstRedirectUrl = request.getContextPath()+"/location/set.html?action=asklocation&redirectUrl="+encodedSecondRedirectUrl;
response.sendRedirect(firstRedirectUrl);
Run Code Online (Sandbox Code Playgroud)
就个人而言,我宁愿通过RequestDispatcher在会话中存储并在设置位置后转发到它来解决问题.