当前位置:首页 > 开发 > Web前端 > 前端 > 正文

struts2自定义拦截器与cookie整合实现用户免重复登入

发表于: 2013-10-10   作者:ak23173969   来源:转载   浏览:
摘要: 目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用struts2做了个简单的struts2拦截器,涉及到了与cookie整合,具体的看代码   结构(两部份)=struts2.xml+自定义拦截器对象   配置文件 <!-- 自定义拦截栈与拦截器 --> <interceptors> <interceptor n

目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用struts2做了个简单的struts2拦截器,涉及到了与cookie整合,具体的看代码

 

结构(两部份)=struts2.xml+自定义拦截器对象

 

配置文件

		<!-- 自定义拦截栈与拦截器 -->
		<interceptors>
			<interceptor name="visitInterceptor" class="cn.kjkj.web.ema.view.interceptor.VisitInterceptor" />
			<interceptor name="cookieInterceptor" class="cn.kjkj.web.ema.view.interceptor.CookieInterceptor" />
			<interceptor-stack name="MyStack">
				<interceptor-ref name="cookieInterceptor" />
				<interceptor-ref name="visitInterceptor" />
				<interceptor-ref name="paramsPrepareParamsStack" />
			</interceptor-stack>
		</interceptors>

		<!-- 设置默认拦截栈 -->
		<default-interceptor-ref name="MyStack" />

 

    自定义拦截器具体实现

import java.util.List;
import java.util.Map;

import javax.servlet.http.Cookie;
import org.springframework.beans.factory.annotation.Autowired;

import cn.kjkj.web.ema.domain.User;
import cn.kjkj.web.ema.service.UserService;
import cn.kjkj.web.ema.view.action.BaseAction;
import cn.kjkj.web.ema.view.action.LoginAction;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**登入时间缓存拦截器
 * */
@SuppressWarnings("serial")
public class CookieInterceptor extends AbstractInterceptor  {
	@Autowired
	private UserService userService;
	
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
	/**登入拦截*/
		Object action=invocation.getAction();  
		Map<String, Object> session=invocation.getInvocationContext().getSession();
		Cookie [] cookies= BaseAction.getRequest().getCookies();
		//System.out.println(cookies!=null);
		String account=null;
		String  password=null;
		if(!(action instanceof LoginAction)){ //判断是否正在登入
			if(session.get("usermessage")!=null){
				return invocation.invoke();
			}else{
				if(cookies!=null){
					
				for(Cookie c:cookies){
					if(c.getName().equalsIgnoreCase("username")){
					if(c!=null){
						account=c.getValue();
					}
					}else if(c.getName().equalsIgnoreCase("password")){
						if(c!=null){
							password=c.getValue();
						}
					}
				}
				if(account!=null&&password!=null){
					User u=new User(account, password);
					List<User> list=userService.checkMessage(u);
					if(list.size()==1){
						session.put("usermessage", list.get(0));
						return BaseAction.MAIN;
					}
					}
				}
			}
		}
		
		return invocation.invoke();
	}

 

 

 

struts2自定义拦截器与cookie整合实现用户免重复登入

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号