PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

2012年7月26日 星期四

簡單JAX-WS Web Service使用教學

JAX-WS(Java API for XML Web Services)Web Service是一種由Oracle Sun發展的以XML為基礎的Web Service開發技術。目前已經涵概到Java EE5(含)以上的版本,它可以讓使用者迅速開Java Web Service,除了採用SOAP(Simple Object Access Protocol)通訊協定和XML資料標準,也支援以HTTP為基礎的通訊協定,JAX-WS使用JAXB 2.0處理資料物件與XML資料格式的映射交換,可以在程式代碼中使用@XXX的註解標籤,大大的簡單化Web Service開發流程與減少Web Service於執行階段所產生JAR檔的大小。在這篇教學文章中,會建立一個Web Service且安排內部的程式邏輯、再分別寫三個Web Service Client,
來使用與測試Web Service服務是否正常運作。

在本範例中選擇NetBean IDE 6.9來開發Web Service,緊接著我們會依照下面的步驟逐一的完成Web Service程式的建立: 

建立一個Web Service

首先, 單擊滑鼠右鍵後選擇「New Project」項目(圖1),再來選取Java Web -> Web Application次項目(圖2),稍後畫面帶到「New Web Application」對話框後,請逐一完成Name and LocationServer and SettingsFramework」步驟的內容設定:
  1. Name and Location請設定Project Name為Welcome,其餘Project Location、 Project Folder都為預設值。
  2. 於Server and Settings設定Server為GlassFish Server 3,其他的Java EE Version、Context Path均為預設值。
  3. 到Framework步驟時,需依據每一個專案的需要選擇適當的framework來配合專案一起使用,但在本例子中並不需要使用framework。
 圖1. 單擊滑鼠右鍵後選擇「New Project」項目

圖2. 再來選取Java Web -> Web Application次項目

一支簡單Java AP Web Service Client

回簡單JAX-WS Web Service使用教學頁面

在這一篇文章中,我們將介紹如何透過一個簡單的Java AP Client來存取一個可以正常連線運作的Web Service(JAX-WS)服務,一般來說這種Java應用程式的Web Service Client習慣在開發完成之後,把整個專案打包成一個jar檔的類別庫,提供給各式各樣的不同的專案作為公用類別庫使用。

建立一個Java應用程式專案

首先,在「Projects」項目底下按滑鼠右鍵帶出脈絡選單後,選擇New Project...」項目,進入到Choose Project對話視窗,選取Java -> Java Application的專案類型,

來到Name and Location的對話視窗,請填入Project Name為WelcomeClient,其他部分都使用原預設值,然後按Finish鈕建立專案。

一支簡單JSP Web Service Client

回簡單JAX-WS Web Service使用教學頁面

在這篇文章中,我們以一支JSP Web應用程式呼叫一個可以正常連線運作的Web Service服務。一般而言,將WSDL轉成對映的Java程式代碼,其實就是在執行JDK的wsimport.exe指令,目的是要把WSDL指向的URL的Web Service有關的類別下載到本地端讓JSP Web應用程式來參考使用。

建立一個Java Web應用程式專案

首先,在「Projects」項目底下按滑鼠右鍵帶出脈絡選單後,選擇「New Project...」項目,進入到「Choose Project」對話視窗,選取Java Web -> Web Application的專案類型,

來到Name and Location的對話視窗,請填入Project Name為WelcomeWebClient,其他部分都使用原預設值,然後按Finish鈕建立專案。

一支簡單Servlet Web Service Client

回簡單JAX-WS Web Service使用教學頁面

在這篇文章中,我們以一支Servlet Web應用程式呼叫/存取一個可以正常連線運作的Web Service服務。一般而言,將WSDL轉成對映的Java程式代碼,其實就是在執行JDK的wsimport.exe指令,目的是要把WSDL指向的URL的Web Service有關的類別下載到本地端讓Servlet Web應用程式來參考使用。

建立一個Java Web應用程式專案

