Hey,buddy:What's up?

Happy&Optimistic&Effective

BlogJava 首页 新随笔 联系 聚合 管理
  14 Posts :: 1 Stories :: 0 Comments :: 0 Trackbacks

2005年10月21日 #

本程序改变自网上的一个datapicker,没有用javax包,而是基于java.awt包。you can use it in your applet.共四个文件。

//1.AbsoluteConstraints.java

import java.awt.Dimension;
import java.awt.Point;

public class AbsoluteConstraints
    implements java.io.Serializable {
  static final long serialVersionUID = 5261460716622152494L;
  public int x;
  public int y;
  public int width = -1;
  public int height = -1;
  public AbsoluteConstraints(Point pos) {
    this(pos.x, pos.y);
  }

  public AbsoluteConstraints(int x, int y) {
    this.x = x;
    this.y = y;
  }

  public AbsoluteConstraints(Point pos, Dimension size) {
    this.x = pos.x;
    this.y = pos.y;
    if (size != null) {
      this.width = size.width;
      this.height = size.height;
    }
  }

  public AbsoluteConstraints(int x, int y, int width, int height) {
    this.x = x;
    this.y = y;
    this.width = width;
    this.height = height;
  }

  public int getX() {
    return x;
  }

  public int getY() {
    return y;
  }

  public int getWidth() {
    return width;
  }

  public int getHeight() {
    return height;
  }

  public String toString() {
    return super.toString() + " [x=" + x + ", y=" + y + ", width=" + width +
        ", height=" + height + "]";
  }
}



//2.import java.awt.*;

public class AbsoluteLayout
    implements LayoutManager2, java.io.Serializable {
  static final long
      serialVersionUID = -1919857869177070440L;
  protected java.util.Hashtable constraints = new java.util.Hashtable();
  public
      void addLayoutComponent(String name, Component comp) {
    throw new IllegalArgumentException();
  }

  public void
      removeLayoutComponent(Component comp) {
    constraints.remove(comp);
  }

  public Dimension preferredLayoutSize
      (Container parent) {
    int maxWidth = 0;
    int maxHeight = 0;
    for (java.util.Enumeration e =
         constraints.keys(); e.hasMoreElements(); ) {
      Component comp = (Component) e.nextElement();
      AbsoluteConstraints
          ac = (AbsoluteConstraints) constraints.get(comp);
      Dimension size = comp.getPreferredSize();
      int width =
          ac.getWidth();
      if (width == -1)
        width = size.width;
      int height = ac.getHeight();
      if (height == -1)
        height = size.height;
      if (ac.x + width > maxWidth)
        maxWidth = ac.x + width;
      if (ac.y + height >
          maxHeight)
        maxHeight = ac.y + height;
    }
    return new Dimension(maxWidth, maxHeight);
  }

  public
      Dimension minimumLayoutSize(Container parent) {
    int maxWidth = 0;
    int maxHeight = 0;
    for
        (java.util.Enumeration e = constraints.keys(); e.hasMoreElements(); ) {
      Component comp = (Component) e.nextElement();
      AbsoluteConstraints ac = (AbsoluteConstraints) constraints.get(comp);
      Dimension size = comp.getMinimumSize();
      int width = ac.getWidth();
      if (width == -1)
        width = size.width;
      int height = ac.getHeight();
      if (height == -1)
        height = size.height;
      if (ac.x + width > maxWidth)
        maxWidth = ac.x + width;
      if
          (ac.y + height > maxHeight)
        maxHeight = ac.y + height;
    }
    return new Dimension(maxWidth, maxHeight);
  }

  public void layoutContainer(Container parent) {
    for (java.util.Enumeration e = constraints.keys();
         e.hasMoreElements(); ) {
      Component comp = (Component) e.nextElement();
      AbsoluteConstraints ac =
          (AbsoluteConstraints) constraints.get(comp);
      Dimension size = comp.getPreferredSize();
      int width = ac.getWidth();
      if (width == -1)
        width = size.width;
      int height = ac.getHeight();
      if (height == -1)
        height = size.height;
      comp.setBounds(ac.x, ac.y, width, height);
    }
  }

  public void addLayoutComponent
      (Component comp, Object constr) {
    if (! (constr instanceof AbsoluteConstraints))
      throw new
          IllegalArgumentException();
    constraints.put(comp, constr);
  }

  public Dimension maximumLayoutSize(Container
                                     target) {
    return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  }

  public float getLayoutAlignmentX
      (Container target) {
    return 0;
  }

  public float getLayoutAlignmentY(Container target) {
    return 0;
  }

  public void invalidateLayout(Container target) {}
}

