我希望在会话到期后将用户重定向到上次访问的页面,并提示用户再次登录。因为我将最后一页url传递给一个参数并调用了一个用于验证用户的seesioerror操作。
我有这段代码:
<script type="text/javascript">
var currentURL = window.location.href;
</script>
<%
String url= "<script>document.writeln(currentURL);</script>";
Object obj = session.getAttribute("user");
if (obj == null) {
response.sendRedirect(request.getContextPath() + "/SessionError?backurl=" + url);
}
%>
现在我的问题是每当我使用<% out.print("URL" + url);%>
打印Java String可变URL时,它都会正确打印页面URL。
但是如果将其传递到代码段内的response.sendRedirect(request.getContextPath() + "/SessionError?backurl=" + url);
行。它只传递<script>document.writeln(currentURL);</script>
而不是当前页面网址,例如 http://www.mysite.com/home 。请帮我摆脱这个问题。
答案 0 :(得分:1)
JSP是服务器端语言,它将在http响应返回客户端之前执行。通过这样说,你可以在javascript中使用JSP变量,而不是相反。 您可以使用javascript: document.referrer 来获取上一个网址
答案 1 :(得分:0)
您应该使用
request.getAttribute("javax.servlet.forward.request_uri")
请参阅此question
请不要混用sciplets和Javascript代码。一团糟。