Как получить 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();