- 浏览: 1379672 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (287)
- oracle (30)
- Java (73)
- MySQL (16)
- Myeclipse/eclipse (12)
- javascript (15)
- JSP/Servlet (7)
- maven (14)
- AJAX (2)
- JQuery (9)
- tomcat (8)
- spring (21)
- Linux (28)
- PHP (9)
- UI (1)
- 编程错误及处理 (38)
- 多线程 (18)
- hibernate (10)
- Web Service (3)
- struts2 (6)
- log4j (3)
- SVN (4)
- DWR (1)
- lucene (1)
- 正则表达式 (4)
- jstl (2)
- SSL (3)
- POI (1)
- 网络编程 (1)
- 算法 (2)
- xml (4)
- 加密解密 (1)
- IO (7)
- jetty (2)
- 存储过程 (1)
- SQL Server (1)
- MongoDB (1)
- mybatis (1)
- ETL (1)
- Zookeeper (1)
- Hadoop (5)
- Redis (1)
- spring cloud (1)
最新评论
-
ron.luo:
牛逼,正解!
maven设定项目编码 -
lichaoqun:
java.sql.SQLException: Can't call commit when autocommit=true -
Xujian0000abcd:
Thanks...
Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the clas -
renyuan2ni:
[i][b][u]引用[list]
[*][img][flas ...
Manual close is not allowed over a Spring managed SqlSession -
851228082:
宋建勇 写道851228082 写道<!-- 文件拷贝时 ...
maven设定项目编码
在java开发中日志的管理有很多种。我一般会使用过滤器,或者是Spring的拦截器进行日志的处理。如果是用过滤器比较简单,只要对所有的.do提交进行拦截,然后获取action的提交路径就可以获取对每个方法的调用。然后进行日志记录。使用过滤器的好处是可以自己选择性的对某一些方法进行过滤,记录日志。但是实现起来有点麻烦。
另外一种就是使用Spring的AOP了。这种方式实现起来非常简单,只要配置一下配置文件就可以了。可是这种方式会拦截下所有的对action的每个操作。使得效率比较低。不过想做详细日志这个方法还是非常好的。下面我就介绍一下使用Spring AOP进行日志记录的方式。
第一种。Spring AOP对普通类的拦截操作
首先我们要写一个普通类,此类作为日志记录类。 比如
package chen.hui.log
public classs MyLog{
//在类里面写方法,方法名诗可以任意的。此处我用标准的before和after来表示
public void before(){
System.out.println("被拦截方法调用之前调用此方法,输出此语句");
}
public void after(){
System.out.println("被拦截方法调用之后调用此方法,输出此语句");
}
}
其次我们在写一个类作为被拦截类(Spring的AOP就是拦截这个类里面的方法)
package chen.hui.log
public class Test{//此类中方法可以写任意多个。我只写一个
public void test(){
Sytem.out.println("测试类的test方法被调用");
}
}
最后进行配置文件的编写。在Spring的配置文件中我们需要进行几句话的配置
<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>
到此处整个程序完成,在MyLog类里面的before和after方法添加日志逻辑代码就可以完成日志的管理。以上是对普通类的管理,如果只想拦截某一个类。只要把倒数第二个 * 改成类名就可以了。
第二:使用Spring AOP对action做日志管理
如果是想拦截action对action做日志管理,基本和上面差不多,但是要注意。以下几点
首先还是要写一个普通类,不过此类中的方法需要传入参数。 比如
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就是拦截这个类里面的方法)
package chen.hui.log
public class LoginAction{//此类中方法可以写任意多个。我只写一个
public void test(){
Sytem.out.println("测试类的test方法被调用");
}
}
最后进行配置文件的编写。在Spring的配置文件中我们需要进行几句话的配置
<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>
除了参数外其他地方基本和普通类相似。
需要注意的是:普通类可以监控单一的类,而action在配置文件中只能到包名而不能到action的类名。不然会报错。就是说如果要记录日志就要记录所有的action而不能记录其中一个,这是我试了好久得出的结果。
引自:http://hi.baidu.com/wolf_childer/item/f0b5b0e664252cacc10d75d1
另外一种就是使用Spring的AOP了。这种方式实现起来非常简单,只要配置一下配置文件就可以了。可是这种方式会拦截下所有的对action的每个操作。使得效率比较低。不过想做详细日志这个方法还是非常好的。下面我就介绍一下使用Spring AOP进行日志记录的方式。
第一种。Spring AOP对普通类的拦截操作
首先我们要写一个普通类,此类作为日志记录类。 比如
package chen.hui.log
public classs MyLog{
//在类里面写方法,方法名诗可以任意的。此处我用标准的before和after来表示
public void before(){
System.out.println("被拦截方法调用之前调用此方法,输出此语句");
}
public void after(){
System.out.println("被拦截方法调用之后调用此方法,输出此语句");
}
}
其次我们在写一个类作为被拦截类(Spring的AOP就是拦截这个类里面的方法)
package chen.hui.log
public class Test{//此类中方法可以写任意多个。我只写一个
public void test(){
Sytem.out.println("测试类的test方法被调用");
}
}
最后进行配置文件的编写。在Spring的配置文件中我们需要进行几句话的配置
<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>
到此处整个程序完成,在MyLog类里面的before和after方法添加日志逻辑代码就可以完成日志的管理。以上是对普通类的管理,如果只想拦截某一个类。只要把倒数第二个 * 改成类名就可以了。
第二:使用Spring AOP对action做日志管理
如果是想拦截action对action做日志管理,基本和上面差不多,但是要注意。以下几点
首先还是要写一个普通类,不过此类中的方法需要传入参数。 比如
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就是拦截这个类里面的方法)
package chen.hui.log
public class LoginAction{//此类中方法可以写任意多个。我只写一个
public void test(){
Sytem.out.println("测试类的test方法被调用");
}
}
最后进行配置文件的编写。在Spring的配置文件中我们需要进行几句话的配置
<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>
除了参数外其他地方基本和普通类相似。
需要注意的是:普通类可以监控单一的类,而action在配置文件中只能到包名而不能到action的类名。不然会报错。就是说如果要记录日志就要记录所有的action而不能记录其中一个,这是我试了好久得出的结果。
引自:http://hi.baidu.com/wolf_childer/item/f0b5b0e664252cacc10d75d1
发表评论
-
Failed to introspect annotations: interface com.xxx
2016-07-16 17:22 3867在使用maven打包发布项目时发现在tomcat容器中正常启动 ... -
REST API Design备忘
2016-07-12 15:26 634GET /collection:返回资源对象的列表(数组) ... -
java.lang.NoSuchMethodError: org.springframework.expression.spel.SpelParserConfi
2015-07-30 09:41 9979错误信息: [WARNING] FAILED remoting ... -
spring aop未执行问题记录
2015-07-03 11:54 1436在类com.ipharmacare.plat.service. ... -
Spring AOP配置不起作用
2015-01-17 14:27 0[url=http://blog.csdn.net/mmm33 ... -
class org.springframework.scheduling.quartz.CronTriggerBean
2014-05-09 08:56 2899提示错误信息:java.lang.IncompatibleCl ... -
spring读取加密属性
2013-09-26 10:19 4333在开发和设计过程中,通常需要对一些配置数据进行加密,如数据库的 ... -
Failed to read schema document
2013-09-17 15:21 4886使用 Spring Security 构建一个 HTTP 基本 ... -
spring拦截器配置问题<mvc:annotation-driven/>
2013-09-09 11:10 14017原始配置如下:<mvc:annotation-drive ... -
spring整合DWR步骤简单说明
2013-04-26 14:21 1269一、导入dwr包【dwr.jar】 ... -
Spring中PropertyPlaceholderConfigurer的使用
2012-08-23 14:29 1806<context:property-placeholde ... -
spring AOP配置
2012-08-20 15:03 1884耗时监控 package cn.com.tcgroup.yun ... -
454 Authentication failed, please open smtp flag first!
2012-08-03 18:37 12069用spring发送邮件,使用的是QQ邮箱,出现以下错误信息: ... -
spring MVC疑问-项目示例
2012-06-18 13:30 0applicationContext.xml <?xm ... -
Spring配置项<context:annotation-config/>解释说明
2012-06-14 11:47 1590在基于主机方式配置Spri ... -
axis2+spring集成 服务端及客户端
2012-06-05 16:56 2351整个项目代码见附件songjy-axis2spring-1.0 ... -
spring mvc事务管理不起作用-备忘
2012-06-04 16:58 2234不起作用前代码: ComusersController.ja ... -
Spring MVC 直接访问静态文件(html、jpg、js...)
2012-06-04 14:11 5753首先在spring-servle.xml文件中加入如下代码: ... -
freemarker spring hibernate 整合示例项目
2012-05-30 12:25 0User.java package com.mvc.enti ... -
Spring MVC 文件上传 Maven
2012-05-28 18:16 8394FileUploadController.java pack ...
相关推荐
Flex-Spring 拦截器是 Spring 框架与 Adobe Flex 之间的集成关键部分,它允许在服务调用之间添加拦截逻辑,从而实现如事务管理、权限验证、日志记录等功能。这篇博客(https://rogerhunt.iteye.com/blog/608778)...
在这个例子中,Spring4用于管理对象的生命周期和依赖关系,同时,AOP用于实现代码的解耦,比如在登录操作中,可以使用AOP来实现登录日志记录或权限检查。 3. **MyBatis3**:MyBatis是一个持久层框架,它允许开发者...
在Spring MVC中,我们可以使用Spring的AOP支持来创建拦截器(Interceptor),这些拦截器可以在方法执行前和执行后执行自定义逻辑,如记录日志。在RESTful服务中,这种功能尤其有用,因为它可以帮助我们了解API的调用...
为了实现这个通用分页的功能,开发者可能创建了一个自定义的拦截器,该拦截器会捕获到请求中的分页参数,并在调用实际业务方法之前,对查询条件进行处理,使得查询结果自动按需分页。此外,可能还涉及到了Spring的...
在这个实际案例中,Struts2、Hibernate和Spring AOP被集成使用,构建了一个完整的Web应用。以下是关于这三个框架的详细知识: 1. **Struts2**: - **工作原理**:Struts2基于拦截器(Interceptor)模式,通过配置...
拦截器是基于AOP(面向切面编程)思想的组件,它可以理解为在Action调用前后插入的逻辑处理。在Struts2中,这些处理逻辑被封装在独立的类中,当请求到达Action之前,拦截器会按照预定义的顺序执行,执行完后再继续...
这样的拦截器允许我们对应用程序中的特定方法调用进行拦截,并在调用前后记录日志信息,以提升系统的可追踪性和调试能力。 首先,我们需要理解S2SH框架的核心组件。Spring是依赖注入(DI)和面向切面编程(AOP)的...
例如,在Webwork框架中,拦截器被称为动态拦截Action调用的对象。它不仅允许开发者定义在Action执行前后执行的代码,还可以在Action执行前阻止其执行。此外,拦截器还提供了一种提取Action中可重用部分的有效途径。 ...
在Action的执行过程中,这些拦截器会被依次调用,每个拦截器都有机会在Action方法执行前后进行干预。拦截器栈的顺序至关重要,因为它们会按照定义的顺序逐个执行,先定义的拦截器先执行,后定义的后执行。 3. **...
在J2EE框架如Struts2或Spring MVC中,拦截器是一种AOP(面向切面编程)概念的具体实现,用于拦截并处理特定的请求或方法调用。它们可以用来进行权限检查、日志记录、性能监控、事务管理等通用任务,从而提高代码的可...
在SSH2-AOP中,可能有一个或多个拦截器专门负责记录用户登录和登出的时间、IP地址等信息。 - **切点(Join Points)**:AOP中的切点是程序执行的特定位置,如方法调用。在登录和登出流程中,切点可能是登录和登出...
6. 在Action中调用Service层方法进行业务逻辑处理,Service层通过SessionFactory操作数据库。 7. 定义Struts2的结果类型,将模型数据传递给视图展示。 通过这样的集成,开发者可以专注于业务逻辑,而无需过多关注...
在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外的功能,如日志记录、事务管理、权限验证等。对于权限控制,拦截器可以在请求到达Action之前检查用户的登录状态...
这是一个Spring MVC或Struts2框架中的拦截器实现,它的主要任务是在方法调用前后插入日志记录。拦截器是AOP(面向切面编程)的一种表现形式,允许我们在不修改目标方法代码的情况下,对方法的执行进行增强。在`...
2. **面向切面编程**:AOP提供了一种将关注点分离的方法,允许开发者定义“切面”,这些切面可以在程序运行的关键点上执行,如方法调用前后的拦截、异常处理等。Spring的AOP支持通过代理模式实现。 3. **Spring MVC...
拦截器利用反射机制,可以在调用目标方法前后插入自定义的代码,实现如日志记录、事务管理、权限验证等功能。与过滤器不同,拦截器不依赖于Servlet容器,而是直接作用于应用程序的业务逻辑层,如Service或Action方法...
在这个架构中,“登陆拦截器”扮演着至关重要的角色,它负责在用户尝试访问特定资源前进行身份验证和授权。在本场景中,我们将深入探讨SSH框架中的拦截器机制以及如何实现一个简单的登录功能来连接数据库。 首先,...
通过Action配置,开发者可以定义请求到特定的方法,并且可以利用拦截器实现通用的功能,如权限检查、日志记录等。 **Spring与Struts 2整合** 整合Spring和Struts 2的主要目的是将Spring的依赖注入和管理能力引入到...
拦截器可以实现在Action执行前后进行一些操作,如权限检查、日志记录、数据校验等,从而避免在每个Action中重复编写相同的代码。Struts2提供了丰富的内置拦截器,同时也支持用户自定义拦截器。 #### 内置拦截器功能...