Как получить URL запроса?

Я пытаюсь перенаправить на страницу, где пользователь пытался войти.

Я имею в виду, somepage → login → somepage

Я знаю это:

В LoginAction

HttpServletRequest request = ServletActionContext.getRequest();
String url = request.getServletPath();
setUrl(url);

в распорки.в 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 → login → loginPro → LoginAction (url запроса-loginPro..) → loginPro

как перенаправить пользователей на страницу, где они пытались войти в систему?

4 ответов


Спасибо за ваши ответы.

Я нашел этот способ и он работает!

url = запрос.getHeader ("referer");

этот url-адрес является точным url-адресом, где вызывается действие.


когда вы нажимаете ссылку входа в систему, то в java за этим url-адресом хранилища запросов в качестве статической переменной.

static String url = request.getHeader("referer");</p>

затем после вставки регистрационных данных u вызовите другой метод. Используйте эту статическую переменную для перенаправления.

например: я использовал на своем сайте.

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

Как вы перенаправляете свое действие входа в систему? Если это только одно место (или какая-то общая база, которая выполняет перенаправление), вы можете добавить переменную в сеанс, сделать свое действие входа в систему SessionAware, а затем просто получить/удалить исходный URL-адрес после успешного входа в систему и использовать его?


    HttpServletRequest request = ServletActionContext.getRequest(); 
    String url = request.getRequestURI();