2010年9月14日 星期二

如何拿到URL的Query String

參考:由GlobalContext可以拿到的值:http://www.projectzero.org/sMash/1.1.x/docs/zero.devguide.doc/zero.core/GlobalContextReference.html

用sMash開發RestFul Service時,也可以在Request中帶上query string,呼叫的方法如下:

http://localhost:8080/basic_info/?abc

在上述的例子中,? 後面的東西就會被當作  query string。

檢視zero.config的設定(如下),表示所有URL是 /basic_info/xxx的東西,都會被送交Test.class這個handeler來處理。

# HTTP port (default is 8080)

/config/http/port = 8080

# Runtime mode (default is "production")

/config/runtime/mode="development"

/config/handlers +=[{

    "events":"GET",

    "handler":"Test.class",

    "conditions":"/request/path=~/basic_info/(.*)?"

}]

再檢視Test.class這個class

import java.io.PrintWriter;
   import zero.core.context.GlobalContext;

public class Test {
    public void onGET(){
        PrintWriter writer = (PrintWriter) GlobalContext.zget("/request/writer");
        String uri = (String) GlobalContext.zget("/request/queryString");
        writer.println("Hello World!");
        writer.println(uri);
    }
}

其中,GlobalContext.zget("/request/writer")這個方法目的為從GlobalContext拿到 Writer;而GlobalContext.zget("/request/queryString");則是從GlobalContext拿到queryString(即?之後的東西)。

啟動 sMash後,輸入連結http://localhost:8080/basic_info/?abc 可得到

Hello World! abc

沒有留言:

張貼留言