`
Acaleph
  • 浏览: 30988 次
  • 性别: Icon_minigender_1
  • 来自: 广东惠州
社区版块
存档分类
最新评论

简单介绍利用Struts2 Interceptor处理实体类的公共属性

阅读更多

应用环境:在实际应用中,我们的业务实体类往往是通过继承一个基类,而这个基类包含了业务实体类的公共属性,比如创建者:creator,帐套:account,创建时间:createTime等等。下面,我们用struts2 interceptor来实现对公共属性的填充。

struts2 version:2.1.6 GA

1 Struts2 interceptor 实现:

-------------------------------------------------------------------------------------------------------

package com.abcdef.component.struts2;

import java.util.Map;

import com.abcdef.core.entity.PrimaryEntity;
import com.abcdef.system.entity.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

@SuppressWarnings("unchecked")
public class PrimaryEntityInterceptor extends MethodFilterInterceptor {
    private static final long serialVersionUID = 7224237874245817556L;
    private static final String EASY_LOCK = "lock";

    @Override
    protected String doIntercept(ActionInvocation ai) throws Exception {
        Map session = ai.getInvocationContext().getSession();
        if ("login".equals(ai.getProxy().getActionName())) {
            return ai.invoke();
        }
        User user = (User) session
                .get(com.easybea.core.util.Global.SESSION_ID_KEY_IN_COOKIE);
        if (user != null) {
            if (ai.getAction() instanceof ModelDriven) {
                ModelDriven action = (ModelDriven) ai.getAction();
                if (action.getModel() instanceof PrimaryEntity) {
                    PrimaryEntity T = (PrimaryEntity) action.getModel();
                    if ("1".equals(T.getLogicLock()))
                        return EASY_LOCK;
                    if (T.getAccount() == null || "".equals(T.getAccount())) {
                        T.setAccount(user.getAccount());
                        T.setCreator(user.getUserLogin());
                    } else {
                        T.setLastUpdate(user.getUserLogin());
                    }
                    //T.setLastLoginIp(user.getLastLoginIp());
                }
            }
            return ai.invoke();
        } else {
            return Action.LOGIN;
        }

    }
}

-------------------------------------------------------------------------------------------------------

2 在struts.xml中配置interceptor

-------------------------------------------------------------------------------------------------------

....

<interceptor name="primaryEntityInterceptor"
                class="com.abcdef.component.struts2.PrimaryEntityInterceptor" />

....

<interceptor-stack name="easybeaStack">
                <interceptor-ref name="paramsPrepareParamsStack" />
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="primaryEntityInterceptor">
                    <param name="includeMethods">save</param>
                    <param name="excludeMethods">
                        input,list,lock,unlock
                    </param>
                </interceptor-ref>
</interceptor-stack>

-------------------------------------------------------------------------------------------------------

3 一定不要忘记实现 <interceptor-ref name="paramsPrepareParamsStack" />,否则不能工作。

分享到:
评论

相关推荐

    Struts2自动构建

    自动构建在这个上下文中通常指的是利用自动化工具或脚本来快速生成项目的基本结构,包括实体类、数据访问接口以及相关的配置文件。在描述中提到的"sql创建实体类和XXMapper.xml文件",这可能指的是使用数据库逆向...

    struts2整合hibernate的网上银行模拟项目

    总之,"struts2整合hibernate的网上银行模拟项目"是一个实践性的学习项目,通过它,开发者可以了解如何在实际场景中应用Struts2和Hibernate,以及如何构建一个简单的网上银行系统。这个项目不仅涵盖了基础的MVC架构...

    struts2+jdbc+jsp增删改查

    在本项目"struts2+jdbc+jsp增删改查"中,开发者使用了Struts2来处理用户请求,通过JDBC(Java Database Connectivity)进行数据库操作,而JSP(JavaServer Pages)则作为视图层,显示数据。这个项目的核心在于实现对...

    struts2简单登录

    本项目"struts2简单登录"是基于Struts2框架实现的一个基础登录系统,它采用DAO(数据访问对象)模式来处理数据持久层操作。 在Struts2中,核心概念包括Action、Result和Interceptor。Action是业务逻辑的载体,它...

    struts2讲义-详解

    学习Struts2时,可以通过创建一个简单的登录注册系统来实践,涉及Action的编写、Interceptor的使用、JSP视图的渲染等,以加深对框架的理解。 总之,Struts2作为一款成熟的Java Web框架,其强大而灵活的设计使得...

    Struts2+Spring+Hibernate集成开发环境的配置小例子

    Struts2的核心组件包括Action、Result、Interceptor等,其中Action负责处理请求,Result负责呈现结果,Interceptor则提供了拦截请求和响应的能力,用于实现如日志记录、权限验证等功能。 **Spring** 是一个全面的...

    Hibernate与struts2结合使用的demo

    Struts2的核心组件包括Action(业务逻辑处理)、Result(展示结果)、Interceptor(拦截器)和配置文件(struts.xml)。开发者可以通过定义Action类来实现业务逻辑,然后通过配置Action和Result来定义请求和响应的...

    Struts2最佳实践之一-在复杂实体对象中,如何将页面参数转换为实体对象

    Struts2作为一款流行的Java Web框架,其在处理表单提交和实体对象绑定方面提供了强大的功能。本篇文章将深入探讨如何在Struts2中实现从复杂实体对象到页面参数的有效转换,以提升开发效率和代码的可维护性。在实际...

    大三学习struts2后纯struts2做的通讯录

    这需要掌握SQL语句、JDBC连接以及实体类的设计。 9. **安全考虑**:在实际项目中,还需要关注安全性问题,如防止XSS、CSRF攻击,使用Struts2的安全插件进行防御。 10. **测试**:为了确保代码的正确性和稳定性,...

    struts2+hibernate4整合(简单登陆页面)

    - **Interceptor(拦截器)**:拦截器是Struts2中强大的功能,可以实现如权限检查、日志记录等功能。 2. **Hibernate4基础**: - **Entity类**:映射数据库表,包含对应字段的属性和getter/setter方法。 - **...

    基于struts2框架商品版本管理系统

    在这个"基于Struts2框架的商品版本管理系统"中,我们可以看到如何利用Struts2的核心功能来实现对不同类型商品信息的有效管理。 首先,系统的核心是控制器层,Struts2通过Action类实现这一层。每个Action类对应一个...

    简单的实现Web登录(struts2+Hibernate)

    总之,这个项目提供了一个基础的Web登录系统的实例,它展示了如何利用Struts2处理用户请求和控制流程,以及如何通过Hibernate与数据库进行交互。对于初学者,这是一个很好的起点,可以深入理解这两个框架的工作原理...

    Struts2+hibernate实现登陆和增删改

    此外,Struts2还有Interceptor(拦截器)机制,可以实现诸如权限验证、日志记录等功能。 2. **Hibernate**:Hibernate提供了一种映射机制,将Java类和数据库表关联起来,使得可以通过操作对象来完成数据库的操作。...

    struts2练手项目

    在这里,Pet实体类可能包含宠物的属性(如id、name、breed等),以及getter和setter方法。实体类是业务逻辑层和数据访问层之间的桥梁。 8. **拦截器**: Struts2的拦截器能增强Action的处理能力,例如,登录验证...

    struts2 论坛

    在这个“struts2 论坛”项目中,我们看到的是一个使用Struts2.x版本实现的简单论坛平台,它涵盖了用户的基本交互功能,如注册、登录以及发帖和回帖。 首先,让我们深入了解Struts2框架的核心概念和组成部分: 1. *...

    struts2+hibernate整合增删改查加注册登录Demo包含数据库自动建表语句

    2. **实体类和映射文件**:为了使用Hibernate,你需要创建与数据库表对应的实体类,并编写相应的hbm.xml文件进行映射。这些类通常包含属性(对应数据库字段)和getter/setter方法。 3. **数据库自动建表语句**:在...

    Starting Struts 2

    Struts 2的核心组件包括Action、Result、Interceptor等,它们协同工作以处理用户请求并呈现响应。 二、Action与ActionMapping Action是业务逻辑的载体,它是处理用户请求的实体。开发者定义一个Action类,该类包含...

    基于struts2的餐饮收费系统

    系统设计中,开发者利用Struts2的Action类来定义用户请求的处理逻辑,每个Action对应一个特定的功能,如添加订单、查询账单等。同时,通过配置Struts2的配置文件(struts.xml),可以灵活地定义URL映射,使得请求...

    Struts2源码和标签使用和配置

    在Struts2中,通常实体类对应数据库中的表,用于封装业务对象。EntityStore可能涉及数据访问层的设计,如Hibernate或MyBatis的集成,用于CRUD(创建、读取、更新、删除)操作。 总的来说,这个教程应该会涵盖Struts...

    Struts2学习案例(拦截器)

    在案例的文件名"struts2Study"中,我们可以推测这可能是一个包含了整个Struts2应用的源码结构,包括Struts2的配置文件(struts.xml)、Action类、DAO层的实现以及可能的JPA实体类和数据库配置等。这些文件将帮助我们...

Global site tag (gtag.js) - Google Analytics