20120705 J2EE 程式設計五

1.日期/時間的處理
1.日期時間轉字串:SimpleDateFormat
2.字串轉日期時間:parse
範例:
test.java
import java.util.*;
import java.text.*;
public class Test {
  public static void main ( String[] args ){
    Date today = new Date();
    System.out.println("Today : " +today);
    Date d02 = new Date(2012-1900,5-1,21);
    System.out.println(d02);
    Date tomorrow = new Date(today.getTime()+(24*60*60*1000));
    System.out.println("Tomorrow : " +tomorrow);
    Date yesterday = new Date(today.getTime()-(24*60*60*1000));
    System.out.println("Yesterday : " +yesterday);

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日[EEEE] HH時mm分ss秒");
    System.out.println("開課: " +sdf.format(d02) );
    System.out.println("昨天: " +sdf.format(yesterday) );
    System.out.println("今天: " +sdf.format(today) );
    System.out.println("明天: " +sdf.format(tomorrow) );
    Date spring_begins =null;
    SimpleDateFormat sdf_input = new SimpleDateFormat("yyyy/M/d HH:mm:ss");
    try {
      spring_begins = sdf_input.parse("2012/2/4 18:22:00");
    } catch ( Exception e ){
      System.out.println(e);
    }
    System.out.println(spring_begins);
    System.out.println("2012年立春: " + sdf.format(spring_begins));
  }
}

2.建立MySQL資料庫連線
控制台 --> 系統管理工具 --> 用ODBC連線


3.補充 Java 語言的 static 用意
1.有 static 代表是一個共用的模型
2. static method 才可以用 static 變數
範例一:
catModel.java

public class CatModel {
  String name;
         int age;
  static int sibling;   //該變數會給所有已建立的物件共享

  CatModel(){
    sibling++;     //因為在 class裡面,每建立一個物件,sibling 就會加一
  }
  public static int getSibling(){     //用 static  method 呼叫 static 變數
    return sibling;
  }
  public void showMe(){
    System.out.println(
      "喵! 我是 " +name
      +", 今年 " +age +"歲, "
+"兄弟姊妹有 " +sibling
    );
  }
}

test.java

public class Test {
  public static void main ( String[] args ){
    System.out.println( "兄弟姊妹數: " +CatModel.getSibling() );
    CatModel c01 = new CatModel();
    c01.name ="小黃";
    c01.age =1;
    c01.showMe();

    System.out.println("有一隻小貓誕生了!");
    CatModel c02 = new CatModel();
    c02.name ="小輝";
    c02.age =2;
    c02.showMe();
    c01.showMe();

    System.out.println("小黃結拜了另一隻小貓...");
    c01.sibling++;
    c01.showMe();
    c02.showMe();
    System.out.println( "兄弟姊妹數: " +CatModel.getSibling() );
  }
}


範例二:
OrderForm.java

public class OrderForm {
  String buyer;
          int form_id;  //訂單編號
  static int flow_num; //流水號

  OrderForm(){
    form_id = ++flow_num;
  }
  public void showDetail(){
    System.out.println(
      "訂單編號: " +form_id
      +", 買家: " +buyer
      +", 訂單總數: " +(flow_num)
    );
  }
}

test.java

public class Test {
  public static void main ( String[] args ){
    OrderForm f01 = new OrderForm();
    f01.buyer ="鴻海";
    f01.showDetail();

    System.out.println("另有一張訂單產生了...");
    OrderForm f02 = new OrderForm();
    f02.buyer ="台積電";
    f02.showDetail();
    f01.showDetail();

    System.out.println("另有一張訂單產生了...");
    OrderForm f03 = new OrderForm();
    f03.buyer ="宏達電";
    f03.showDetail();
    f02.showDetail();
    f01.showDetail();

    System.out.println("啊! 有一張訂單錯誤註銷了...");
    OrderForm.flow_num++;
    f03.showDetail();
    f02.showDetail();
    f01.showDetail();
  }
}


4.安裝 Tomcat
apache VS tomcat:

1.apache支援靜態頁,tomcat支援動態的,比如servlet等,一般使用apache+tomcat的話,apache只是作為一個轉發,對jsp的處理是由tomcat來處理的。


2.apache:側重於http server
3.tomcat:側重於servlet引擎,如果以standalone方式運行,功能上與apache等效,支援JSP,但對靜態網頁不太理想;
4.apache是web伺服器,tomcat是應用(java)伺服器,它只是一個servlet容器,可以認為是apache的擴展,但是可以獨立於apache運行。


5.練習 jsp HelloWorld
1. 操作步驟請參考課本 P.2-2
2. <%.....%> 裡面放 java 程式碼
PS:程式碼裡面不需要放 class & main,而且 System.out.println 要改成 out.println。因為在  jsp 是在 server 端跑的程式,System.out.println 會 show 在 server 端。
原本的四星彩程式碼:(紅字去掉後就變成 jsp的程式碼)

public class FourStar_Generic {
  public static void main(String[] args) {
    ArrayList <Integer> al = new ArrayList<Integer>();
    while (al.size() < 4) {
      al.add(new Integer((int)(Math.random() * 10)));
    }
    for( Object i : al){
System.out.print( i );
    }
    System.out.println();
  }
}


改成 jsp 之後的程式碼:

    ArrayList <Integer> al = new ArrayList<Integer>();
    while (al.size() < 4) {
      al.add(new Integer((int)(Math.random() * 10)));
    }
    for( Object i : al){
out.print( i );
    }
    out.println();

No comments: