spring AOP [包括对struts动作的拦截]

第一种:使用spring AOP 对action做日志管理,可以只拦截特定的action!
虽然Spring提供很多内置拦截器,但是我将向您展示如何创建自己的拦截器并把它应用于一个Struts动作。为了使用拦截器,您需要做三件事:

1、创建拦截器;
2、注册拦截器;
3、声明在何处拦截代码。

这看起来非常简单的几句话却非常强大。例如,在清单7中,我为Struts动作创建了一个日志记录拦截器。这个拦截器在每个方法调用之前打印一句话:

清单 7.一个简单的日志记录拦截器

package ca.nexcel.books.interceptors;
import org.springframework.aop.MethodBeforeAdvice;
import java.lang.reflect.Method;
public class LoggingInterceptor implements MethodBeforeAdvice {
public void before(Method method, Object[] objects, Object o) throws Throwable {
System.out.println("logging before!");
}
}


这个拦截器非常简单。before()方法在拦截点中每个方法之前运行。在本例中,它打印出一句话,其实它可以做您想做的任何事。下一步就是在Spring配置文件中注册这个拦截器,如清单8所示:

清单 8.在Spring配置文件中注册拦截器

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="bookService" class="ca.nexcel.books.business.BookServiceImpl"/>

<bean name="/searchSubmit"
class="ca.nexcel.books.actions.SearchSubmit">
<property name="bookService">
<ref bean="bookService"/>
</property>
</bean>

<!-- Interceptors -->
<bean name="logger"
class="ca.nexcel.books.interceptors.LoggingInterceptor"/> |(1)

<!-- AutoProxies -->
<bean name="loggingAutoProxy"
class="org.springframework.aop.framework.autoproxy.
BeanNameAutoProxyCreator"> |(2)
<property name="beanNames">
<value>/searchSubmit</valuesgt; |(3)
</property>
<property name="interceptorNames">
<list>
<value>logger</value> |(4)
</list>
</property>
</bean>

</beans>


您可能已经注意到了,清单8扩展了清单6中所示的应用程序以包含一个拦截器。具体细节如下:

◆在(1)处,我注册了这个拦截器。
◆在(2)处,我创建了一个bean名称自动代理,它描述如何应用拦截器。还有其他的方法定义拦截点,但是这种方法常见而简便。
◆在(3)处,我将Struts动作注册为将被拦截的bean。如果您想要拦截其他的Struts动作,则只需要在“beanNames”下面创建附加的<value>标记。
◆在(4)处,当拦截发生时,我执行了在(1)处创建的拦截器bean的名称。这里列出的所有拦截器都应用于“beanNames”。
  
就是这样。就像这个例子所展示的,将您的Struts动作置于Spring框架的控制之下,为处理您的Struts应用程序提供了一系列全新的选择。在本例中,使用动作委托可以轻松地利用Spring拦截器提高Struts应用程序中的日志记录能力。
第二种:使用Spring AOP对action做日志管理

该方法会对所有的action类进行拦截,不能指定具体的拦截类!
首先还是要写一个普通类,不过此类中的方法需要传入参数。 比如

view plain
package chen.hui.log

import org.aspectj.lang.JoinPoint;

public classs MyLog{

//在类里面写方法,方法名是可以任意的。此处我用标准的before和after来表示

//此处的JoinPoint类可以获取,action所有的相关配置信息和request等内置对象。

public void before(JoinPoint joinpoint){

joinpoint.getArgs();//此方法返回的是一个数组,数组中包括request以及ActionCofig等类对象

System.out.println("被拦截方法调用之前调用此方法,输出此语句");
}
public void after(JoinPoint joinpoint){

System.out.println("被拦截方法调用之后调用此方法,输出此语句");
}
}
其次我们在写一个action类作为被拦截类(Spring的AOP就是拦截这个类里面的方法)

view plain
package chen.hui.log

public class LoginAction{//此类中方法可以写任意多个。我只写一个
public void test(){
Sytem.out.println("测试类的test方法被调用");
}
}
最后进行配置文件的编写。在Spring的配置文件中我们需要进行几句话的配置

