![](/img/trans.png)
[英]How to redirect my previous page after SSO Login in spring security?
[英]how to redirect to previous page after login in struts
这些是我项目中的一些jsp页面,只有在存在用户会话时,才能全部访问它们。 我有一个拦截器来检查会话是否在。 如果会话结束,页面将重定向到登录页面。 但是登录成功后,我需要重定向到较早运行的页面。 例如:如果我在xxx.jsp页面中工作,则在会话结束时,我定向到登录页面。 成功登录后,我需要重定向到xxx.jsp。 请帮助我。
在Action.class中
try {
HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
String backurl = request.getHeader("referer");
System.out.println(" Backurl : " + backurl);
Map session = ActionContext.getContext().getSession();
if (session.get("cus") != null) {
return "already_login";
} else {
return "not_yet_login";
}
} catch (Exception e) {
logger.info("Error : " + e);
logger.info("Error Message : " + e.getMessage());
}
在struts.xml中
<action name="call_Action_Class" class="controller.Action.class">
<result name="already_login">success.jsp</result>
<result name="not_yet_login">new_login_page.jsp</result>
</action>
在new_login_page.jsp中
<form action="login_dedirect" method="post" id="logsubmit">
<h2>Email :</h2>
<input type="text" name="email" />
<h2 >Password :</h2>
<input type="password" name="passwd" id="pwd" />
<input type="submit" value="Login" />
</form>
在struts.xml中
<action name="login_dedirect" class="controller.ActionRedirect.class">
<result name="success" type="redirect" >${backurl}</result>
<result name="fail">new_login_page.jsp</result>
</action>
在ActionRedirect.class中
private String backurl;//Getter & Setter Method.
try{
System.out.println(" Backurl :"+backurl);
return "success";
}catch(Exception e){
return "fail";
}
在struts中,您将操作用于业务逻辑。 然后将这些操作写入struts-config.xml中。 在动作类中,您将返回动作映射以根据需要重定向到任何jsp页面或servlet。 在下面我给你看例子
在struts-config中
<form-beans>
<form-bean name="Register" type="FormBeans.Register"/>
</form-beans>
上面的name属性用于输入表单,类型是您在表单中注册的动作类。 以下是您编写业务逻辑的操作类
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Register r=(Register)form;
DBManager db=new DBManager();
boolean rs=db.checkCustomer(r);
if(rs){
HttpSession session =request.getSession(true);
session.setAttribute("fname", r.getEmail());
return mapping.findForward(SUCCESS);
}
return mapping.findForward("failure");
}
现在回到struts-config,它们是两个标签
<action-mappings>
<action input="/WEB_INF/registeration.jsp" name="Register" path="/register" scope="session" type="actions.registration" validate="false">
<forward name="failure" path="/registeration.jsp"/>
<forward name="success" path="/mainmenu.jsp"/>
</action>
</action-mapping>
您可以同时使用全局转发和转发操作标签来重定向到所需的位置
************更新**********************
上面是strut1,下面是strut2。 您已经定义了类似于strut-config的xml文件。尽管重定向过程相同,但是它们之间的差别很小,例如在xml文件中
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default">
<action name="hello"
class="HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts>
这里的constant标签表明我们处于开发人员模式。这将有助于显示调试应用程序的日志。 结果年龄是用于重定向到您想要的任何jsp页面
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.