关于J2EE分层及框架的比喻
liujunsong 写道
打个比方.
现在的j2ee开发,就好象对面来了一个人.
最外面穿着一件风衣(HTML)
风衣里面穿着西装(Struts)
西装里面穿着马甲(Spring)
马甲里面穿着衬衫(Hibernate)
衬衫的里面才是真实的人(数据库)
全部衣服都是采用棉布做成的(Java)
每件衣服上都可能有其他配件(第3方库)
各件衣服之间需要配套使用..............
Tags: java  javajsp  java基础  Java容器  Spring  struts标签  struts2  Struts Menu  struts  Hibernate  框架  模型  模式  
Spring framework实现定时器之Quartz

       Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。此外,Quartz提供了调度运行环境的持久化机制,可以保存并恢复调度 现场,即使系统因故障关闭,任务调度现场数据并不会丢失。此外,Quartz还提供了组件式的侦听器、各种插件、线程池等功能。

      1.准备工作:

         (1) 下载JAR 包http://www.opensymphony.com/quartz/download.action

         (2)解压缩并把 quartz-x.x.x.jar 放在项目文件夹内,或者把文件放在项目的类路径中

      2.写一个启动定时业务的类

 3.新建schedulingContext-quartz.xml文件,在schedulingContext-quartz.xml描述用户的定时器

4.在Web.xml中申明.......也可以在普通的Main函数中来测试,如下:

关于cron表达式(来自网络):
    Cron 表达式包括以下 7 个字段:

  • 小时
  • 月内日期
  • 周内日期
  • 年(可选字段)

    特殊字符

    Cron 触发器利用一系列特殊字符,如下所示:

  • 反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
  • 问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
  • 在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
  • 井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
  • 星号(*)字符是通配字符,表示该字段可以接受任何可能的值。

    字段 允许值 允许的特殊字符...............................


Tags: java  Spring  定时器  Quartz  
经典老贴:使用AppFuse进行开发的总结,及使用的相关技术介绍

AppFuse是一个集成了当前最流行的Web应用框架的一个更高层次的Web开发框架,
也可以说是一个Web开发基础平台,它与它所集成的各种框架相比,它提供了一部分所有Web系统开发过程中都需要开发的一些功能,如 :
 

11:登陆、
22:用户密码加密
33:用户管理
44:根据不同的用户可以展现不同的菜单


1a:可以自动生成40%-60%左右的代码
2b:自带了默认的一些在CSS中设定的样式,使用这些样式能很快的改变整个系统的外观
3c:有自动化测试的功能

 



它最大的价值就是为我们提供了一个Web开发的新的方式和思路,尽管这些技术在国外都已进很流行了,但在国内能够将



 1Hibernate
 2Struts
 3Spring
 4DBUnit
 5Ant
 6Log4J
 7Struts Menu
 8Xdoclet
 9SiteMesh
10Velocity
11JUnit
12JSTL
13WebWork

这些技术集成到一个框架中的还不多见,所.....................