view plain
<bean id="testLog" class="chen.hui.log.MyLog"></bean> <!--将日志类注入到bean中。-->
<aop:config>
<aop:aspect id="b" ref="testLog"><!--调用日志类-->
<aop:pointcut id="log" expression="execution(* chen.hui.log.*.*(..))"/><!--配置在log包下所有的类在调用之前都会被拦截-->
<aop:before pointcut-ref="log" method="before"/><!--在log包下面所有的类的所有方法被调用之前都调用MyLog中的before方法-->
<aop:after pointcut-ref="log" method="after"/><!--在log包下面所有的类的所有方法被调用之前都调用MyLog中的after方法-->
</aop:aspect>
</aop:config>
特征模理论指导滤波天线设计的优势和方法 本文探讨了特征模理论在滤波天线设计中的应用优势和方法。特征模理论通过分析天线结构的本征模特性,突破了传统经验设计的局限,实现了辐射与滤波功能的一体化设计。文章重点阐述了如何利用模式显著性(MS)和模式加权系数(MWC)来指导辐射零点的产生,揭示了辐射零点形成的物理机制。通过特征模分析,设计师可以明确调控天线结构和馈电系统,优化滤波性能。这种方法为现代多频/宽带滤波天线设计提供了理论依据和实用工具,显著提升了设计效率和性能指标。 阅读详情

相关推荐

MOOS-ivp 实验三 MOOS简介(1)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例

weixin_44151170的博客 7434

Spring的AOP,Struts2的拦截器(Interceptor),以及springMVC的(interceptor)

参考外链:http://www.ibm.com/developerworks/cn/java/j-lo-springaopfilter/ 1.首先,spring的AOP作用范围很广,可以使用Aspectj的execution表达式自定以切面的位置。 比如下面的配置service方法执行日志: 1 <!-- 系统日志 --> 2 <bean id="log...

weixin_34160277的博客 154

Android真机调试——ADB调试(含华为手机无法找到设备)

本文以Huawei Nova7为例。

lianqi2003的博客 7865

使用spring的aop对Struts2的Action拦截后出现依赖注入为空问题

两种解决方案: 1、action类继承ActionSupport了后,出现依赖注入为空,要在applicationContext.xml配置中加入:<aop:aspectj-autoproxy proxy-target-class="true"/> 2、要么action类不要继承ActionSupport等类 proxy-target-class="true" 与proxy-ta...

weixin_30823227的博客 204

从Simulink仿真到DSP28335真机部署:PID闭环控制快速移植指南

本文详细介绍了如何将Simulink中的PID闭环控制算法快速移植到DSP28335嵌入式平台。通过模型与代码映射、浮点与定点数选择、定时器中断配置、物理输出实现以及调试技巧五个关键步骤,帮助工程师高效完成从仿真到真机部署的全过程,特别适合需要实现精确控制的嵌入式开发者。

weixin_42521843的博客 363

硬件压力测试工具使用方法

B, --bind host# 绑定到主机的多个地址中的一个。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。-c, --client host#如果Iperf运行在服务器模式,并且用-c参数指定一个主机,那么Iperf将只接受指定主机的连接。-C, --compatibility# 与低版本的Iperf使用时,可以使用兼容模式。-b, --bandwidth #[KM] UDP模式使用的带宽,单位bits/sec。

weixin_53303772的博客 8221

struts2 拦截器(AOP,面向切面编程)