// 3DateField.java

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.net.URL;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.awt.*;

public final class DateField
    extends Panel {
  private static final long serialVersionUID = 1L;
  private final TextField dateText = new TextField(12);
  private final Button dropdownButton = new Button();
  private DatePicker dp;
  private Dialog dlg;
  Point origin = new Point();
  final class Listener
      extends ComponentAdapter {
    public void componentHidden(final ComponentEvent evt) {
      final Date dt = ( (DatePicker) evt.getSource()).getDate();
      if (null != dt)
        dateText.setText(dateToString(dt));
      dlg.dispose();
    }
  }

  public DateField() {
    super();
    init();
  }

  public DateField(final Date initialDate) {
    super();
    init();
    dateText.setText(dateToString(initialDate));
  }

  public Date getDate() {
    return stringToDate(dateText.getText());
  }

  public void setDate(Date date) {
    String v = dateToString(date);
    if (v == null) {
      v = "";
    }
    dateText.setText(v);
  }

  private void init() {
    setLayout(new BorderLayout());
    dateText.setText("");
    dateText.setEditable(false);
    dateText.setBackground(new Color(255, 255, 255));
    add(dateText, BorderLayout.CENTER);
    dropdownButton.setLabel("选择");
    dropdownButton.setBackground(Color.yellow);
    dropdownButton.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        onButtonClick(evt);
      }
    });
    add(dropdownButton, BorderLayout.EAST);
  }

  private void onButtonClick(final java.awt.event.ActionEvent evt) {
    if ("".equals(dateText.getText()))
      dp = new DatePicker();
    else
      dp = new DatePicker(stringToDate(dateText.getText()));
    dp.addComponentListener(new Listener());
    final Point p = dateText.getLocationOnScreen();
    p.setLocation(p.getX(), p.getY() - 1 + dateText.getSize().getHeight());
    dlg = new Dialog(new Frame(), true);
    dlg.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        origin.x = e.getX();
        origin.y = e.getY();
      }
    });
    dlg.addMouseMotionListener(new MouseMotionAdapter() {
      public void mouseDragged(MouseEvent e) {
        Point p = dlg.getLocation();
        dlg.setLocation(p.x + e.getX() - origin.x, p.y + e.getY() - origin.y);
      }
    });
    dlg.setLocation(p);
    dlg.setResizable(false);
    dlg.setUndecorated(true);
    dlg.add(dp);
    dlg.pack();
    dlg.setVisible(true);
  }

  private static String dateToString(final Date dt) {
    if (null != dt)
      return DateFormat.getDateInstance(DateFormat.LONG).format(dt);
    return null;
  }

  private static Date stringToDate(final String s) {
    try {
      return DateFormat.getDateInstance(DateFormat.LONG).parse(s);
    }
    catch (ParseException e) {
      return null;
    }
  }

  public static void main(String[] args) {
    Dialog dlg = new Dialog(new Frame(), true);
    DateField df = new DateField();
   //dlg.getContentPane().add(df);
   dlg.add(df);
    dlg.pack();
    dlg.setVisible(true);
    System.out.println(df.getDate().toString());
    System.exit(0);
  }
}

//4.DatePicker.java