首先,在「Projects」項目底下按滑鼠右鍵帶出脈絡選單後,選擇「New Project...」項目,進入到「Choose Project」對話視窗,選取Java Web -> Web Application的專案類型,

來到Name and Location的對話視窗,請填入Project Name為WelcomeWebClient,其他部分都使用原預設值,然後按Finish鈕建立專案。

2012年7月18日 星期三

equals(Object obj)方法 - Java日曆類別

回java日曆類別使用主頁

equals(Object obj)方法

比較目前日曆時間與指定日曆時間是否相等。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample029 {

  /**
   @param args
   */
  public static void main(String[] args) {
    
    //cal1為2012/7/18 (目前時間)
    Calendar cal1 = Calendar.getInstance();
    
    //cal2為2012/7/18
    Calendar cal2 = Calendar.getInstance();    
    
    if(cal1.equals(cal2)){
      System.out.println("兩日曆相等");
    }

  }

}


執行結果








compareTo(Calendar anotherCalendar)方法 - Java日曆類別

回java日曆類別使用主頁

compareTo(Calendar anotherCalendar)方法

比較兩個日曆時間的大小。
  • 回傳值等於0代表兩日曆等價
  • 回傳值小於0代表目前日曆小於指定日曆
  • 回傳值大於0代表目前日曆大於指定日曆

程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample028 {

  /**
   @param args
   */
  public static void main(String[] args) {
    
    //cal1為2012/7/18 (目前時間)
    Calendar cal1 = Calendar.getInstance();
    
    //cal2為1998/7/18
    Calendar cal2 = Calendar.getInstance();
    cal2.set(Calendar.YEAR, 1998);
    
    int flag = cal1.compareTo(cal2);
    if(flag == 0){
      System.out.println("兩日曆相等");
    }else if(flag > 0){
      System.out.println("cal1日曆大於cal2日曆");
    }else{
      System.out.println("cal1日曆小於cal2日曆");
    }    

  }

}


執行結果








before(Object when)方法 - Java日曆類別

回java日曆類別使用主頁

before(Object when)方法

回傳目前日曆時間是否在指定日曆時間之前,若是則為真值(true)


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample027 {

  /**
   @param args
   */
  public static void main(String[] args) {  
    
    //cal1為2000/7/18
    Calendar cal1 = Calendar.getInstance();
    cal1.set(Calendar.YEAR, 2000);
    
    //cal2為2012/7/18 (目前時間)
    Calendar cal2 = Calendar.getInstance();
    
    //判斷cal1日曆時間是否在cal2日曆時間之前
    if(cal1.before(cal2)){
      System.out.println("cal1日曆時間小於cal2日曆時間");
    }

  }

}


執行結果








after(Object when)方法 - Java日曆類別

回java日曆類別使用主頁

after(Object when)方法

回傳目前日曆時間是否在指定日曆時間之後,若是則為真值(true)


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample026 {

  /**
   @param args
   */
  public static void main(String[] args) {
    //cal1為2012/7/18 (目前時間)
    Calendar cal1 = Calendar.getInstance();
    
    //cal2為2005/7/18
    Calendar cal2 = Calendar.getInstance();
    cal2.set(Calendar.YEAR, 2005);
    
    //判斷cal1日曆時間是否在cal2日曆時間之後
    if(cal1.after(cal2)){
      System.out.println("cal1日曆時間大於cal2日曆時間");
    }

  }

}


執行結果








setTimeInMillis(long millis)方法 - Java日曆類別

回java日曆類別使用主頁

setTimeInMillis(long millis)方法

依給定的long值來設定目前日曆的現在時間。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample025 {

  /**
   @param args
   */
  public static void main(String[] args) {
    
    //建一個2002/5/21的日曆
    Calendar cal = Calendar.getInstance();
    cal.set(2002421)
    long millis = cal.getTimeInMillis();    
    
    //再將剛建好的日曆時戳設到新時曆cal1內
    Calendar cal1 = Calendar.getInstance();
    cal1.setTimeInMillis(millis);
    
    System.out.println("新日曆時間: "+cal1.getTime());

  }

}


