我正在尝试重定向到用户尝试登录的页面。
我的意思是,有些页面→登录→某个页面
我知道这一点;
在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
如何将用户重定向到他们尝试登录的页面?
答案 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