当前位置: 首页 > 图文教程 > 网络编程 > JSP > Java中基于Aspectwerkz的AOP

JSP
GET 方式提交的含有特殊字符的参数
java big5到gb2312的编码转换
java Lucene 中自定义排序的实现
hibernate中的增删改查实现代码
jsp 定制标签(Custom Tag)
jsp基础速成精华讲解
IE cache缓存 所带来的问题收藏
关于JSP的一点疑问小结
JSP 多条SQL语句同时执行的方法
jsp include文件时的一个乱码解决方法
在JSTL EL中处理java.util.Map,及嵌套List的情况
jsp 页面显示的一些用法
根据Hibernte的cfg文件生成sql文件
五种 JSP页面跳转方法详解
JSP 防范SQL注入攻击分析
JSP 连接MySQL配置与使用
java eclipse 启动参数
jsp 页面上图片分行输出小技巧
解决jsp开发中不支持EL问题
JSP 页面中使用FCKeditor控件(js用法)

JSP 中的 Java中基于Aspectwerkz的AOP


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 59 ::
收藏到网摘: n/a

  ⑸ 在这里我们声明要使用的advice是persist。

  现在我们知道了如何映射point-cut与advice创建出aspect,下面来看看一个提供advice的类的实例。在映射文件中,我们注册了一个example.PersistenceAdvice类型的advice,下面是该类型的源代码:

  package example;

import javax.servlet.http.*;
import org.codehaus.aspectwerkz.advice.*;
import org.codehaus.aspectwerkz.joinpoint.*;

public class PersistenceAdvice extends AroundAdvice {
 public PersistenceAdvice() {
  super();
 }
 public Object execute(final JoinPoint joinPoint)
 throws Throwable {
  MethodJoinPoint jp =(MethodJoinPoint) joinPoint;
  final Object result = joinPoint.proceed();
  Object[] parameters = jp.getParameters();
  if (parameters[0] instanceof HttpServletRequest) {
   HttpServletRequest request =(HttpServletRequest) parameters[0];
   if (request.getAttribute("person") != null) {
    Person contact =(Person) request.getAttribute("person");
    ContactManager persistent = new ContactManager();
    String fileName =(request.getRealPath("/")+"contacts.txt");
    persistent.save(contact, fileName);
   }
  }
  return result;
 }
}


  execute()方法的第一行很容易理解,就是尽量把它定型成最具体的类型,第二行或许是最重要的:因为我们想要运行该方法并检查结果,所以必须调用proceed()。在下一部份,我们捕获HttpServletRequest,提取由Servlet放入的对象(记住,此时doGet()方法己运行结束)。

  最后,我们创建一个名称为ContactManager的类,它的功能是把Person的数据保存到一个文本文件。实际上,要把数据保存到XML文件、数据库或其它持久化存储机制也很方便。

  这里需要掌握的一点是,在设计应用或建立原型的阶段,Servlet并不知道未来会发生什么变化,第二阶段的功能可以随时加入,正因为如此,所以我们说应用程序能够在发展过程中学习新的能力,以后要添加新的功能非常方便。

  【结束语】 我们在前面的例子中试验了一个简单的应用,将它部署到Tomcat,并用浏览器运行和测试它的功能。虽然这个应用本身并无任何实际用途,但它示范和证实了一些非常有用的概念。想象一下,你将可以快速地建立原型,完成后再引入安全、日志、持久化、缓冲之类的Cross-cutting concern。不管原始应用的规模有多大,你将能够在十分钟之内轻松地为整个应用加入日志功能!

  希望你能够超越本文的简单例子,去看看如何在自己的项目中采用AOP技术。熟悉AOP的概念当然需要一定的时间,但肯定会得到回报,对于一个中等规模的项目,它会让你省下数星期时间,或者少写数千行重复的代码。