執行結果








getTimeInMillis()方法 - Java日曆類別

回java日曆類別使用主頁

getTimeInMillis()方法

回傳以毫秒表示的目前日曆時間戳值。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample024 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    //以毫秒表示的目前日曆時戳
    System.out.println("目前日曆時戳: "+cal.getTimeInMillis());

  }

}


執行結果








setFirstDayOfWeek(int value)方法 - Java日曆類別

回java日曆類別使用主頁

setFirstDayOfWeek(int value)方法

設定一星期中的第一天。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample023 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    //將一星期的第一天設為「星期六」
    cal.setFirstDayOfWeek(Calendar.SATURDAY);
    System.out.print("更改後一星期的第一天: ");
    System.out.println(convertWeek(cal.getFirstDayOfWeek()));

  }
  
  /**
   * 轉換星期
   @param wk
   @return
   */
  public static String convertWeek(int wk){
    String[] aliasWeeks = new String[]
      {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
    return aliasWeeks[wk];
  }

}


執行結果








getFirstDayOfWeek()方法 - Java日曆類別

回java日曆類別使用主頁

getFirstDayOfWeek()方法

取得一星期中的第一天,例如美國是星期日、法國是星期一。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample022 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    int firstDayOfWeek = cal.getFirstDayOfWeek();
    System.out.print("目前一星期的第一天: ");
    System.out.println(convertWeek(firstDayOfWeek));
    
  }
  
  /**
   * 轉換星期
   @param wk
   @return
   */
  public static String convertWeek(int wk){
    String[] aliasWeeks = new String[]
      {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
    return aliasWeeks[wk];
  }

}


執行結果








setTimeZone(TimeZone value)方法 - Java日曆類別

回java日曆類別使用主頁

setTimeZone(TimeZone value)方法

依給定的TimeZone值來設定時區。


程式範例

package jcode.test.calendar;

import java.util.Calendar;
import java.util.TimeZone;

public class Sample021 {

  /**
   @param args
   */
  public static void main(String[] args) {
    
    //取得美國太平洋標準時間
    TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");    

    //將時區設到新的日曆
    Calendar cal = Calendar.getInstance();
    cal.setTimeZone(tz);
    
    System.out.print("新日曆時區: ");
    System.out.println(cal.getTimeZone().getDisplayName());

  }

}


執行結果








getTimeZone()方法 - Java日曆類別

回java日曆類別使用主頁

getTimeZone()方法

取得時區。


程式範例

package jcode.test.calendar;

import java.util.Calendar;
import java.util.TimeZone;

public class Sample020 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    TimeZone zone = cal.getTimeZone();
    
    System.out.println("時區: "+zone.getDisplayName());
    System.out.println("時區(ID): "+zone.getID());    

  }

}


執行結果








setTime(Date date)方法 - Java日曆類別

回java日曆類別使用主頁

setTime(Date date)方法

依給定日期值來設定目前的日曆時間。


程式範例

package jcode.test.calendar;

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class Sample019 {

  /**
   @param args
   */
  public static void main(String[] args) {
    
    //取得2003/2/13日的日期資訊
    Date date = getDate("2003/2/13""yyyy/MM/dd");
    
    //設定該日曆為2003/2/13日
    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(date);    
    System.out.println("該日曆時間: "+cal1.getTime());

  }
  
  /**
   * 將字串轉日期
   @param dateString
   @param format
   @return
   */
  public static Date getDate(String dateString, String format) {
    Locale locale = Locale.US;
    SimpleDateFormat formatter = new SimpleDateFormat(format, locale);
    ParsePosition pos = new ParsePosition(0);
    return formatter.parse(dateString, pos);
  }

}


執行結果








getTime()方法 - Java日曆類別

回java日曆類別使用主頁

getTime()方法

