`
conkeyn
  • 浏览: 1504691 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

用户登陆,退出等基本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>
 

 

 

分享到:
评论

相关推荐

    理解拦截器用于在某个方法或字段被访

    在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取...

    Springmvc登录拦截器Demo

    Springmvc框架进行登录验证,除了某些特定的action请求不需要登录验证,例如登录,注册等。其他的action请求均需要登录验证,若没有登录则直接调到登录界面。若登录成功,则通过拦截

    拦截器和控制器的区别

    3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求后各调一次。 4、拦截器可以利用依赖注入,因此在spring框架程序中,优先拦截器 5、拦截器是包裹在过滤器中使用的。 复习 converter 转换器 ...

    Struts拦截器及token拦截器防止重复提交例子源码

    1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按...

    struts2注解配置Action及拦截器几种不同方式写法对应的路径指向.docx

    struts2注解配置Action及拦截器几种不同方式写法对应的路径指向.docx

    拦截器的验证

    关于对用户的拦截验证。 &lt;!-- 部署自定义拦截器!! --&gt; &lt;action name="test" class="com.cvit.avtion.TestAction"&gt; &lt;result&gt;/MyJsp.jsp &lt;!-- 应用自定义拦截器栈 --&gt; ...

    struts2 拦截器实例

    struts2,Interceptor struts2拦截器实例,两套实例,一套是针对单个的action配置的,另一套实例是针对全局的action配置的拦截器interceptor

    struts2拦截器原理

    在action执行之前先进行拦截器的拦截处理,然后再执行action的execute方法,返回给拦截器,再对应相应result

    java拦截器

    在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取...

    struts2的自定义拦截器例子

    struts2的一个简单的拦截器例子

    struts2拦截器

    拦截器可以抽象出一部分代码可以用来完善原来的Action。同时可以减轻代码冗余,提高重用率。比如在登入一个页面时,如果要求用户密码、权限...更多&gt;&gt; 拦截器可以说相当于是个过滤器:就是把你不想要的或不想显示的内容...

    Struts2(4)拦截器与验证框架

    当前应用的默认拦截器栈,对用户的每次请求都需要调用拦截器栈中的每个拦截器来拦截请求,最后一个拦截器处理完后将请求传递到 具体控制器中。拦截器栈是对拦截器的应用,相当于拦截器的集合。通过拦截器栈可以将一...

    struts2自定义拦截器配置心得

    strut2 配置自定义拦截器 包括struts2.xml 和 action对应的xml 以及拦截器 可能有点简单 但是基本配置都有

    Struts2学习案例(拦截器)

    自己写的struts2小案例,DAO是用JPA开发,包含Action,mysq等,mvc模式

    struts2.0拦截器、crud例子与用法

    struts2.0描述了拦截器并有对应的例子,用struts实现crud 用法及例子,并介绍了struts2的action的流程 及请求过程

    structs2拦截器实例计算action执行的时间

    structs2拦截器实例计算action执行的时间,涉及拦截器,structs.xml的配置等等。。

    名为责任链或者拦截器或者过滤器的简单模拟

    看到strut2的Interceptor(拦截器), tomcat源码的Valve(tomcat中各种各样容器如Wrapper,Context都是靠Valve实现各种功能), 以及最早学习到的java web中的javax.servlet.Filter的概念, 都是一种链式的处理流程...

    SpringMVC配置拦截器实现登录控制的方法

    主要介绍了SpringMVC配置拦截器实现登录控制的方法,SpringMVC读取Cookie判断用户是否登录,对每一个action都要进行判断,有兴趣的可以了解一下。

    Java Struts 实现拦截器

    该请求被提交到一系列的标准过滤器(Filter)组建链中(如ActionContextCleanUp:它主要是清理当前线程的ActionContext、Dispatcher,FilterDispatcher主要是通过ActionMapper来决定需要调用那个Action,...

    自定义struts(实现拦截器)

    自定义的简单的struts,自己写一个和struts一样的xml文件,利用反射进行生成实例和注入参数,自定义拦截器和action

Global site tag (gtag.js) - Google Analytics