用户登陆,退出等基本Action(3)拦截器

1、使用cookie自动登陆的拦截器(IMemberAware.java):

/**
 * 
 */
package com.web.struts.inteceptor;

import com.model.Member;

/**
 * @author Administrator
 * 
 */
public interface IMemberAware {

	public Member getMember();

	public void setMember(Member member);
}

 

/**
 * 
 */
package com.web.struts.inteceptor;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.model.Member;
import com.service.IMemberService;
import com.tools.Constant;

/**
 * title:会员cookie自动登陆
 * 
 * @author Administrator
 * @时间 2009-4-24:下午03:42:25
 */
public class MemberCookieLoginInterceptor extends AbstractInterceptor {

	private Member member;

	private IMemberService memberService;

	/**  */
	private static final long serialVersionUID = 6998551363568297012L;	

	@SuppressWarnings("null")
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpSession session = request.getSession();
		if (StringUtils.isBlank(username)) {
			Cookie[] cookies = request.getCookies();
			Cookie member_cookie = null;
			if (cookies != null || cookies.length >= 0) {
				for (int i = 0; i < cookies.length; i++) {
					member_cookie = cookies[i];
					if (member_cookie != null
							&& StringUtils.isNotBlank(member_cookie.getName())
							&& StringUtils.isNotBlank(member_cookie.getValue())
							&& member_cookie.getName().equals(
									Constant.MEMBER_SESSION_ID)) {
						member = memberService.getMember(member_cookie
								.getValue());
						if (member != null) {
							session.setAttribute(Constant.MEMBER_SESSION_ID,
									member_cookie.getValue());
						}
						break;
					} else {
						member_cookie = null;
					}
				}
			}
		}
		return invocation.invoke();
	}

	public Member getMember() {
		return member;
	}

	public void setMember(Member member) {
		this.member = member;
	}

	public void setMemberService(IMemberService memberService) {
		this.memberService = memberService;
	}

}

 3、会员管理面板的拦截器:

/**
 * 
 */
package com.web.struts.inteceptor;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.model.Member;
import com.service.IMemberService;
import com.tools.Constant;

/**
 * title: 用户在线
 * 
 * @author conkeyn
 * @时间 2009-3-30:下午01:48:10
 */
public class MemberOnlineInterceptor extends AbstractInterceptor {

	/**  */
	private static final long serialVersionUID = 2470845588966783260L;

	private Member member;

	private IMemberService memberService;

	@SuppressWarnings("null")
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpSession session = request.getSession();
		String username = (String) session
				.getAttribute(Constant.MEMBER_SESSION_ID);
		if (StringUtils.isBlank(username)) {
			Cookie[] cookies = request.getCookies();
			Cookie member_cookie = null;
			if (cookies != null || cookies.length >= 0) {
				for (int i = 0; i < cookies.length; i++) {
					member_cookie = cookies[i];
					if (member_cookie != null
							&& StringUtils.isNotBlank(member_cookie.getName())
							&& StringUtils.isNotBlank(member_cookie.getValue())
							&& member_cookie.getName().equals(
									Constant.MEMBER_SESSION_ID)) {
						member = memberService.getMember(member_cookie
								.getValue());
						if (member != null) {
							session.setAttribute(Constant.MEMBER_SESSION_ID,
									member_cookie.getValue());
						}
						break;
					} else {
						member_cookie = null;
					}
				}
			}
		}
		if (StringUtils.isBlank(username)) {
			return "global_login";
		} else {
			System.out.println(invocation.getClass().getName());
			if (invocation instanceof IMemberAware) {
				member = memberService.getMember(username);
				if (member != null) {
					((IMemberAware) invocation).setMember(member);
				}
			}
			return invocation.invoke();
		}
	}

	public Member getMember() {
		return member;
	}

	public void setMember(Member member) {
		this.member = member;
	}

	public void setMemberService(IMemberService memberService) {
		this.memberService = memberService;
	}

}
 

 

4、相关配置文件:

   1)spring配置方式:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
	"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
	<bean id="memberOnlineInterceptor" class="com.web.struts.inteceptor.MemberOnlineInterceptor"
		scope="prototype">
		<property name="memberService" ref="memberService" />
	</bean>
	
	<bean id="memberCookieLoginInterceptor" class="com.web.struts.inteceptor.MemberCookieLoginInterceptor"
		scope="prototype">
		<property name="memberService" ref="memberService" />
	</bean>
</beans>

   2)struts配置方式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
	<include file="struts-manager.xml"></include>
	<include file="struts-manager-templ.xml"></include>
	<include file="struts-member.xml"></include>
	<include file="struts-client.xml"></include>
	<include file="struts-account.xml"></include>
	<package name="map_main" extends="struts-default">
		<!-- 会员Cookie自动登陆 -->
		<interceptors>
			<!-- 权限拦截器 -->
			<interceptor name="MemberCookieLoginInterceptor" class="memberCookieLoginInterceptor" />
			<interceptor-stack name="MemberCookieLogin">
				<interceptor-ref name="MemberCookieLoginInterceptor" />
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="MemberCookieLogin" />
	</package>
	<package name="map_member" extends="map_main" namespace="/member">
		<!-- 会员拦截器 -->
		<interceptors>
			<!-- 权限拦截器 -->
			<interceptor name="memberOn" class="memberOnlineInterceptor" />
			<interceptor-stack name="memberOnline">
				<interceptor-ref name="memberOn" />
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>
			<interceptor-stack name="noneStack"></interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="memberOnline" />
		<global-results>
			<result name="global_login" type="redirectAction">
				<param name="namespace">/</param>
				<param name="actionName">login</param>
			</result>
		</global-results>
	</package>
</struts>
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值