??xml version="1.0" encoding="utf-8" standalone="yes"?> POQ?br />persistant object持久对象 listenBean.java import javax.servlet.*; web.xml
最形象的理解就是一个PO是数据库中的一条记录?br />好处是可以把一条记录作Z个对象处理,可以方便的{为其它对象?br />
BOQ?br />business object业务对象
主要作用是把业务逻辑装Z个对象。这个对象可以包括一个或多个其它的对象?br />比如一个简历,有教育经历、工作经历、社会关pȝ{?br />我们可以把教育经历对应一个POQ工作经历对应一个POQ社会关pd应一个PO?br />建立一个对应简历的BO对象处理历,每个BO包含q些PO?br />q样处理业务逻辑Ӟ我们可以针对BOd理?br />
VO Q?br />value object值对?br />ViewObject表现层对?br />
主要对应界面昄的数据对象。对于一个WEB面Q或者SWT、SWING的一个界面,用一个VO对象对应整个界面的倹{?/font>
DTO Q?br />Data Transfer Object数据传输对象
主要用于q程调用{需要大量传输对象的地方?br />比如我们一张表?00个字D,那么对应的PO有100个属性?br />但是我们界面上只要显C?0个字D,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
q时我们可以用只有q?0个属性的DTO来传递结果到客户端,q样也不会暴露服务端表结?到达客户端以后,如果用这个对象来对应界面昄Q那此时它的w䆾p{为VO
POJO Q?br />plain ordinary java object 单ava对象
个h感觉POJO是最参见最多变的对象,是一个中间对象,也是我们最常打交道的对象?br />
一个POJO持久化以后就是PO
直接用它传递、传递过E中是DTO
直接用来对应表示层就是VO
DAOQ?br />data access object数据讉K对象
q个大家最熟悉Q和上面几个O区别最大,基本没有互相转化的可能性和必要.
主要用来装Ҏ据库的访问。通过它可以把POJO持久化ؓPOQ用POl装出来VO、DTO
ȝ下我认ؓ一个对象究竟是什么O要看具体环境Q在不同的层、不同的应用场合Q对象的w䆾也不一P而且对象w䆾的{化也是很自然的。就像你对老婆来说是老公Q对父母来说是子女。设计这些概늚初衷不是Z唬h而是Z更好的理解和处理各种逻辑Q让大家能更好的ȝ面向对象的方式处理问?
大家千万不要陷入q度设计Q大可不必ؓ了设计而设计一定要在代码中区分各个对象。一句话技术是为应用服务的?br />
Ƣ迎指正?br />
]]>
import java.util.*;
public class listenerBean implements ServletContextListener {
private java.util.Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
//定时器已启动
timer.schedule(new MyTask(), 0, (long) 1000*60);//定时1分钟
//已经dd调度?br /> }
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
//定时器销?br /> }
}
class MyTask extends TimerTask {
private static boolean isRunning = false;
public void run() {
if (!isRunning) {
isRunning = true;
//开始执行Q?br /> //ToDo ....
//执行d完成
isRunning = false;
} else {
//上一ơQ务执行还未结?br /> }
}
}<web-app>
<listener>
<listener-class>listenerBean</listener-class>
</listener>
</web-app>
]]>
本实例演C如何得C个目录下的所有文件列?/span> .
1. q里利用?/span> DirFilter 实现?/span> FilenameFilter 接口 , 因此必须l承 accept 的方?/span> .
2. 用到了匹配字W序列与正则表达式指定模式的c?/span> Matcher,Pattern 所以要 java.util.regex 引入 .
实例E序
:
package javaio;
import java.io.*;
import java.util.*;
import java.util.regex.*;
public class DirList {
public static void main(String[] args) {
File path = new File("c:/");
String[] list;
if(args.length == 0){
list = path.list();
}
else{
// q里输入的参数作ؓqo因子
list = path.list(new DirFilter(args[0]));
}
for(int i = 0; i < list.length; i++){
System.out.println(list[i]);
}
}
}
class DirFilter implements FilenameFilter {
private Pattern pattern;
public DirFilter(String regex) {
pattern = Pattern.compile(regex);
}
public boolean accept(File dir, String name) {
// 判断名ؓ name 的文件是不是W合qo条g
return pattern.matcher(new File(name).getName()).matches();/*matches() 试整个区?/span> / 与模式匹配?/span> new File(name).getName() 得到 String cȝ name*/
}
}
q行l果 :
Clendar cL一U日期处理类 , 可以惛_它是一个挂在墙壁上的典型日?/span> , 有许多日期和|阅 .
1. Clendar cȝ变量域的概念 . 每个元素都是?/span> , q且q些域在 Clendar cM表现为静态变?/span> . q些变量?/span> , 可能通过 get/set cL法获得或者设|域?/span> .
[Calendardemo.java
代码
]:
import java.util.*;
public class Calendardemo {
public static void main(String[] args) {
// 创徏一个日历对?/span>
Calendar calendar = Calendar.getInstance();
// 用当前时间初始化日历对象
calendar.setTime(new Date());
String year = String.valueOf(calendar.get(Calendar.YEAR));
String month = String.valueOf(calendar.get(Calendar.MONTH) + 1);
String date = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
String day = String.valueOf(calendar.get(Calendar.DAY_OF_WEEK) - 1);
int hour = calendar.get(Calendar.HOUR);// ?/span> 12 时?/span>
int hour_1 = calendar.get(Calendar.HOUR_OF_DAY);// ?/span> 24 时?/span>
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
// 输出l果
System.out.println("year= " + year);
System.out.println("month= " + month);
System.out.println("date= " + date);
System.out.println("day= " + day);
System.out.println("hour= " + hour);
System.out.println("hour1= " + hour_1);
System.out.println("minute= " + minute);
System.out.println("second= " + second);
System.out.println(" 现在旉是: ");
System.out.println(" " + year + " q?/span> " + month + " ?/span> " + date + " 星期 " + day);
calendar.set(1983, 7, 21);// 日历翻到某个时_ 7 表示八月
long time1983 = calendar.getTimeInMillis();// q回当前旉Q作Z开始时间的 UTC 毫秒?/span>
calendar.setTime(new Date());// 日历翻到现在这个时_
long time2006 = calendar.getTimeInMillis();
long interdays = (time2006 - time1983) / (1000 * 60 * 60 * 24);
System.out.println(" 现在?/span> 1983.8.21 盔R " + interdays + " ?/span> ");
}
}
注意
:
应该以静态方式访问静态字D?/span>
Calendar.year
q行l果
: