`
SIHAIloveYAN
  • 浏览: 119925 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

struts实战--登陆拦截器

 
阅读更多
登陆校验拦截器

一、概述

功能:用户只有登录成功后,才可以进行操作.



二、实现

1).创建一个类,实现Interceptor接口

1、判断用户user是否为空

2、如果为空,则设置哪些方法可以不用登陆就可以访问

package com.sihai.user.web.interceptor;

import com.sihai.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**
 * 登陆校验拦截器
 * 
 * 
 * 
 */
public class LoginInterceptor extends AbstractInterceptor {

	private String excludeMethods;

	@Override
	public String intercept(ActionInvocation actionInvocation) throws Exception {
		// 判断session中是否含有 user对象
		if (ServletActionContext.getRequest().getSession().getAttribute("user") == null) {
			// 未登陆 ---- 判断是否配置放行
			if (excludeMethods != null) {
				String[] methods = excludeMethods.split(",");
				// 判断methods(放行数组) 是否包含当前 访问
				String currentMethod = ActionContext.getContext().getName(); // user_login
				for (String method : methods) {
					if (method.equals(currentMethod)) {
						// 当前method 被配置放行
						return actionInvocation.invoke();
					}
				}
			}

			// 设置错误信息,ActionSupport提供方法
			ActionSupport action = (ActionSupport) actionInvocation.getAction();
			action.addActionError(action.getText("nologin"));
			return "login";// 登陆视图
		} else {
			// 已经登陆
			return actionInvocation.invoke();
		}
	}

	public void setExcludeMethods(String excludeMethods) {
		this.excludeMethods = excludeMethods;
	}

}




2).在struts.xml文件注册

注册拦截器

<interceptors>
			<!-- 注册 -->
			<interceptor name="login" class="com.sihai.user.web.interceptor.LoginInterceptor"></interceptor>
			<interceptor name="myexception" class="com.sihai.user.web.interceptor.MyExceptionInterceptor"></interceptor>
			<interceptor-stack name="myStack">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="login"></interceptor-ref>
				<interceptor-ref name="myexception"></interceptor-ref>
			</interceptor-stack>
		</interceptors>

使用拦截器

添加参数设置放行方法

<!-- 配置拦截器参数 -->
			<interceptor-ref name="myStack">
				<!-- 向拦截器 传递参数 ,多个参数 用, 分隔-->
				<param name="login.excludeMethods">user_login</param>
			</interceptor-ref>



分享到:
评论

相关推荐

    struts2--4.拦截器

    在Struts2中,拦截器扮演着核心角色,极大地增强了框架的功能和灵活性。本文将深入探讨Struts2中的拦截器,以及如何使用它们来优化应用的性能和功能。 ### 1. 拦截器的概念 拦截器是Struts2框架的一个关键特性,它...

    spring-mybatis-struts2-master ——demo

    3. 配置Struts2:配置struts.xml,定义Action及其结果,设置拦截器栈。 4. 配置MyBatis:创建mybatis-config.xml,定义数据源、事务工厂,以及Mapper接口和XML映射文件的路径。 5. 创建实体类、Mapper接口和XML映射...

    struts-2.3.14-pro

    对于开发者来说,熟悉Struts 2.3.14-Pro意味着要掌握Action类、配置文件(struts.xml)、拦截器、结果类型、动态方法调用等关键概念。此外,理解OGNL的使用和安全注意事项也是必不可少的。 7. **实战应用**: 在...

    struts2拦截器和验证框架(适合初学者-经藏版)

    ### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并在此基础上进行了很多改进,使得开发更加灵活高效。Struts2的核心是拦截器...

    starting-struts2-chinese.rar

    3. **Interceptor(拦截器)**:Struts2的拦截器机制允许开发者在Action调用前后插入自定义逻辑,如权限检查、日志记录等。常见的拦截器有Params拦截器(处理参数绑定),Validation拦截器(进行字段验证),以及...

    struts-2.0.14-all.zip

    5. **拦截器(Interceptors)**:Struts 2 的拦截器是实现AOP(面向切面编程)的关键组件,它们可以添加额外的功能,如日志记录、权限检查、事务管理等,无需修改Action代码。 6. **安全问题**:Struts 2.0.14 版本...

    Struts---------教程.rar

    1. **拦截器**:Struts2使用拦截器链来处理请求,拦截器可以实现AOP(面向切面编程)功能,如日志、事务管理等。 2. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为表达式语言,简化了模型数据...

    struts2-网络通讯录

    Struts2的主要优势在于其灵活的拦截器模型,能够方便地扩展和定制应用程序的行为。 2. **MVC模式**: MVC模式是软件设计中的经典模式,用于分离业务逻辑、数据和用户界面。在这个项目中,Struts2扮演了控制器的...

    struts2 拦截器实例

    3. **配置拦截器**:拦截器可以通过Struts2配置文件或注解进行配置,指定在哪些Action上使用哪些拦截器。 ### 二、单个Action配置拦截器实例 1. **创建拦截器**:首先,我们需要创建一个实现了`Interceptor`接口的...

    struts2-upfile

    Struts2的核心包括Action、Result、Interceptor等组件,它通过拦截器链来处理请求并执行业务逻辑。 2. **文件上传**:在Web应用中,文件上传是指允许用户从他们的本地计算机选择一个或多个文件,并将其发送到服务器...

    struts2-2.3.15.3-jar及mode

    Javassist是一个处理Java字节码的库,Struts2使用它来实现运行时的类增强,例如添加拦截器,使得Struts2可以无侵入地增强Action类。 6. **Commons IO库(commons-io-2.0.1.jar)** Apache Commons IO库提供了一系列...

    starting-struts2-chinese

    - **内置拦截器**:Struts2提供了一系列内置的拦截器,如ParametersInterceptor、ValidationInterceptor等。 - **自定义拦截器**:开发者也可以根据需求编写自定义的拦截器。 ##### 3.3 值栈与OGNL - **值栈**:...

    struts2-i18n

    通过结合使用Struts2的拦截器(interceptors)和自定义标签,可以构建出强大的国际化功能,满足各种复杂需求。 总之,Struts2-i18n为开发者提供了便捷的手段,帮助他们构建全球化Web应用。通过合理的资源文件管理和...

    Struts2的拦截器的使用详解

    1. 拦截器栈:Struts2中的拦截器不是单独工作的,而是以栈的形式存在,称为拦截器栈。每个拦截器都有一个进入方法(invoke)和一个退出方法,当请求到达时,会按照栈的顺序逐个调用进入方法,直到到达目标Action;...

    struts2-freemarker

    2. **配置文件**:`struts.xml`是Struts2的核心配置文件,用于定义Action、Result和拦截器链。 3. **Action类**:Action类是业务逻辑的载体,处理用户请求并返回结果。 4. **结果类型**:结果类型定义了Action执行后...

    struts2.2.3-hibernate3.3.1-spring3.1.zip jar 包

    Struts2.2.3 版本是该框架的一个稳定版本,包含了许多改进和新特性,例如更丰富的拦截器、插件支持以及对Ajax的更好集成。 **Hibernate3.3.1** 是一个流行的Java对象关系映射(ORM)框架,它简化了数据库操作,使得...

    Struts2的拦截器的小例子程序

    ### Struts2拦截器原理与实战案例解析 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的重要工具之一,其核心优势在于强大的MVC架构支持和丰富的扩展性。其中,拦截器(Interceptor)是Struts2框架的...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_9_拦截器 共32页.pptx

    ### Java Struts2 拦截器知识点解析 #### 一、Struts2拦截器概述 **知识点1:拦截器的概念** - **定义**: 拦截器(Interceptor)是Struts2框架的一个核心特性。它负责在Action执行前后进行一系列操作。 - **功能*...

    第3章【源码】java web整合开发实战--基于struts 2+hibernate+spring 贾蓓 镇明敏 杜磊

    3. **拦截器的应用**:学习如何自定义Struts 2的拦截器,以实现日志记录、权限验证等功能。 4. **数据库连接池的配置**:如使用C3P0或DBCP配置数据库连接池,优化数据库操作性能。 5. **JSP和标签库的使用**:掌握...

    struts-2.3.4-all.zip

    Struts2的配置通常在struts.xml文件中进行,包括Action的配置、结果类型、拦截器栈等。此外,它还支持动态方法调用,即根据传入的参数来决定执行哪个Action方法,增强了灵活性。 5. **插件机制**: Struts2的可...

Global site tag (gtag.js) - Google Analytics