import java.awt.*;
import java.awt.event.*;
import java.util.GregorianCalendar;
import java.util.Date;
import java.util.Calendar;
import java.text.DateFormat;
import java.text.FieldPosition;
/*
import javax.swing.*;
import javax.swing.plaf.BorderUIResource;
*/
public final class DatePicker
    extends Panel {
  private static final long serialVersionUID = 1L;
  private static final int startX = 10;
  private static final int startY = 60;
  private static final Font smallFont = new Font("Dialog", Font.PLAIN, 10);
  private static final Font largeFont = new Font("Dialog", Font.PLAIN, 12);
  private static final Insets insets = new Insets(2, 2, 2, 2);
  private static final Color highlight = Color.YELLOW;//new Color(255, 255, 204);
  private static final Color white = new Color(255, 255, 255);
  private static final Color gray = new Color(204, 204, 204);
  private Component selectedDay = null;
  private GregorianCalendar selectedDate = null;
  private GregorianCalendar originalDate = null;
  private boolean hideOnSelect = true;
  private final Button backButton = new Button();
  private final Label monthAndYear = new Label();
  private final Button forwardButton = new Button();
  private final Label[] dayHeadings = new Label[] {
      new Label("日"),
      new Label("一"),
      new Label("二"),
      new Label("三"),
      new Label("四"),
      new Label("五"),
      new Label("六")};

  private final Label[][] daysInMonth = new Label[][] {
      {
      new Label(), new Label(),
      new Label(), new Label(),
      new Label(), new Label(),
      new Label()}
      , {
      new Label(),
      new Label(), new Label(),
      new Label(), new Label(),
      new Label(), new Label()}
      , {
      new Label(), new Label(),
      new Label(), new Label(),
      new Label(), new Label(),
      new Label()}
      , {
      new Label(),
      new Label(), new Label(),
      new Label(), new Label(),
      new Label(), new Label()}
      , {
      new Label(), new Label(),
      new Label(), new Label(),
      new Label(), new Label(),
      new Label()}
      , {
      new Label(),
      new Label(), new Label(),
      new Label(), new Label(),
      new Label(), new Label()}
  };
  private final Button todayButton = new Button();
  private final Button cancelButton = new Button();
  public DatePicker() {
    super();
    selectedDate = getToday();
    init();
  }

  public DatePicker(final Date initialDate) {
    super();
    if (null == initialDate)
      selectedDate = getToday();
    else
      (selectedDate = new GregorianCalendar()).setTime(initialDate);
    originalDate = new GregorianCalendar(selectedDate.get(Calendar.YEAR),
                                         selectedDate.get(Calendar.MONTH),
                                         selectedDate.get(Calendar.DATE));
    init();
  }

  public boolean isHideOnSelect() {
    return hideOnSelect;
  }

  public void setHideOnSelect(final boolean hideOnSelect) {
    if (this.hideOnSelect != hideOnSelect) {
      this.hideOnSelect = hideOnSelect;
      initButtons(false);
    }
  }

  public Date getDate() {
    if (null != selectedDate)
      return selectedDate.getTime();
    return null;
  }

  private void init() {
    setLayout(new AbsoluteLayout());
    /*
    this.setMinimumSize(new Dimension(161, 226));
    this.setMaximumSize(getMinimumSize());
    this.setPreferredSize(getMinimumSize());
    this.setBorder(new BorderUIResource.EtchedBorderUIResource());
    */
   this.setSize(new Dimension(161, 226));
    backButton.setFont(smallFont);
    backButton.setLabel("<");
  //  backButton.setSize(insets);
 //   backButton.setDefaultCapable(false);
    backButton.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        onBackClicked(evt);
      }
    });
    add(backButton, new AbsoluteConstraints(10, 10, 20, 20));
    monthAndYear.setFont(largeFont);
    monthAndYear.setAlignment((int)TextField.CENTER_ALIGNMENT);
    monthAndYear.setText(formatDateText(selectedDate.getTime()));
    add(monthAndYear, new AbsoluteConstraints(30, 10, 100, 20));
    forwardButton.setFont(smallFont);
    forwardButton.setLabel(">");
 //   forwardButton.setMargin(insets);
