struts2实现登录后跳转回本页面
来源:互联网 发布:微信朋友圈的网络陷阱 编辑:程序博客网 时间:2024/06/05 02:18
转载地址:
import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.apache.struts2.ServletActionContext; import com.aircom.zzy.util.StringUtil; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; //继承可以指定方法的拦截器接口 public class LoginInter extends MethodFilterInterceptor { private static final long serialVersionUID = -72827036782663208L; private static final Logger log = Logger.getLogger(LoginInter.class); public final static String SESSION_KEY="regUserId"; public final static String GOTO_URL_KEY="GOING_TO"; protected String doIntercept(ActionInvocation invocation) throws Exception { HttpServletRequest request=ServletActionContext.getRequest(); HttpSession session=request.getSession(); //通过session 判断用户是否登录 if(session!=null && session.getAttribute(SESSION_KEY)!=null) { return invocation.invoke(); } //这里是关键点了 设置客户原来请求的url地址 setToGoingURL(request, session, invocation); return invocation.invoke(); } private void setToGoingURL(HttpServletRequest request,HttpSession session,ActionInvocation invocation) { //如果referer不为空 直接使用它。如果为空我们分别获得命名空间,action名,以及请求参数 //从新构造成一个URL保存在session中 String url=request.getHeader("referer"); log.info("待转向URL:"+request.getHeader("referer")); if(url==null || url.equals("")) { url=""; String path=request.getContextPath(); String actionName=invocation.getProxy().getActionName(); String nameSpace=invocation.getProxy().getNamespace(); if(StringUtil.validateNull(nameSpace)) { url = url+path+nameSpace; } if(StringUtil.validateNull(actionName)) { url = url+"/"+actionName+".action"+"?"; } Map<String,String[]> zzMap = request.getParameterMap(); if(zzMap!=null) { for(String s:zzMap.keySet()) { String[] value=zzMap.get(s); for(String val:value) { url=url+s+"="+val+"&"; } } } log.info("完整URL:"+url); } session.setAttribute(GOTO_URL_KEY, url); } }
二、新建统一中间跳转页面login_result.jsp
代码如下:
<% String going_to = (String)session.getAttribute("GOING_TO"); if(going_to != null) { response.sendRedirect(going_to); } %>
三、配置struts.xml文件:
代码如下:
<struts> <package name="login" extends="common"> <interceptors> <interceptor name="loginInter" class="com.aircom.zzy.interceptor.LoginInter"> </interceptor> </interceptors> <action name="login" class="com.aircom.zzy.action.LoginRegistAction" method="login"> <result name="error">/webapp/login_result.jsp</result> <result name="input">/webapp/login_result.jsp</result> <result name="success">/webapp/login_result.jsp</result> <interceptor-ref name="defaultStack"/> <interceptor-ref name="loginInter"> <!--只拦截这个action中的login方法--> <param name="includeMethods">login</param> </interceptor-ref> </action> <action name="logout" class="com.aircom.zzy.action.LoginRegistAction" method="logout"> <result name="success">/webapp/login_result.jsp</result> <interceptor-ref name="defaultStack"/> <interceptor-ref name="loginInter"> <param name="includeMethods">logout</param> </interceptor-ref> </action> <!-- The following set is the action for register. --> <action name="goRegister" class="com.aircom.zzy.action.LoginRegistAction" method="goRegisterPage"> <result name="success">/webapp/register.jsp?num=1</result> </action> <action name="register" class="com.aircom.zzy.action.LoginRegistAction" method="register"> <result name="success">/webapp/index.jsp</result> <result name="input">/webapp/register.jsp?num=1</result> </action> </package> </struts>
- struts2实现登录后跳转回本页面
- struts2实现登录后跳转回本页面
- struts2实现登录后跳转回本页面
- 在Struts2中实现登陆后跳转到登录前页面
- 在Struts2中实现登陆后跳转到登录前页面
- 在Struts2中实现登陆后跳转到登录前页面
- 如何在struts2中登录后跳转到前置页面
- 实现登录成功后跳转到登录前的页面
- 登录后跳转之前页面
- 登录后跳转到登录前页面
- 登录页面,登录后跳转不成功
- struts2登录验证返回页面跳转
- J2EE实现登录后自动跳转到登录前访问的页面
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Discuz修改登录后跳转页面
- [Matlab]基础教程学习笔记(五):二维底层绘图修饰
- 中国特色害死了股市
- ABAP程序中的事件
- QT学习笔记(四) QtDesigner 实现简单的快捷键操作界面
- CSS选择器的顺序
- struts2实现登录后跳转回本页面
- powerdesigner 15打开pdm文件弹出安装打印机窗口的解决方法
- Pomelo聊天室源码分析(一)
- JSP中meta标签之详解
- Magento调用Block方法集合
- 触发器
- 经典的机器学习方面源代码库(非常全,数据挖掘,计算机视觉,模式识别,信息检索相关领域都适用的了)
- ABAP 内表总结-2 整体内表的操作
- Loader 小记