`
流浪鱼
  • 浏览: 1682308 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用struts2的Introspector做日志

 
阅读更多

记录日志这个在每个系统都会必须会用到的功能,实现方案也是非常多

我列出使用Struts2的拦截器拦截action的方式来实现业务日志的记录

自定义Interceptor的代码如下:

package com.test;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.zbxsoft.flow.web.FlowDeployeAction;
import com.zbxsoft.flow.web.FlowHisActivityAction;

/**
 * 日志拦截器
 * <p>
 * 通过继承Struts2的AbstractInterceptor实现日志
 * </p>
 * @author 流浪鱼
 */
public class LogInterceptor extends AbstractInterceptor {
	private String logName;
	private String logContent;

	@Override
	public String intercept(ActionInvocation ai) throws Exception {
		//取到session
		Map<String, Object> session = ai.getInvocationContext() .getSession();
		//访问的Action类
		Object action = ai.getAction();
		//访问Action的方法
		String method = ai.getProxy().getMethod();
		//ai.invoke();// 执行被拦截action
		//流程定义日志
		if (action instanceof FlowDeployeAction) {
			 if(method.equals("data")){
				 logName = "流程定义列表";
				 logContent = "显示流程定义列表";
				//logManager.saveLog(projectId,logName,logContent); 保存到数据库
			 }
			 
			 if(method.equals("delete")){
				 logName = "流程定义删除";
				 //ai.getStack().findValue("deploymentId")可以取到action里边的参数值
				 logContent = "删除ID为:"+ai.getStack().findValue("deploymentId")+"的流程定义";
			 }
			
		 }
		
		//流程活动历史日志
		if (action instanceof FlowHisActivityAction) {
			 if(method.equals("data")){
				 logName = "流程活动历史节点";
				 logContent = "显示流程活动节点历史数据";
				//logManager.saveLog(projectId,logName,logContent); 保存到数据库
			 }
			 
		 }
		
		System.out.println("===============================进入LogInterceptor Start===================");
		System.out.println("访问的Action为"+action+"      对应方法为:"+method);
		System.out.println(logName +"      "+logContent);
		System.out.println("===============================进入LogInterceptor End===================");
		if(session.get("user")!=null){
			return Action.INPUT;
		}else{
			return ai.invoke();// 执行被拦截action;
		}
		
	}

}

 

 

struts2的配置自定义的拦截器代码如下:

<interceptors>
			<!-- 自定义日志拦截器 -->
			<interceptor name="log" class="com.test.LogInterceptor" />


			<interceptor-stack name="crudStack">
				
				<interceptor-ref name="store">
					<param name="operationMode">AUTOMATIC</param>
				</interceptor-ref>
				<interceptor-ref name="paramsPrepareParamsStack" />
				<interceptor-ref name="log"/>


			</interceptor-stack>
		</interceptors>

		<default-interceptor-ref name="crudStack" />

分享到:
评论

相关推荐

    struts2+hibernate+spring

    根据提供的文件信息,我们可以推断出这是一篇关于整合Struts2、Hibernate和Spring框架的文章。下面将基于这些信息详细阐述这些技术的关键知识点。 ### Struts2+Hibernate+Spring框架整合 #### 一、概述 Struts2、...

    JAVA的内省机制(introspector)与反射机制(reflection).docx

    "JAVA的内省机制(introspector)与反射机制(reflection)" JAVA 的内省机制(introspector)和反射机制(reflection)是两个重要的概念,在 JAVA 编程中扮演着至关重要的角色。那么,什么是内省机制和反射机制?它们...

    Java 内省introspector相关原理代码解析

    在提供的代码示例中,`test01()` 函数展示了如何使用`Introspector.getBeanInfo(Student.class).getPropertyDescriptors();` 获取Student类的所有属性描述符。属性描述符(PropertyDescriptor)封装了JavaBean的...

    S2SH的配置

    - **`struts.objectFactory`**:指定Struts2使用的对象工厂为Spring。这意味着Struts2中的Action对象等将由Spring容器创建和管理。 #### 3.1.2 国际化编码 ```xml &lt;constant name="struts.i18n.encoding" value=...

    Neo4j GraphQL 库(graphql--neo4j-introspector-1.0.1.zip)

    Neo4j GraphQL 库(graphql--neo4j-introspector-1.0.1.zip) 源代码。 Neo4j GraphQL 库是一个高度灵活、低代码、开源的 JavaScript 库,可通过利用连接数据的力量为跨平台和移动应用程序实现快速 API 开发。 ...

    Neo4j GraphQL 库(graphql--neo4j-introspector-1.0.1.tar.gz)

    Neo4j GraphQL 库(graphql--neo4j-introspector-1.0.1.tar.gz) 源代码。 Neo4j GraphQL 库是一个高度灵活、低代码、开源的 JavaScript 库,可通过利用连接数据的力量为跨平台和移动应用程序实现快速 API 开发。 ...

    java-beans-lite:轻量级且快速的java.beans.Introspector实现

    由于它与AWT的紧密依赖,因此无法轻易将其从java.desktop模块中删除,从而导致任何使用java.beans包的第三方库都依赖于所有java.desktop类,从而在JVM安装中增加了12mb的额外开销,并且一些额外的内存使用情况。...

    Python库 | plone.introspector-0.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:plone.introspector-0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Spring源码学习十三:IntrospectorCleanupListener解析1

    但是,当Spring与其他框架(如Struts、Quartz)一起使用时,其他框架可能没有妥善处理`Introspector`的缓存清理,此时配置`IntrospectorCleanupListener`就显得尤为重要。 配置`IntrospectorCleanupListener`时,...

    backbone-introspector:骨干应用程序自省-生成应用程序组件的树状图(使用d3.js)

    骨干内省者骨干应用程序自省-生成应用程序组件的树状图(使用d3.js)要求骨干应用装有require.js的模块预习 还检查TodirMVC实现的示例目录安装在您的main.js中require ( ['backbone' ,'views/app' ,'routers/router'...

    php-introspector

    使用 Atom 包管理器,它可以在设置视图中找到,或者从命令行运行apm install php-introspector 。 您还需要安装软件包。 用法 目前,自动完成依赖于从远程(或本地)服务器获取建议。 它从文件中读取此服务器的位置...

    Java 内省(Introspector)深入理解

    2. `getReadMethod()`:获取用于读取属性值的方法,通常是`get`开头的方法。 3. `getWriteMethod()`:获取用于设置属性值的方法,通常是`set`开头的方法。 4. `hashCode()`:返回对象的哈希码,用于对象的唯一标识。...

    RDF Software Introspector-开源

    Introspector使处理源代码的编程工具(例如编译器)能够以标准且中立的方式进行通信,从而减少了意外的编程成本。 http://github.com/h4ck3rm1k3/

    beanutils-1.9.3-bin

    BeanUtils是由Apache公司开发的针对操作JavaBean的工具包。...但是由Apache公司开发的BeanUtils会更常用,同时,BeanUtils还需要配合第三方日志工具来使用,这里我们同样使用Apache公司的common logging

    各种对象转成JSON字符串.docx

    4. `commons-logging-1.1.jar` - Apache Commons Logging,一个日志抽象层,允许应用程序使用不同的日志实现。 5. `ezmorph-1.0.4.jar` - EzMorph库,用于对象转换。 6. `json-lib-2.2.2-jdk15.jar` - JSON库,提供...

    java-任何类型转换成json数据格式

    4. **日志记录**:在记录日志时,将数据结构化为JSON格式便于后续的日志分析和处理。 #### 六、总结 以上介绍了如何在Java中将各种类型的数据转换为JSON格式的方法和技术细节。这种转换对于现代Web开发来说至关...

    使用betwixt进行xml与java类之间的互转解析--代码

    本篇文章将深入探讨如何使用Betwixt库实现XML与Java类之间的互转解析。 首先,我们需要理解Betwixt的基本概念。Betwixt是一个XML绑定工具,它允许开发者通过注解或XML配置文件来映射XML结构与Java类的属性。这种...

    Eclipse OLE Introspector-开源

    Eclipse 平台的 COM 内省器和代码生成器

Global site tag (gtag.js) - Google Analytics