//    forwardButton.setDefaultCapable(false);
    forwardButton.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        onForwardClicked(evt);
      }
    });
    add(forwardButton, new AbsoluteConstraints(130, 10, 20, 20));
    int x = startX;
    for (int ii = 0; ii < dayHeadings.length; ii++) {
    //  dayHeadings[ii].setOpaque(true);
      dayHeadings[ii].setBackground(Color.LIGHT_GRAY);
      dayHeadings[ii].setForeground(Color.WHITE);
      dayHeadings[ii].setAlignment((int)TextField.CENTER_ALIGNMENT);
    //  dayHeadings[ii].setHorizontalAlignment(Label.CENTER);
      add(dayHeadings[ii], new AbsoluteConstraints(x, 40, 21, 21));
      x += 20;
    }
    x = startX;
    int y = startY;
    for (int ii = 0; ii < daysInMonth.length; ii++) {
      for (int jj = 0; jj < daysInMonth[ii].length; jj++) {
      //  daysInMonth[ii][jj].setOpaque(true);
        daysInMonth[ii][jj].setBackground(white);
        daysInMonth[ii][jj].setFont(smallFont);
     //   daysInMonth[ii][jj].setHorizontalAlignment(Label.CENTER);
        daysInMonth[ii][jj].setText("");
        daysInMonth[ii][jj].addMouseListener(new MouseAdapter() {
          public void mouseClicked(final MouseEvent evt) {
            onDayClicked(evt);
          }
        });
        add(daysInMonth[ii][jj], new AbsoluteConstraints(x, y, 21, 21));
        x += 20;
      }
      x = startX;
      y += 20;
    }
    initButtons(true);
    calculateCalendar();
  }

  private void initButtons(final boolean firstTime) {
    if (firstTime) {
      final Dimension buttonSize = new Dimension(68, 24);
      todayButton.setLabel("今天");
      todayButton.setSize(buttonSize);
      /*
      todayButton.setMargin(insets);
      todayButton.setMaximumSize(buttonSize);
      todayButton.setMinimumSize(buttonSize);
      todayButton.setPreferredSize(buttonSize);
      todayButton.setDefaultCapable(true);
      todayButton.setSelected(true);
      */
      todayButton.addActionListener(new ActionListener() {
        public void actionPerformed(final ActionEvent evt) {
          onToday(evt);
        }
      });
      cancelButton.setLabel("取消");
      cancelButton.setSize(buttonSize);
      /*
      cancelButton.setMargin(insets);
      cancelButton.setMaximumSize(buttonSize);
      cancelButton.setMinimumSize(buttonSize);
      cancelButton.setPreferredSize(buttonSize);
      */
      cancelButton.addActionListener(new ActionListener() {
        public void actionPerformed(final ActionEvent evt) {
          onCancel(evt);
        }
      });
    }
    else {
      this.remove(todayButton);
      this.remove(cancelButton);
    }
    if (hideOnSelect) {
      add(todayButton, new AbsoluteConstraints(25, 190, 52, -1));
      add(cancelButton, new AbsoluteConstraints(87, 190, 52, -1));
    }
    else {
      add(todayButton, new AbsoluteConstraints(55, 190, 52, -1));
    }
  }

  private void onToday(final java.awt.event.ActionEvent evt) {
    selectedDate = getToday();
    setVisible(!hideOnSelect);
    if (isVisible()) {
      monthAndYear.setText(formatDateText(selectedDate.getTime()));
      calculateCalendar();
    }
  }

  private void onCancel(final ActionEvent evt) {
    selectedDate = originalDate;
    setVisible(!hideOnSelect);
  }

  private void onForwardClicked(final java.awt.event.ActionEvent evt) {
    final int day = selectedDate.get(Calendar.DATE);
    selectedDate.set(Calendar.DATE, 1);
    selectedDate.add(Calendar.MONTH, 1);
    selectedDate.set(Calendar.DATE,
                     Math.min(day, calculateDaysInMonth(selectedDate)));
    monthAndYear.setText(formatDateText(selectedDate.getTime()));
    calculateCalendar();
  }

  private void onBackClicked(final java.awt.event.ActionEvent evt) {
    final int day = selectedDate.get(Calendar.DATE);
    selectedDate.set(Calendar.DATE, 1);
    selectedDate.add(Calendar.MONTH, -1);
    selectedDate.set(Calendar.DATE,
                     Math.min(day, calculateDaysInMonth(selectedDate)));
    monthAndYear.setText(formatDateText(selectedDate.getTime()));
    calculateCalendar();
  }

  private void onDayClicked(final java.awt.event.MouseEvent evt) {
    final Label fld = (Label) evt.getSource();
    if (!"".equals(fld.getText())) {
      fld.setBackground(highlight);
      selectedDay = fld;
      selectedDate.set(Calendar.DATE, Integer.parseInt(fld.getText()));
      setVisible(!hideOnSelect);
    }
  }

  private static GregorianCalendar getToday() {
    final GregorianCalendar gc = new GregorianCalendar();
    gc.set(Calendar.HOUR_OF_DAY, 0);
    gc.set(Calendar.MINUTE, 0);
    gc.set(Calendar.SECOND, 0);
    gc.set(Calendar.MILLISECOND, 0);
    return gc;
  }

  private void calculateCalendar() {
    if (null != selectedDay) {
      selectedDay.setBackground(white);
      selectedDay = null;
    }
    final GregorianCalendar c = new GregorianCalendar(selectedDate.get(Calendar.
        YEAR), selectedDate.get(Calendar.MONTH), 1);
    final int maxDay = calculateDaysInMonth(c);
    final int selectedDay = Math.min(maxDay, selectedDate.get(Calendar.DATE));
    int dow = c.get(Calendar.DAY_OF_WEEK);
    for (int dd = 0; dd < dow; dd++) {
      daysInMonth[0][dd].setText("");
    }
    int week;
    do {
      week = c.get(Calendar.WEEK_OF_MONTH);
      dow = c.get(Calendar.DAY_OF_WEEK);
      final Label fld = this.daysInMonth[week - 1][dow - 1];
      fld.setText(Integer.toString(c.get(Calendar.DATE)));
      if (selectedDay == c.get(Calendar.DATE)) {
        fld.setBackground(highlight);
        this.selectedDay = fld;
      }
      if (c.get(Calendar.DATE) >= maxDay)
        break;
      c.add(Calendar.DATE, 1);
    }
    while (c.get(Calendar.DATE) <= maxDay); week--;
    for (int ww = week; ww < daysInMonth.length; ww++) {
      for (int dd = dow; dd < daysInMonth[ww].length; dd++) {
        daysInMonth[ww][dd].setText("");
      }
      dow = 0;
    }
    c.set(Calendar.DATE, selectedDay);
    selectedDate = c;
  }

  private static int calculateDaysInMonth(final Calendar c) {
    int daysInMonth = 0;
    switch (c.get(Calendar.MONTH)) {
      case 0:
      case 2:
      case 4:
      case 6:
      case 7:
      case 9:
      case 11:
        daysInMonth = 31;
        break;
      case 3:
      case 5:
      case 8:
      case 10:
        daysInMonth = 30;
        break;
      case 1:
        final int year = c.get(Calendar.YEAR);
        daysInMonth = (0 == year % 1000) ? 29 : (0 == year % 100) ? 28 :
            (0 == year % 4) ? 29 : 28;
        break;
    }
    return daysInMonth;
  }

  private static String formatDateText(final Date dt) {
    final DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
    final StringBuffer mm = new StringBuffer();
    final StringBuffer yy = new StringBuffer();
    final FieldPosition mmfp = new FieldPosition(DateFormat.MONTH_FIELD);
    final FieldPosition yyfp = new FieldPosition(DateFormat.YEAR_FIELD);
    df.format(dt, mm, mmfp);
    df.format(dt, yy, yyfp);
    return (mm.toString().substring(mmfp.getBeginIndex(), mmfp.getEndIndex()) +
            "月 " +
            yy.toString().substring(yyfp.getBeginIndex(), yyfp.getEndIndex()) +
            "年");
  }
}

