如何获取请求URL?

时间:2010-08-14 04:21:26

标签: struts2

我正在尝试重定向到用户尝试登录的页面。

我的意思是,有些页面→登录→某个页面

我知道这一点;

在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。所以请求网址总是loginPro ...

似乎就是这样; somepage→login→loginPro→LoginAction(请求url是loginPro ..)→loginPro

如何将用户重定向到他们尝试登录的页面?

4 个答案:

答案 0 :(得分:5)

感谢您的回答。

我找到了这种方式并且有效!

url = request.getHeader(“referer”);

此网址是调用操作的确切网址。

答案 1 :(得分:3)

当您单击Login的链接,然后在该请求存储URL后面的java中作为静态变量。

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;
}

答案 2 :(得分:0)

您如何重定向到您的登录操作?如果它只是一个地方(或一些公共基地进行重定向)你可以在会话中添加一个变量,使你的登录操作SessionAware,然后只需在成功登录后检索/删除源URL,并使用它吗? / p>

答案 3 :(得分:-1)

SignedAndEnevloped