如何获取请求URL?
我正在尝试重定向到用户尝试登录的页面。如何获取请求URL?
我的意思是,somepage→登录→somepage
我知道这个;
在LoginAction中
HttpServletRequest request = ServletActionContext.getRequest();
String url = request.getServletPath();
setUrl(url);
在struts.xml中
<action name="LoginPro" method="login" class="LoginAction">
<result type="redirect">${url}</result>
<result name="input" type="tiles">login.error</result>
</action>
但它不工作。 请求的url始终是“LoginPro”,它正在处理登录过程。 当用户点击登录按钮时,页面进入LoginPro。所以请求url始终是loginPro ...
它似乎是这样; somepage→登录→loginPro→LoginAction(请求url是loginPro ..)→loginPro
如何将用户重定向到他们尝试登录的页面?
感谢您的回答。
我发现这种方式,它的工作原理!
url = request.getHeader(“referer”);
此网址是动作被调用的确切网址。
谢谢!很有用! – 2014-06-03 11:51:23
如何重定向到您的登录操作?如果只有一个地方(或重定向的一些公共基地)可以向会话添加一个变量,请使用Login Action操作SessionAware,然后在成功登录后检索/删除源URL,然后使用它?
我的登录表单总是位于页面的左侧部分(由瓦片包含)。而..抱歉,我不明白你的意思。我不知道如何在会话中查找URL ..? – Deckard 2010-08-15 14:11:04
我的意思是,假设您想访问需要登录的某个位置。您是否说“您需要在此登录”并提供链接,或者您是否返回“登录”结果并重定向至登录操作? – 2010-08-15 14:57:17
当你点击一个Login的链接,然后在java后面的那个请求存储url作为静态变量。
static String url = request.getHeader("referer");</p>
然后在插入登录详细信息后,您可以调用其他方法。使用该静态变量来重定向。
例如:我用在我的网站。
<action name="login" class="actions.Login.LoginAuthenticate" method="input">
<!--Cookie functionality done -->
<result name="input">Login/login.jsp</result>
</action>
<action name="loginAuthenticate" class="actions.Login.LoginAuthenticate" method="execute">
<!--Cookie functionality done -->
<result name="redirect" type="redirect">${redirectUrl}</result>
<result name="input">Login/login.jsp</result>
</action>
public String execute() throws Exception {
if(getCheckCookies()){
setRedirectUrl("/login");
return "redirect";
}
Cookie un = new Cookie("un" , lemail);
un.setMaxAge(-1);
un.setVersion(1);
servletResponse.addCookie(un);
System.out.println("------>--------->------> " + redirectUrl);
return "redirect";
}
public String input() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
setRedirectUrl(request.getHeader("Referer"));
return INPUT;
}
public static String redirectUrl;
public void setRedirectUrl(String redirectUrl){
this.redirectUrl = redirectUrl;
}
public String getRedirectUrl(){
return this.redirectUrl;
}
是否可以选择让每个页面包含一个隐藏的输入或URL参数以传递给登录操作?它的值可以是当前页面,然后你可以设置你的重定向'$ {url}'。 – Pat 2010-08-15 00:20:25
我试过你的选择..我在登录JSP中添加,它的值是这样的... /MyContextPath/tiles/MyTilesLayout.jsp ...我不知道但是它以某种方式与瓷砖相关。 – Deckard 2010-08-15 14:16:06