`
conkeyn
  • 浏览: 1525149 次
  • 性别: 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>
 

 

 

分享到:
评论

相关推荐

    登录拦截器

    实现登录拦截器的基本步骤如下: 1. **定义拦截器**:在Struts2中,我们需要创建一个实现了`com.opensymphony.xwork2.interceptor.Interceptor`接口的类。这个类将包含拦截逻辑,例如检查session中是否存在登录信息...

    struts2-demo及登录验证的拦截器的使用

    6. **退出登录**:同样,提供一个退出登录的功能,清除session中的用户信息,使得拦截器在后续请求中判断为未登录状态。 通过这个struts2-demo项目,我们可以实践这些概念,理解如何将拦截器与实际业务逻辑结合,...

    Struts2 配置第一个拦截器

    当Action执行完成后,拦截器栈会按照相反的顺序退出。 至于标签中的“源码”和“工具”,这可能意味着你需要查看Struts2的源代码以深入了解其内部工作原理,同时利用IDE(如IntelliJ IDEA或Eclipse)进行开发和调试...

    拦截器下载

    3. **退出**:Action执行完成后,再按逆序执行后置拦截器的`intercept()`方法。 ### 六、应用场景 1. **权限控制**:验证用户是否具有访问特定Action的权限。 2. **数据校验**:在Action执行前对用户提交的数据进行...

    Struts2的拦截器的使用详解

    通过定义一系列拦截器并设置它们的执行顺序,你可以实现如日志记录、权限验证、性能监控等通用功能,而无需在每个Action中重复编写这些代码。 二、拦截器的结构与工作原理 1. 拦截器栈:Struts2中的拦截器不是单独...

    struts2拦截器实例

    每个拦截器都有一个进入(execute)方法和一个退出(returning)方法,当请求到达Action时,会按照拦截器栈的顺序逐个执行这些方法。 **三、拦截器的配置** 配置拦截器主要通过struts.xml配置文件进行。以下是一个...

    JSP和Struts解决用户退出问题

    Struts提供了ActionServlet和ActionForm类,可以在用户退出时清理相关数据,并结合Interceptor拦截器来控制页面流向。Struts的配置文件可以设定拦截器链,确保用户在未验证的情况下无法访问受保护的页面。 总的来说...

    Struts2无刷新实现登陆退出

    3. **配置Struts2拦截器**:定义一个拦截器,检查用户会话中的登录状态,如果未登录则重定向到登录页面。 4. **编写Ajax请求**:使用jQuery或者其他JavaScript库,发送异步请求到服务器,接收登录验证的响应。成功...

    struts2实现用户登录

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用,用于构建可维护、可扩展的Web应用程序。...在实践中,还可以结合拦截器、国际化、插件等特性,进一步提升应用的功能和性能。

    安全退出activity方法(多种)

    在Android应用开发中,Activity是用户界面的基本组件,它负责展示屏幕上的交互元素并处理用户事件。当用户完成某个操作或者需要节省系统资源时,安全退出Activity是非常重要的。本篇文章将详细探讨多种安全退出...

    java中的Struts2拦截器详解

    每一个 Action 请求都在拦截器中,每一个 action 可以将操作转交给下面的拦截器,也可以直接退出到界面上。拦截器可以将请求传递给下一个拦截器或 action,也可以终止请求的执行。 4. 定义拦截器: 要定义拦截器,...

    Struts用户登录

    通过这个简单的用户登录案例,你可以学习到Struts如何处理HTTP请求、如何组织业务逻辑、以及如何与数据库交互等基本概念。同时,它也是进一步探索其他Java Web框架,如Spring MVC、JSF等的基础。在实际开发中,你还...

    Struts2登录功能小练习.rar

    在这个"Struts2登录功能小练习"中,我们将深入探讨如何利用Struts2实现一个基本的用户登录系统。 首先,我们需要了解Struts2的核心组件和工作流程。Struts2框架通过拦截器机制处理HTTP请求,这些拦截器可以执行一...

    struts2_登录

    4. **Interceptor(拦截器)**:Struts2的拦截器用于在Action执行前后进行额外的操作,如日志记录、权限检查等。对于登录功能,可能需要自定义拦截器来检查用户是否已经登录,未登录的话则重定向到登录页面。 5. **...

    企业员工信息系统

    通过自定义拦截器,可以在用户尝试访问受保护的资源前检查其是否已登录。如果未登录,可以重定向到登录页面。 退出系统功能则是确保用户在完成操作后安全退出,这通常涉及清除session中的用户信息,以防止其他用户...

    基于strusts2的ATM取款机模拟

    2. **Interceptor(拦截器)**:可以定义拦截器来处理通用的任务,如登录检查、权限验证等。 3. **Result配置**:定义Action执行后的跳转结果,可以是JSP页面、Freemarker模板或其他资源。 4. **数据访问**:通常...

    kms登录---S2SH框架

    6. **异常处理**:在S2SH框架中,可以使用Struts2的拦截器(Interceptor)来捕获和处理可能出现的异常,提供统一的错误页面或信息反馈给用户。 7. **前端界面**:虽然题目没有明确提及,但通常S2SH项目会配合JSP、...

    jsp+Struts2 +mybatis 注册 登录 入门demo

    2. **Struts2**:Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了开发过程,提供了强大的拦截器机制,用于处理请求、验证输入、事务管理等。在注册和登录场景中,Struts2将处理用户...

    基于Struts2的用户权限管理

    Struts2的拦截器(Interceptor)可以在此发挥作用,通过检查用户的角色和权限,拦截并转发到相应的页面或返回错误信息。 5. **角色授权**:总经理作为高级角色,可能有权限对其他角色进行授权,修改其权限范围。这...

Global site tag (gtag.js) - Google Analytics