回傳代表目前日曆時間值的時期物件。


程式範例

package jcode.test.calendar;

import java.util.Calendar;
import java.util.Date;

public class Sample018 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    Date now = cal.getTime();
    System.out.println("現在的時間: "+now);

  }

}


執行結果








set(int year, int month, int date, int hourOfDay, int minute, int second)方法 - Java日曆類別

回java日曆類別使用主頁

set(int year, int month, int date, int hourOfDay, int minute, int second)方法

針對日曆欄位的年、月、日、時、分、秒來設定值。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample017 {

  /**
   @param args
   */
  public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
    
    //設定年、月、日、時、分的數值
    int year = 2000;
    int month = 0;
    int day = 1;
    int hour = 6
    int minute = 20;
    int second = 19;
    cal.set(year, month, day, hour, minute, second);
    
    //取得修改後的年/月/日
    int alterYear = cal.get(Calendar.YEAR);
    int alterMonth = cal.get(Calendar.MONTH);
    alterMonth = convertMonth(alterMonth);
    int alterDay = cal.get(Calendar.DAY_OF_MONTH);
    int alterHour = cal.get(Calendar.HOUR_OF_DAY);
    int alterMinute = cal.get(Calendar.MINUTE);
    int alterSecond = cal.get(Calendar.SECOND);
    System.out.println(alterYear+"/"+alterMonth+"/"+alterDay+" "
        +alterHour+":"+alterMinute+":"+alterSecond);

  }
  
  /**
   * 月份轉換方法
   @param mon
   @return
   */
  public static int convertMonth(int mon){
    int[] aliasMonth = {1,2,3,4,5,6,7,8,9,10,11,12};
    return aliasMonth[mon];
  }

}


執行結果








set(int year, int month, int date, int hourOfDay, int minute)方法 - Java日曆類別

回java日曆類別使用主頁

set(int year, int month, int date, int hourOfDay, int minute)方法

針對日曆欄位的年、月、日、時、分來設定值。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample016 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    //設定年、月、日、時、分的數值
    int year = 2000;
    int month = 0;
    int day = 1;
    int hour = 6
    int minute = 20;
    cal.set(year, month, day, hour, minute);
    
    //取得修改後的年/月/日
    int alterYear = cal.get(Calendar.YEAR);
    int alterMonth = cal.get(Calendar.MONTH);
    alterMonth = convertMonth(alterMonth);
    int alterDay = cal.get(Calendar.DAY_OF_MONTH);
    int alterHour = cal.get(Calendar.HOUR_OF_DAY);
    int alterMinute = cal.get(Calendar.MINUTE);
    System.out.println(alterYear+"/"+alterMonth+"/"+alterDay+" "+alterHour+":"+alterMinute);

  }
  
  /**
   * 月份轉換方法
   @param mon
   @return
   */
  public static int convertMonth(int mon){
    int[] aliasMonth = {1,2,3,4,5,6,7,8,9,10,11,12};
    return aliasMonth[mon];
  }

}


執行結果








set(int year, int month, int date)方法 - Java日曆類別

回java日曆類別使用主頁

set(int year, int month, int date)方法

針對日曆欄位的年、月、日來設定值。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample015 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();  
    
    //設定年、月、日的數值
    int year = 2000;
    int month = 0;
    int day = 1;
    cal.set(year, month, day);
    
    //取得修改後的年/月/日
    int alterYear = cal.get(Calendar.YEAR);
    int alterMonth = cal.get(Calendar.MONTH);
    alterMonth = convertMonth(alterMonth);
    int alterDay = cal.get(Calendar.DAY_OF_MONTH);
    System.out.println(alterYear+"/"+alterMonth+"/"+alterDay);    

  }
  
  /**
   * 月份轉換方法
   @param mon
   @return
   */
  public static int convertMonth(int mon){
    int[] aliasMonth = {1,2,3,4,5,6,7,8,9,10,11,12};
    return aliasMonth[mon];
  }

}


執行結果