Struts2通过自定义拦截器实现登录之后跳转到原页面
来源:互联网 发布:路边停车收费软件 编辑:程序博客网 时间:2024/05/22 17:20
这个功能对用户体验来说是非常重要的。实现起来其实很简单。
拦截器的代码如下:
package go.derek.advice;import go.derek.entity.User;import go.derek.util.CommonChecks;import go.derek.util.Constant;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.StrutsStatics;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class JumpBeforeInterceptor extends AbstractInterceptor implements ApplicationContextAware{private static final long serialVersionUID = 7224871247223705569L;@Overridepublic String intercept(ActionInvocation ai) throws Exception {ActionContext actionContext = ai.getInvocationContext();Map<String, Object> session = actionContext.getSession();User currentUser = (User) session.get(Constant.USER_INFO);if (null != currentUser&& CommonChecks.isNotEmpty(currentUser.getUserId())) {return ai.invoke();//执行下一个拦截器,如果没有拦截器了,就执行action}else{HttpServletRequest request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);String queryString = request.getQueryString(); // 预防空指针 if (queryString == null) {queryString = ""; } // 拼凑得到登陆之前的地址 String realPath = request.getRequestURI() + "?" + queryString; System.out.println(realPath+"realPath");session.put(Constant.GOING_TO_URL, realPath);return ai.invoke();//放行}}@Overridepublic void setApplicationContext(ApplicationContext arg0)throws BeansException {// TODO Auto-generated method stub}}将上一页面的url放到session中,然后登录的时候再从session中取出来,再重定向就可以了。
loginAction中这样写
String url = (String) this.getSession().get(Constant.GOING_TO_URL);if (CommonChecks.isNotEmpty(url)) {this.getResponse().sendRedirect(url);return null;}
struts.xml配置文件中,要对上面的自定义拦截器做配置:
<interceptor name="jumpBefore" class="go.derek.advice.JumpBeforeInterceptor"/><interceptor-stack name="jumpTo"><!-- 定义拦截器栈包含checkLogin拦截器 --><interceptor-ref name="jumpBefore"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack>
还要在之前的那个页面对应的action中,把拦截器配置上,比如:
<action name="problems" class="problemsAction"><result>/problems.jsp</result><interceptor-ref name="jumpTo" /></action>
经过上面的过程,就可以实现登陆之后跳转回原页面了~
17 0
- Struts2通过自定义拦截器实现登录之后跳转到原页面
- struts2用户是否登录拦截器,拦截之后异步跳转到登录页面
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Struts 通过拦截器实现登录后跳转到登录前页面 处理普通Http请求和Ajax请求时拦截配置
- Struts2自定义拦截器,实现登录检查。
- Struts2自定义拦截器(实现没有登录情况下只能访问登录页面)
- 拦截器针对ajax Session失效跳转到登录页面
- struts2的拦截器无法跳转到jsp页面
- 怎么实现登录之后跳转到登录之前的页面?SpringMVC+Freemarker
- Struts2自定义拦截器:登录拦截
- Struts2 拦截器控制jsp页面跳转
- struts2之通配符、页面跳转、拦截器
- JavaWeb拦截器,查看用户是否登录过,未登录禁止访问页面并且跳转到登录页面
- struts2--拦截器(非登录用户不可跳转至该页面)
- 登录跳转到原地址
- 腾讯实习生三面
- 【二叉树&层次遍历】Populating Next Right Pointers in Each Node
- 相交线
- VS2010 VS2012版最常用的快捷键
- [动态规划]UVA624 - CD
- Struts2通过自定义拦截器实现登录之后跳转到原页面
- 链表的就地逆置(递归+非递归)
- PLSQL无法连接数据库
- Java方法继承、方法重载、方法覆盖小总结
- Sqlserver 锁表处里
- 学习的内容
- 一个孤单无群的我
- ListView获得某行主键的方法
- 【二叉树&层次遍历】Populating Next Right Pointers in Each Node II