1.自定义拦截器 TestAction.java package com.test.struts2.action; import com.opensymphony.xwork2.ActionSupport; public class TestAction extends ActionSupport { @Override public String execute(...

遗失的世界 1101

数仓建模—维度建模之维度表

首先要学会识别维度,维度是相对稳定的、可抽象具有共性的、固有的(天然的)描述度量或事实的上下文属性信息,失去维度信息的度量信息是没有意义的或者说是失去维度信息的事实表是没有意义的。其次要掌握维度表的设计原则和设计流程,从而更加科学的设计维度表,其实这些东西都是术,我们一直都说一句话大道至简,其实如果你掌握了精髓,抛开这些术也可以做到得心应手,这就像张无忌练太极剑一样,忘记了才能达到道的境界,也就是无我,如果做不到就记住这些原则加以应用从而达到术的境界。

2401_84052244的博客 4364

SpringAOP拦截struts2的action的一点心得

因为要搞细粒度的方法权限控制,spring的AOP今天算了把老夫彻底搞的无语了,因为项目中dao层存在了spring的transaction注解,老是报classnotfoundexception,网上找了一大堆资料,各种问题排查完了,发现毛用都没有,后来想着会不会是cglib的问题,于是去掉了强制cglib的配置声明,resin启动终于不报错了。 可是在进入action的时候,发现还是有问题,

猪都愤怒了 1345

HMC7044调试指南与FPGA开发

最后,我们介绍了在FPGA开发中使用HMC7044的几个常见应用场景,包括时钟分配、时钟同步、高精度时钟生成和时钟域交叉。根据您的应用需求,您可以选择不同的时钟分配方案,例如使用PLL生成特定频率的时钟信号,或者通过分频器生成较低频率的时钟信号。HMC7044可以提供精确的时钟同步功能,确保各个FPGA板之间的时钟信号保持一致,从而实现可靠的数据传输和协同操作。HMC7044可以实现时钟域之间的交叉,通过生成和分配不同频率的时钟信号,使得不同时钟域的模块能够协同工作。FPGA开发中的HMC7044应用。

CqpFsharp的博客 3619

基于PPT的三维光路结构示意图绘制实例演示-技术细节

基于PPT的三维光路结构示意图绘制实例演示-技术细节

简单光学 7480

为struts的action添加到SPRING的AOP日志拦截器

转载自:http://www.cnblogs.com/jackyrong/archive/2008/07/17/1245217.html  当struts将action托管给spring后,,有个优点是可以将spring的AOP拦截器用于struts的动作比如创建一个日志记录拦截器import org.springframework.aop.MethodBeforeAdvice;imp

wangwei9966的专栏 1256

Android 蓝牙——概述(一)

Profiles (蓝牙应用规范),它从应用场景的角度为蓝牙技术的使用制定了不同的规范。这也是和大众日常生活接触最多的一部分。蓝牙支持很多Profiles:MAP:(MessageAccessProfile),短信访问协议,允许设备间的信息交换,短信。使用场景:智能车载中同步短信等信息。HFP:(Hands-free Profile),电话免提协议,让蓝牙设备(如蓝牙耳机/车机)可以控制电话,如接听、挂断、拒接等。

小旭的专栏 3493

spring struts_使用Spring更好地处理Struts动作

控制倒置(IOC)设计模式已经产生嗡嗡声已经很长时间了,您肯定已经听说过。 如果您以任何能力使用过Spring框架,那么您已经了解了其工作原理。 在本文中,当我使用IOC模式的原理将Struts应用程序注入Spring框架时,您将直接了解IOC模式的功能。 将Struts应用程序集成到Spring框架中的优点是多方面的。 首先,Spring的显式设计旨在解决JEE的一些实际问题,例如复杂性...

cuyi7076的博客 215

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

(转帖)使用 Spring 更好地处理 Struts 动作三种整合 Struts 应用程序与 Spring 的方式...

为什么 Spring 这么了不起? Spring 的创立者 Rod Johnson 以一种批判的眼光看待 Java™ 企业软件开发,并且提议很多企业难题都能够通过战略地使用 IOC 模式(也称作依赖注入)来解决。当 Rod 和一个具有奉献精神的开放源码开发者团队将这个理论应用于实践时,结果就产生了 Spring 框架。简言之,Spring 是一个轻型的容器,利用它可以使用一个外部 XML 配...

zzg810314 223

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

整合 Struts 和 Spring

 Struts Recipes 的合著者 George Franciscus 将介绍另一个重大的 Struts 整合窍门 ?? 这次是将 Struts 应用程序导入 Spring 框架。请跟随 George,他将向您展示如何改变 Struts 动作,使得管理 Struts 动作就像管理 Spring beans 那样。结果是一个增强的 web 框架,这个框架可以方便地利用 Spring AOP 的

ycyheartfly的专栏 1133

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

spring_day07_SSH框架整合_注解方式

明确 注解整合仍然使用XML的环境,就是把xml的配置全部换成注解 spring的注解整合有两种方式,一种是用xml文件,一种是纯注解 hibernate注解整合是把实体类映射改为JPA注解映射 数据库 create database crm; /*创建客户表*/ CREATE TABLE `cst_customer` ( `cust_id` bigint...

Jesson_study 212

java框架一些常见面试题

1.Struts2和Struts的区别。 2.简单阐述IOC和AOP。 3.Hibernate有哪些查询方式,分别介绍一下。 4.简述MVC模式。 5.说说工厂和单例两种常用设计模式的目的和好处,及经典用例(工厂实现依赖注入,单例实现单数据库连接等)。 6.ibatis和Hiernate的优缺点比较。 7.如何实现国际化。 8.如何实现简单分页。 9.浅谈Hibernate的性能优

julingyu1990的专栏 428

JAVAEE考试简答题整理

J2EE考试简答题 1. 简述Servlet生命周期 Servlet生命周期(图解) (biancheng.net) 1) 初始化阶段 当用户第一次向 Servlet 容器发出 HTTP 请求要求访问某个 Servlet 时,Servlet 容器会在整个容器中搜索该 Servlet 对象,发现这个 Servlet 对象没有被实例化,于是创建这个 Servlet 对象,然后调用该对象的 init() 方法完成初始化。 当用户第二次访问这个 Servlet 时,Servlet 容器仍然在容器中搜索该 Servl

rglkt的博客 1646

java面试题

1.Struts2和Struts的区别。 2.简单阐述IOC和AOP。 3.Hibernate有哪些查询方式,分别介绍一下。 4.简述MVC模式。 5.说说工厂和单例两种常用设计模式的目的和好处,及经典用例(工厂实现依赖注入,单例实现单数据库连接等)。 6.ibatis和Hiernate的优缺点比较。 7.如何实现国际化。 8.如何实现简单分页。 9.浅谈Hibernate的性能优

qswboy的专栏 573

spring的AOP拦截器应用于Struts动作

通过将 Struts 动作委托给 Spring 框架而整合 Struts 和 Spring 的一个主要的优点是:您可以将 Spring 的 AOP 拦截器应用于您的 Struts 动作。通过将 Spring 拦截器应用于 Struts 动作,您可以用最小的代价处理横切关注点。          现在向大家介绍一下如果创建自己的拦截器并把它应用于Struts的动作。为了使用拦截器,需要做

agileclipse的专栏 1126

Spring集成struts(3)

3. 将动作管理委托给 Spring  一个更好的解决方法是将 Strut 动作管理委托给 Spring。您可以通过在 struts-config 动作映射中注册一个代理来实现。代理负责在 Spring 环境中查找 Struts 动作。由于动作在 Spring 的控制之下,所以它可以填充动作的 JavaBean 属性,并为应用诸如 Spring 的 AOP 拦截器之类的特性带来了可能。

eyejava的专栏 930

使用 Spring 更好地处理 Struts 动作

一、为什么 Spring 这么了不起? Spring 的创立者 Rod Johnson 以一种批判的眼光看待 Java? 企业软件开发,并且提议很多企业难题都能够通过战略地使用 IOC 模式(也称作依赖注入)来解决。当 Rod 和一个具有奉献精神的开放源码开发者团队将这个理论应用于实践时,结果就产生了 Spring 框架。简言之,Spring 是一个轻型的容器,利用它可以使用一个外部 XML 配置...

Java_supermanNO1的博客 247
上一篇: JAVA 正则表达式
下一篇: @Component,@Service,@Controller,@Repository 解說
programloverjack
博客等级 码龄17年 5粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值