Tags: AppFuse  java  Hibernate  struts  Spring  DBUnit  Ant  log4j  Struts Menu  Xdoclet  SiteMesh  velocity  JUnit  JSTL  WebWork  
Spring 2.X 中AOP的使用浅析
Spring 2.X 中AOP的使用浅析  和Spring1.X相比,Spring2.X使用AspectJ的语法来声明AOP,这使得它更“标准”,更灵活了。还是那句话,如果你不了解AspectJ并且打算使用Spring2.X的AspectJ式AOP,那就学学AspectJ吧,这方面的书还是很多了。Spring2.X下的切面有两种实现方式,一种是以Java文件定义切面(其只是普通的Java类),然后在配置文件中声明定义的切面;另一种是在Java类中引入和AOP相关的元数据(注释)。  先介绍第一种配置方式。需要指出的是,Spring2.X的beans名称空间和Spring1.X有所不同,它采用了Schema而不是DTD(也可采用DTD方式,具体的请参考文档)。还是引入毫无意义的日志切面,定义的切面类LogingAspect 如下:第二种实现 AOP 的方式和第一种相比,只是在 LogingAspect 中加入了注释,而省去了配置文件中和 LogingAspect 相关的配置。重新编写的 LogingAspect 如下:
Tags: Spring  aop  浅析  
Spring AOP 进行统一日志处理代码
Spring AOP 进行统一日志处理代码 spring配置文件: Xml代码
Tags: Spring  aop  日志  
基于@AspectJ配置Spring AOP之一
在低版本Spring中定义一个切面是比较麻烦的,需要实现特定的接口,并进行一些较为复杂的配置,低版本Spring AOP的配置是被批评最多的地方。Spring听取这方面的批评声音,并下决心彻底改变这一现状。在Spring2.0中,Spring AOP已经焕然一新,你可以使用@AspectJ注解非常容易的定义一个切面,不需要实现任何的接口。 Spring2.0采用@AspectJ注解对POJO进行标注,从而定义一个包含切点信息和增强横切逻辑的切面,Spring 2.0可以将这个切面织入到匹配的目标Bean中。@AspectJ注解使用AspectJ切点表达式语法进行切点定义,可以通过切点函数、运算符、通配符等高级功能进行切点定义,拥有强大的连接点描述能力。在你学习基于@AspectJ的切面技术后,恐怕你就再也没有兴趣使用低版本Spring AOP的实现技术了,毕竟马落桃花马前雪,两者的易用性、便捷性是不可同日而语的。 着手使用@AspectJ 我们知道在低版本的Spring AOP中,你必须使用Pointcut和Advice接口描述切点和增强,并用Advisor组合两者描述一个切面,@AspectJ则采用JDK 5.0的注解技术描述切点和增强类型,而增强的横切逻辑就在被标注的POJO中定义。 使用前的准备
Tags: aspectj  Spring  aop  
Spring 2.0的新特性之@AspectJ
本文结合Spring 2.0开发参考手册来讲解。对于手册中有的东西我就不说了,其实这样的话也剩下不了多少我能说的了,我只是谈一下我在看手册的时候比较费劲的地方和我对这些地方的理解。 首先@AspectJ并不是AspectJ,Spring AOP 框架支持@AspectJ只是说Spring支持用AspectJ注解的方式配置AOP。当然了,Spring 2.0也支持纯的AspectJ的应用,但这个不在本文的范围之内。 Spring 2.0开发参考手册的<6.2.>部分的内容是关于@AspectJ的。你可以看Springframework.org上的英文文档,这样你可以看到最最新的东西。蛙眼上也有中文版的,也是最新的,当然会比最最新的旧一点点点循环。虽然翻译过来的手册和英文原版的差别很小,但这并不意味着没有差别。像原版中的有绿叶标示的部分,翻译过来的就没有。虽然绿叶标示的部分你可能看的不大懂(有些东西我就看不明白555),不过你一旦看懂可能就会获益匪浅,而且原版的味道最正。所以如果你的英语水平够的话我还是推荐大家看原版的手册。好了不废话了。下面开门见山,步入正题。 要启用@AspectJ支持的话要在Spring配置文件中加入下面一句
Tags: Spring  aspectj  aop  
AspectJ如何实现AOP
使用AspectJ,我们不用对原有的代码做任何修改,就可以为代码提供不同的Aspect(方面)--比如,认证,事务等。我们只需要提供两个不同的Aspect--认证Aspect和事务Aspect。我们来看看,AspectJ编译器为我们做了什么事情。1. 首先,AspectJ从文件列表里取出所有的文件名,然后读取这些文件,进行分析。2. AspectJ发现一些文件含有aspect的定义,在这个例子里,就是AuthAspect和TransactionAspect的定义;这些aspect就是代码生成规则。3. AspectJ根据这些aspect代码生成规则,修改添加你的源代码。在这个例子里,就是修改添加Bank文件。4. AspectJ读取AuthAspect的定义,发现了一个pointcut--bankMethods();这个pointcut的定义是execution(* Bank.deposit(…)) || execution(* Bank. withdraw (…)),表示所有对Bank类的deposit和withdraw方法的执行点。5. AspectJ继续读取AuthAspect的定义,发现了一个around(),这在AspectJ中叫做Advice, Advice允许你在某个类的方法的调用之前或调用之后,加入另外的代码。所示代码中的around()的" // 验证account是否为合法用户"部分,就是要加入的代码。这段代码要加在哪里呢?around()后面跟了一个pointcut--bankMethods()。根据这个pointcut,AspectJ会把这段代码加入到Bank.deposit和Bank.withdraw两个方法的执行之前。6. AspectJ读取TransactionAspect的定义,象第(4)步一样,发现了发现了一个pointcut--bankMethods()。AspectJ继续读取AuthAspect的定义,发现了一个around()。这次AspectJ把"Begin Transaction"和"End Transaction"两段代码加在Bank.deposit和Bank. withdraw两个方法的执行前后。
Tags: aspectj  aop  Spring  IOC  
用Spring AOP实现开发中松散耦合
AOP(Aspected Oriented Programming)是一种新兴的编程技术。它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务、安全、日志等横切关注。当未来系统变得越来越复杂,横切关注点就成为一个打问题的时候,AOP就可以很轻松的解决横切关注点这个问题,使得AOP编程成为。Spring 是基于J2EE的轻量级开源开发框架,其中Spring AOP组件实现了面向方面编程。
AOP 概述 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。 面向对象将应用程序分解成各个层次的对象,而AOP将程序分解成各个方面或者说关注点 。这使得可以模块化诸如事务管理等这些横切多个对象的关注点。
Tags: Spring  aop  松散  耦合  
Java Reflection (JAVA反射)
Java Reflection (JAVA反射) Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。JavaBean 是 reflection 的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。1. 一个简单的例子考虑下面这个简单的例子,让我们看看 reflection 是如何工作的
Tags: Reflection  反射  Spring  java  
Spring Aop拦截器使用
1.自定义被拦截的接口,且实现接口。
2 实现AOP的方法级拦截器。它可以在目标操作前后执行,拦截自定义接口的参数,或拦截接口返回的值。代码:
3. ApplicationContext.xml的设置
4.运行
Tags: Spring  aop  拦截器  
Spring 2.0中的AOP实现-aspectj-Advice
在Spring 2.0中,除了传统的通过实现AOP AIP的方式来实现Advice之外,还提供了两种更加简便的方式来实现Advice:1)基于XML Schema的设置;2)基于Annotation的支持,采用这两种方式,Advice将不用实现特定的接口。现在让我们来看看如何使用这两种方式来分别实现Before Advice、After Advice、Around Advice、Throwing Advice。 一、Before Advice:基于XML Schema 当基于XML Schema实现Before Advice时,你的Advice类不用实现org.springframework.aop.MethodBeforeAdvice接口,例如:
二、Before Advice:基于Annotation 使用Annotation来实现Advice,在XML文件上的定义要比基于XML Sechema的方法要简便的多,但在实现Before Advice类时,则需要使用到@Aspect、@Before标识,并需要引入org.aspectj.lang.annotation包中的类。还以LogBeforeAdvice为例,LogBeforeAdvice类需要改为:
三、After Advice:基于XML Sechma 和Before Advice一样,基于XML Sechma实现After Returning Advice时,不再需要org.springframework.aop.AfterReturningAdvice接口:
四、After Advice:基于Annotation 和Before Advice相似,使用@AfterReturning来表示After Returning Advice:
五、Around Advice:基于XML Sechma 在Spring 2.0中,Around Advice不用实现org.aoplliance.intercept.MethodInterceptor接口,但Advice的方法必须返回对象,并且必须定义一个ProceedingJoinPoint参数,例如:
六、Around Advice:基于Annotation 和Before Advice相似,使用@Around来表示Around Advice:
七、Throw Advice:基于XML Sechma 在Spring 2.0中,Throw Advice不用实现org.springframework.aop.ThrowsAdvice接口,但Advice的方法必须定义Throwable(或其子类)参数,例如:
八、Throw Advice:基于Annotation
Tags: Spring  aop  aspectj  Advice  
分页:[«] 1[2] [3] [»]
Feed订阅集
勤劳致富^.^
Powered By Z-Blog   STYLE by busfly . FatMouse
Copyright © 2007 巴士飞扬技术博客. . 沪ICP备07027972号. 会员群1(VS为主):3769186.