posted @ 2006-04-27 14:32 Kun Tao's Blog 阅读(268) | 评论 (0)编辑 收藏

从前,有一座圆音寺,每天都有许多人上香拜佛,香火很旺。在圆音寺庙前的横梁上有个蜘蛛结了张网,由于每天都受到香火和虔诚的祭拜的熏托,蛛蛛便有了佛性。经过了一千多年的修炼,蛛蛛佛性增加了不少。   忽然有一天,佛主光临了圆音寺,看见这里香火甚旺,十分高兴。离开寺庙的时候,不轻易间地抬头,看见了横梁上的蛛蛛。佛主停下来,问这只蜘蛛:“你我相见总算是有缘,我来问你个问题,看你修炼了这一千多年来,有什么真知拙见。怎么样?”蜘蛛遇见佛主很是高兴,连忙答应了。佛主问到:“世间什么才是最珍贵的?”蜘蛛想了想,回答到:“世间最珍贵的是‘得不到’和‘已失去’。”佛主点了点头,离开了。   就这样又过了一千年的光景,蜘蛛依旧在圆音寺的横梁上修炼,它的佛性大增。一日,佛主又来到寺前,对蜘蛛说道:“你可还好,一千年前的那个问题,你可有什么更深的认识吗?”蜘蛛说:“我觉得世间最珍贵的是‘得不到’和‘已失去’。”佛主说:“你再好好想想,我会再来找你的。”   又过了一千年,有一天,刮起了大风,风将一滴甘露吹到了蜘蛛网上。蜘蛛望着甘露,见它晶莹透亮,很漂亮,顿生喜爱之意。蜘蛛每天看着甘露很开心,它觉得这是三千年来最开心的几天。突然, 又刮起了一阵大风,将甘露吹走了。蜘蛛一下子觉得失去了什么,感到很寂寞和难过。这时佛主又来了,问蜘蛛:“蜘蛛这一千年,你可好好想过这个问题:世间什么才是最珍贵的?”蜘蛛想到了甘露,对佛主说:“世间最珍贵的是‘得不到 ’和‘已失去’。”佛主说:“好,既然你有这样的认识,我让你到人间走一朝吧。”   就这样,蜘蛛投胎到了一个官宦家庭,成了一个富家小姐,父母为她取了个名字叫蛛儿。一晃,蛛儿到了十六岁了,已经成了个婀娜多姿的少女,长的十分漂亮,楚楚动人。   这一日,新科状元郎甘鹿中士,皇帝决定在后花园为他举行庆功宴席。来了许多妙龄少女,包括蛛儿,还有皇帝的小公主长风公主。状元郎在席间表演诗词歌赋,大献才艺,在场的少女无一不被他折倒。但蛛儿一点也不紧张和吃醋,因为她知道,这是佛主赐予她的姻缘。   过了些日子,说来很巧,蛛儿陪同母亲上香拜佛的时候,正好甘鹿也陪同母亲而来。上完香拜过佛,二位长者在一边说上了话。蛛儿和甘鹿便来到走廊上聊天,蛛儿很开心,终于可以和喜欢的人在一起了,但是甘鹿并没有表现出对她的喜爱。蛛儿对甘鹿说:“你难道不曾记得十六年前,圆音寺的蜘蛛网上的事情了吗?”甘鹿很诧异,说:“蛛儿姑娘,你漂亮,也很讨人喜欢,但你想象力未免丰富了一点吧。”说罢,和母亲离开了。   蛛儿回到家,心想,佛主既然安排了这场姻缘,为何不让他记得那件事,甘鹿为何对我没有一点的感觉?   几天后,皇帝下召,命新科状元甘鹿和长风公主完婚;蛛儿和太子芝草完婚。这一消息对蛛儿如同晴空霹雳,她怎么也想不同,佛主竟然这样对她。几日来,她不吃不喝,穷究急思,灵魂就将出壳,生命危在旦夕。太子芝草知道了,急忙赶来,扑倒在床边,对奄奄一息的蛛儿说道:“那日,在后花园众姑娘中,我对你一见钟情,我苦求父皇,他才答应。如果你死了,那么我也就不活了。”说着就拿起了宝剑准备自刎。   就在这时,佛主来了,他对快要出壳的蛛儿灵魂说:“蜘蛛,你可曾想过,甘露(甘鹿)是由谁带到你这里来的呢?是风(长风公主)带来的,最后也是风将它带走的。甘鹿是属于长风公主的,他对你不过是生命中的一段插曲。而太子芝草是当年圆音寺门前的一棵小草,他看了你三千年,爱慕了你三千年,但你却从没有低下头看过它。蜘蛛,我再来问你,世间什么才是最珍贵的?”蜘蛛听了这些真相之后,好象一下子大彻大悟了,她对佛主说:“世间最珍贵的不是‘得不到’和‘已失去’,而是现在能把握的幸福。”刚说完,佛主就离开了,蛛儿的灵魂也回位了,睁开眼睛,看到正要自刎的太子芝草,她马上打落宝剑,和太子深深的抱着……   故事结束了,你能领会蛛儿最后一刻的所说的话吗?“世间最珍贵的不是‘得不到’ 和‘已失去’,而是现在能把握的幸福。”
posted @ 2005-10-25 20:14 Kun Tao's Blog 阅读(230) | 评论 (0)编辑 收藏

     摘要: 2.1.3. 优缺点 优点: 一些开发商开始采用并推广这个框架作为开源项目,有很多先进的实现思想对大型的应用支持的较好有集中的网页导航定义 缺点: 不是业届标准对开发工具的支持不够复杂的taglib,需要比较长的时间来掌握html form 和 actionform的搭配比较封闭,但这也是它的精华所在。 修改建议把actionform属性的设置器和访问器修改成读取或生成xml文档的方法,然后 ht...  阅读全文
posted @ 2005-10-21 20:38 Kun Tao's Blog 阅读(289) | 评论 (0)编辑 收藏

     摘要: 转载说明:本文主要讲述内容:J2EE web架构基线,模型选取以及几个模型的优缺点对比。一、J2EE体系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技术。怎样把这些技术组合起来形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。完成这个步骤可以形成一个主要里程碑基线。1.各种因数初步确定 为了...  阅读全文
posted @ 2005-10-21 20:21 Kun Tao's Blog 阅读(261) | 评论 (0)编辑 收藏

     摘要: 注:目前J2EE的开发工作网络上讨论的热火朝天,各种新技术层出不穷,当然了我们这些新手看的也是一头雾水,感觉的j2ee涉及到的技术太广,各种framework令人眼花缭乱,今天看了这篇介绍性文章,感觉不错,和大家分享一下文章的主要观点。(其中提到的一些技术或规范可能比较老了,主要是学习一下作者的观点) 1.结合商业需求选择合理的架构一般而言,企业信息系统(EIS)都要求自己稳定、安全、可靠、高效、...  阅读全文
posted @ 2005-10-21 19:43 Kun Tao's Blog 阅读(245) | 评论 (0)编辑 收藏