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

JSP
jsp计数器制作
用jsp编写文件上载
基于JSP的动态网站开发技术
JSP由浅入深(3)—— 通过表达式增加动态内容
JSP由浅入深(5)—— Scriptlets和HTML的混合
JSP由浅入深(1)—— 熟悉JSP服务器
JSP由浅入深(12)—— 表单编辑
JSP由浅入深(11)—— 标记库
JSP由浅入深(10)—— Beans and Forms处理
JSP由浅入深(9)—— JSP Sessions
JSP由浅入深(8)—— JSP Tags
JSP由浅入深(6)—— JSP声明
JSP由浅入深(4)—— Scriptlets
JSP由浅入深(2)—— 第一个JSP
JSP由浅入深(7)—— JSP Directives
JSP中的字符替换函数 str_replace() 实现!
把一张图片变形扭曲成各种不同的长宽
用JSP编写通用信息发布程序
Java Servlet及Cookie的使用
Apache+Servlet+Jsp环境设置(上)

JSP 中的 Java中基于Aspectwerkz的AOP


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 31 ::
收藏到网摘: 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的概念当然需要一定的时间,但肯定会得到回报,对于一个中等规模的项目,它会让你省下数星期时间,或者少写数千行重复的代码。