常用名詞
URL:指Server所在
URI:指資源所在
resource:資源
client:客戶端,通常指"人"或"瀏覽器"。
interpret:解譯,指瀏覽器解譯HTML原始碼。
HTML:HyperText Markup Language 超文字標記語言。
HTTP:HyperText Transport Protocol 超文字傳輸協定。
tag:標籤。
status code:狀態碼,指web Server回應的狀態代碼。
request:請求。
response:回應。
just-in-time:即時。
CGI:Common Gateway Interface通用閘道介面,(Web伺服器的輔助應用程式),可以C、Python、PHP、Perl寫成,簡單說就是用來產生動態網頁的應用程式。
Servlet:JAVA寫成的Web伺服器的輔助應用程式。
2010年6月30日 星期三
2010年6月21日 星期一
spark組件排版方式等價於mx常用排版元件
此表列出在Flex3時常用的排版元件,在Flex4時如何等價使用
Canvas在Flex4中的等同用法是,使用Group組件,Goup的屬性layout給予BasicLayout類的實體。
Canvas 等價於 Group with Basicexample:
<Group>
<s:layout>
<s:BasicLayout/>
</s:layout>
//這裡置放要被排版的顯示組件
</Group>
或是
<layout="{new BasicLayout( )}">
HBox等價除了Gropu 配合 HorizontalLayout之外還有一個HGroup可以直接使用。
其餘組件皆是相同用法之。
Canvas在Flex4中的等同用法是,使用Group組件,Goup的屬性layout給予BasicLayout類的實體。
Canvas 等價於 Group with Basicexample:
<Group>
<s:layout>
<s:BasicLayout/>
</s:layout>
//這裡置放要被排版的顯示組件
</Group>
或是
<layout="{new BasicLayout( )}">
HBox等價除了Gropu 配合 HorizontalLayout之外還有一個HGroup可以直接使用。
其餘組件皆是相同用法之。
沒有等價於Spreak組件的MX組件
Flex4中若是有等價於MX的Spark組件建議優先使用,因為Spark組件將layout、style、skin抽離,使得組件更靈活,因此在Flex4使用手冊中有建議優先使用,而沒有等價於Spark組件時就繼續使用mx組件。
以下這張表列出沒有等價於Spark的mx組件表。
以下這張表列出沒有等價於Spark的mx組件表。
2010年6月18日 星期五
SWF 安全 crossdomain.xml檔
§SWF 安全性允許拜訪 crossdomain.xml
引言:
話說有一日小弟將開發好的SWF丟到公司的WebServer上,結果Remote變成無法取回資料了,一查之下才知道原來是Remote服務端沒有設置crossdomain.xml這個檔案,暫時為了測試先將crossdomain.mxl設置成允許所有網域拜訪,事後找了一下adobe的技術手冊,並將其部份整理一下做成筆記,以便日後方便使用。
crossdomain.xml的功能描述:
<?xml version="1.0" ?>
引言:
話說有一日小弟將開發好的SWF丟到公司的WebServer上,結果Remote變成無法取回資料了,一查之下才知道原來是Remote服務端沒有設置crossdomain.xml這個檔案,暫時為了測試先將crossdomain.mxl設置成允許所有網域拜訪,事後找了一下adobe的技術手冊,並將其部份整理一下做成筆記,以便日後方便使用。
crossdomain.xml的功能描述:
- 若要提供您網站伺服器的資料給另一個網域中的 SWF 檔使用,可以在伺服器中建立原則檔。「原則檔」是放置於您伺服器上特定位置中的 XML 檔,這支原則檔即是crossdomain.xml。
- 不管是SWF對SWF或是SWF對Remote gatway都必須在其拜訪所在地置放crossdomain.xml檔,以便管理允許由哪個網域來的SWF存取資料。
- 點陣圖、聲音、視訊
- XML與Text檔的載入
- SWF檔的載入
- Remote通訊
<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
簡單的解析Domain工具
§簡易解析domain的tools
在開發專案中,如果swf要提供Embed給其他網站使用,在swf內所要load動作等等的路徑就需要使用絕對路徑,但是若是直接將路徑寫死在開發環境環境中又要改來改去,所以最好的方式就是寫一個能夠解析目前swf所使用的domain為何,因此寫了一個簡單應急的小工具,日後若是有發現更好的方式或是BUG再回頭來補強該篇文章。
//寫一個簡單的工具Class
package com.utils.PathAnalyze
{
public class DomainPathAnalyze
{
/***
* 解析swf所在domain
* */
public function DomainPathAnalyze()
{
}
static public function getDomain(url:String):String
{
var count:int = url.length -1;
for(count ; url.charAt(count) != "/" ; count--)
{
}
return url.slice(0 , count);
}
}
}
//可藉由Application的loaderInfo.url取得swf所在網域,然後將此url交由DomainPathAnalyze的靜態方法來取得˙Domain
/*用法*/
DomainPathAnalyze.getDomain(loaderInfo.url);
由於成長之後學習到更好的方式因該改成以下方式將會更有效能。
static public function getDomain(url:String):String
{
var _index:int = url.lastIndex("/");
return url.slice(0 , index);
}
請參考 http://contest-start.blogspot.com/2011/03/blog-post.html
在開發專案中,如果swf要提供Embed給其他網站使用,在swf內所要load動作等等的路徑就需要使用絕對路徑,但是若是直接將路徑寫死在開發環境環境中又要改來改去,所以最好的方式就是寫一個能夠解析目前swf所使用的domain為何,因此寫了一個簡單應急的小工具,日後若是有發現更好的方式或是BUG再回頭來補強該篇文章。
//寫一個簡單的工具Class
package com.utils.PathAnalyze
{
public class DomainPathAnalyze
{
/***
* 解析swf所在domain
* */
public function DomainPathAnalyze()
{
}
static public function getDomain(url:String):String
{
var count:int = url.length -1;
for(count ; url.charAt(count) != "/" ; count--)
{
}
return url.slice(0 , count);
}
}
}
//可藉由Application的loaderInfo.url取得swf所在網域,然後將此url交由DomainPathAnalyze的靜態方法來取得˙Domain
/*用法*/
DomainPathAnalyze.getDomain(loaderInfo.url);
由於成長之後學習到更好的方式因該改成以下方式將會更有效能。
static public function getDomain(url:String):String
{
var _index:int = url.lastIndex("/");
return url.slice(0 , index);
}
請參考 http://contest-start.blogspot.com/2011/03/blog-post.html
Flex4中以mxml tags來使用top_level ActionScript elements
§Flex4中使用top_leveel ActionScript elements
在Flex3中可以使用mxml tags來使用<Array></Array>、<Number></Number>等等top_level ActionScript elements,而這top_level elements項目都是使用,xmlns:mx="http://www.adobe.com/2006/mxml的命名空間,由於並未與視覺組件命名空間做區隔,因此若是在<Application><Application>使用了top_level elents容易與視覺元件混在一起,一方面覺得使用起來能將非視覺元件標籤直接放於視覺元件標不合理,一方面也覺得很混亂,而我自己習慣上不會去使用top_level tags的用法,但是若想測是一個組件的特性這時的top_level tags到是蠻方便的。
在Flex4中top_level elements tags設計得更合理了,這些tags是置於xmlns:fx="http://ns.adobe.com/mxml/2009"命名空間,明顯的與spark、mx來做出區隔,並且無法直接放於顯示組件tags之間,而是置放於 <fx:Declarations></fx:Declarations>Tags之間使用,或是能夠接受top_level項目型別的屬性標籤之間,例如:
在Flex3中可以使用mxml tags來使用<Array></Array>、<Number></Number>等等top_level ActionScript elements,而這top_level elements項目都是使用,xmlns:mx="http://www.adobe.com/2006/mxml的命名空間,由於並未與視覺組件命名空間做區隔,因此若是在<Application><Application>使用了top_level elents容易與視覺元件混在一起,一方面覺得使用起來能將非視覺元件標籤直接放於視覺元件標不合理,一方面也覺得很混亂,而我自己習慣上不會去使用top_level tags的用法,但是若想測是一個組件的特性這時的top_level tags到是蠻方便的。
在Flex4中top_level elements tags設計得更合理了,這些tags是置於xmlns:fx="http://ns.adobe.com/mxml/2009"命名空間,明顯的與spark、mx來做出區隔,並且無法直接放於顯示組件tags之間
2010年6月15日 星期二
Flex4 Dynamic Layout
§利用Flex4的Layout特性寫一個動態更換Layout的例子
關於Flex4的Layout請參考上篇About Layout in Flex4
//動態更換layout Example
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
applicationComplete="application1_applicationCompleteHandler(event)"
layout="{new VerticalLayout()}"
>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.graphics.SolidColor;
import spark.layouts.HorizontalAlign;
import spark.layouts.HorizontalLayout;
import spark.layouts.TileLayout;
import spark.layouts.VerticalLayout;
import spark.primitives.Rect;
//排版物件參照
private var rectGroupVerLayout:VerticalLayout;
private var rectGroupHorLayout:HorizontalLayout;
private var rectGroupTileLayout:TileLayout;
//色彩存放的Array
private var _colors:Array = [0xff0000,0xffc600,0xfff605,0x00ff00,0x0000ff,0x5a2fe9,0xae2fe9];
protected function application1_applicationCompleteHandler(event:FlexEvent):void
{
//建立排版物件
rectGroupVerLayout = new VerticalLayout();
rectGroupHorLayout = new HorizontalLayout();
rectGroupTileLayout = new TileLayout();
createSevenRect();
}
關於Flex4的Layout請參考上篇About Layout in Flex4
//動態更換layout Example
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
applicationComplete="application1_applicationCompleteHandler(event)"
layout="{new VerticalLayout()}"
>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.graphics.SolidColor;
import spark.layouts.HorizontalAlign;
import spark.layouts.HorizontalLayout;
import spark.layouts.TileLayout;
import spark.layouts.VerticalLayout;
import spark.primitives.Rect;
//排版物件參照
private var rectGroupVerLayout:VerticalLayout;
private var rectGroupHorLayout:HorizontalLayout;
private var rectGroupTileLayout:TileLayout;
//色彩存放的Array
private var _colors:Array = [0xff0000,0xffc600,0xfff605,0x00ff00,0x0000ff,0x5a2fe9,0xae2fe9];
protected function application1_applicationCompleteHandler(event:FlexEvent):void
{
//建立排版物件
rectGroupVerLayout = new VerticalLayout();
rectGroupHorLayout = new HorizontalLayout();
rectGroupTileLayout = new TileLayout();
createSevenRect();
}
About Layout in Flex, 關於Flex4中 (SDK4) 的排版
§About Layout in Flex4
在Flex4中,顯示元件的動作,樣式(Style),外觀(Skin),排版(Layout)都是抽離出來成為一個類別(Class),如此做法更合乎了物件導向觀念能讓物件之間彼此更鬆散, 降低耦合,也更合乎了MVC,因此在Flex4中的顯示元件更顯得靈活好用。
標籤或是layout屬性來設定,注意在標籤中如果是小寫這代了此標籤是屬性或方法,而layout他是一個屬性。
在Flex4中,顯示元件的動作,樣式(Style),外觀(Skin),排版(Layout)都是抽離出來成為一個類別(Class),如此做法更合乎了物件導向觀念能讓物件之間彼此更鬆散, 降低耦合,也更合乎了MVC,因此在Flex4中的顯示元件更顯得靈活好用。
上圖是Layout的類別關係圖,可以看到Flex4中具有四種原生的Layout類別,而這四種Layout類別都繼承了LayoutBase,由此父類來達到超型態(superType)作用,而如果你想要製作自己的Layout工具,繼承LayoutBase來開發自訂的Layout類。
- <s:BasicLayout/> 絕對位置佈局
- <s:TileLayout/>
- <s:HorizontalLayout/> 水平排列佈局
- <s:VerticalLayout/> 垂直排列佈局
如何使用:
使用2010年6月12日 星期六
FlashBulider使用AsDoc建立API文件時發生Error loading處理
§FlashBulider使用AsDoc建立API文件時發生Error loading處理
狀況描述:
FlashBulider使用External Tools呼叫AsDoc建立API文件發生Error loading: C:\Program Files\Java\jdk1.6.0_17\jre\bin\server\jvm.dll的處理。
作業系統環境:Windows7 64
系統上具有安裝的程式開發項目:JAVA JDK 6(64位元)(JAVA的開發包) ,FlashBulider ,Flex Bulider ,Eclipse ,Ruby
錯誤訊息:
解決方式:
於External Tools介面中,切到Environment(環境),
不知道為什麼不可以使用JDK內部的JRE,而一定要外部的JRE。
狀況描述:
FlashBulider使用External Tools呼叫AsDoc建立API文件發生Error loading: C:\Program Files\Java\jdk1.6.0_17\jre\bin\server\jvm.dll的處理。
作業系統環境:Windows7 64
系統上具有安裝的程式開發項目:JAVA JDK 6(64位元)(JAVA的開發包) ,FlashBulider ,Flex Bulider ,Eclipse ,Ruby
錯誤訊息:
解決方式:
於External Tools介面中,切到Environment(環境),
- 選擇New(新增),填入以下數值
- name(變量): JRE_HOME [可以取你自己習慣的名稱]
- value(值): C:\Program File\java\jre\bin [你的Jre所在路徑]
- 選擇"將本機環境變數替換為指定環境"
- 按下Apply(應用)
- 運行,即可再次產生API文件
不知道為什麼不可以使用JDK內部的JRE,而一定要外部的JRE。
2010年6月9日 星期三
Java 編譯詳細說明與使用注意事項,package有無差很大
§Javac 與 Java 使用注意細節
今天小弟編譯時未注意package讓我莫名其妙爽爽,所以研究了一下將其寫成筆記記錄。
Setp1.建立測試資料夾結構如下
今天小弟編譯時未注意package讓我莫名其妙爽爽,所以研究了一下將其寫成筆記記錄。
Setp1.建立測試資料夾結構如下
- C:\MyProject\Classes\tw\com\test
- C:\MyProject\source
- 可善用命令列來建立
- 建立資料夾指令:md [資料夾名稱]
Setp2.於source底下建立SayHello.java檔
於C:\MyProject\source編寫如下Java Source code ,完成後存成SayHello.java檔。
- 注意此檔未使用package宣告。
- 注意不管是使用筆記本或是NotePad++來編輯,存檔格式請用ANSI,使用UTF8反而會讓中文輸出會變成亂碼。
public class SayHello
{
public static void main(String[] args)
{
System.out.println("hello 歡迎來到小J的部落格");
}
}
Step3.用javac編譯.java檔成為.class檔
小技巧:輸入命令可以善用Tab鍵來代替檔名輸入,將會快速許多。
於command line中輸入:
- C:\>cd MyProject
- C:\MyProject>cd source
- C:\MyProject\source>javac SayHello.java
如此會在source產生一個編譯好的SayHello.class於source資料夾中。
Step4.用java執行.class檔
輸入:
- C:\MyProject\source>java SayHello
- hello 歡迎來到小J的部落格
小技巧:..\其實也可以使用../代替
輸入:
- C:\MyProject\source>javac -d ..\classes SayHello.java
- C:\MyProject\source>cd.. \classes
- C:\MyProject\classes>
- C:\MyProject\classes>dir
- 如此可以看見classes資料夾中產生了一個SayHello.class
輸入:
- C:\MyProject\classes>java SayHello
輸出:
- hello 歡迎來到小J的部落格
Step6.清除掉剛剛產生的.class檔
2010年6月8日 星期二
Blazeds4 配置與Flex Remote測試 ,使用tomcat6
§Blazeds 配置與Flex Remote測試(for windows system)
找到Download,下載BlazeDS binary distribution版本
Step2.將下載回來的BlazeDS壓縮檔解壓縮
- 請先安裝JDK,請參考JDK安裝與配置。
- 安裝配置tomcat(for windows),以便運行Java於Server服務端,請參考Tomcat 安裝配置。
注意:本文使用的是tomcat6 , Blazeds 4
Step1.至Adobe Open Source取得Blazeds。
- Adobe Open Source頁面用IE開啟版面會跑掉,可以使用google瀏覽器開啟頁面。
- 點擊Release Builds底下的連結Download the latest BlazeDS Release builds進入adobe下載頁面。
- 進入後會需要登入網頁,沒有帳號向adobe註冊即可。
找到Download,下載BlazeDS binary distribution版本
- turnkey是內含了tomcat
- binary distrbution單純就只有BlazeDS
Step2.將下載回來的BlazeDS壓縮檔解壓縮
- 解壓縮後,於資料夾內會有兩隻檔案,blazeds.war 與 blazeds-bin-readme.htm。
Step3.將blazeds.war置放於tomcat底下的webapps資料夾
- 執行startup運行tomcat,該批次檔位於C:\[你的tomcat資料夾名稱]\bin\startup
- Tomcat運行中遇到.war的檔案會自動將他解壓縮,會看見在webapps底下多了一個blazeds資料夾。
問題:未自動解壓,如果tomcat未自動解壓,是因為tomcat的server.xml未配置。
解決方式:
- 編輯C:\[你的tomcat資料夾]\conf\server.xml檔。
- 於Host參數中加入deployOnStartup="true"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
- 如果你覺得麻煩也可以用解壓縮程式來解他,但tomcat如果會自動解是比較方便。
Step4.更改解壓完blazeds資料夾
- 將blazeds改成blazedsAMF
- 更改完成後應為:C:\tomcat6\webapps\blazedsAMF
- 此步驟可以不變更,依照自己的喜好習慣來決定。
Step6.於blazedsAMF\WEB-INF\src裡創建tw\com\myRemoteService的資料夾結構
- 建立好結構:
- C:\[tomcat資料夾]\webapps\blazedsAMF\WEB-INF\src\tw\com\myRemoteService
Step7.於\webapps\blazedsAMF\WEB-INF\src\tw\com\myRemoteService中建立一支SayHello.java。
Tomcat 安裝配置 for windows
§Tomcat 安裝配置 for windows
安裝tomcat前因先安裝JDK,請參考JDK安裝配置。
Step1.下載Tomcat6.x
在下載頁面中可以使用Quick Navigation的快速錨點連結到Tomcat6.x載下處
Tomcat 6.x 個版本下載連結點
32-bit/64-bit Windows Service Installer (pgp, md5),具有install方便安裝的版本。
32-bit Windows zip (pgp, md5),for 32位元 windows系統,不具install。
64-bit Windows zip (pgp, md5),for 64位元 windwos系統,不具install。
請依需求下載,本文使用32-bit Windows zip (pgp, md5)。
Stpe2:將下載完之tomcat解壓縮,並將資料夾更名為tomcat6,並將資料夾複製於C:\底下。
完成後應為: C:\tomcat6
Stpe3-1:設定環境變數 CATALINA_HOME
變數名稱:CATALINA_HOME
變數值 :C:\tomcat6
Step3-2.設定環境變數 CATALINA_BASE
Step4.StartUp Tomcat
執行結果資訊:
Stpe5.測試Tomcat運行狀況
Step6. shutdown Tomcat
Stet7.更改Http協定使用之通訊Port與編碼
再次以StartUp開啟tomcat服務。
以瀏覽器開啟http://127.0.0.1:8400/
當出現tomcat歡迎頁,代表Port更改完成。
修改編輯一些config的檔案可以使用Notepad++來代替筆記本,算是一個蠻方便的工具。
Step8.編寫一個測試的index.jsp檔
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>這是一個JSP的測試頁面</title>
<body>
<center>
現在時間<%=new java.util.Date()%>
</center>
</body>
</html>
於瀏覽器中開啟http://127.0.0.1:8400/myTestApp/index.jsp
見到以下畫面即JSP正常運作
Step9.建立WEB-INF資料夾與建立web.xml檔
於myTestApp底下建立WEB-INF資料夾,並在WEB-INF資料夾中建立一個web.xml檔。
結構如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My Web Application</display-name>
<description>
tomcat Web page Test
</description>
</web-app>
Step10.於WEB-INF底下建立classes與source兩資料夾
完成後結構為:
完成後如下結構:
package tw.com.test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletTest extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>l;<head><title>");
out.println("This is my first Servlet");
out.println("<</title></head><body>");
out.println("<h1>Hello 綾瀨遙</h1>");
out.println("</body></html>");
}
}
Step13.編譯ServletTest.java
輸入命令:
由錯誤訊息得知主要無法import javax.servlet.*與javax.servlet.http.*
Step14.新增CLASSPATH修正無法import問題
修正方式:
於原本CLASSPATH按下編輯新增以下兩個變數值
%CATALINA_HOME%\lib;%CATALINA_HOME%\lib\servlet-api.jar;
設定後CLASSPATH環境變數應為:
.;.\classes\;..\classes\;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib;%CATALINA_HOME%\lib\servlet-api.jar
Step15.再次編譯ServletTest.java
輸入命令:
此次通過編譯,可於
C:\tomcat6\webapps\myTestApp\WEB-INF\classes\tw\com\test
路徑裡看到編譯輸出的ServletTest.class檔。
Step16.再次打開編輯WEB-INF底下的web.xml檔,來登記ServletTest.class這隻檔案的映射服務。
/
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My Web Application</display-name>
<description>
tomcat Web page Test
</description>
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>tw.com.test.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/ServletTest</url-pattern>
</servlet-mapping>
</web-app>
使用瀏覽器輸入http://127.0.0.1:8400/myTestApp/ServletTest
輸出結果:
Hello,world!
資料參考於以下兩個關於Tomcat的網站
Tomcat官方網站: http://tomcat.apache.org/
Tmcat維基百科: http://zh.wikipedia.org/zh-tw/Apache_Tomcat
安裝tomcat前因先安裝JDK,請參考JDK安裝配置。
Step1.下載Tomcat6.x
- 至Tomcat官方網站點擊DownLoad底下的Tomcat 6.x開啟下載頁面。
- 點擊TomCat 6. x 以便開啟下載頁面。
- Tomcat Connectors是用來讓Tomcat與apache Server連結,也可用來做Load Balancing。
- Documentation相關於Tomcat的使用文件。
在下載頁面中可以使用Quick Navigation的快速錨點連結到Tomcat6.x載下處
Tomcat 6.x 個版本下載連結點
32-bit/64-bit Windows Service Installer (pgp, md5),具有install方便安裝的版本。
32-bit Windows zip (pgp, md5),for 32位元 windows系統,不具install。
64-bit Windows zip (pgp, md5),for 64位元 windwos系統,不具install。
請依需求下載,本文使用32-bit Windows zip (pgp, md5)。
Stpe2:將下載完之tomcat解壓縮,並將資料夾更名為tomcat6,並將資料夾複製於C:\底下。
完成後應為: C:\tomcat6
Stpe3-1:設定環境變數 CATALINA_HOME
- 打開環境變數設定變板:
- 新增系統變數CATALINA_HOME:
變數名稱:CATALINA_HOME
變數值 :C:\tomcat6
Step3-2.設定環境變數 CATALINA_BASE
- 新增系統變數CATALINA_BASE
變數名稱:CATALINA_BASE
變數值 :C:\tomcat6
Step4.StartUp Tomcat
- 進入C:\tomcat6\bin底下,執行startup.bat批次檔,讓tomcat運行。
- 檔案所在:C:\tomcat6\bin\startup
執行結果資訊:
- Starting Coyte HTTP/1.1 on http-8080,這是目前tomcat預設的Http協定走的Port 為8080,稍後我們再來變更config。
- Starting Coyte AJP/1.3 ,這是連接器使用的通訊協定跟Port,是用來與apache連接的通訊方式。
Stpe5.測試Tomcat運行狀況
- 在瀏覽器中輸入http://127.0.0.1:8080/ ,測試tomcat運作與否。
- 若Tomcat已運行,會開啟如下畫面。
Step6. shutdown Tomcat
- 進入C:\tomcat6\bin底下,執行shutdown .bat批次檔,讓tomcat關閉服務。
- 檔案所在:C:\tomcat6\bin\shutdown
- 再次用瀏覽器開啟http://127.0.0.1:8080 ,將無法開啟tomcat歡迎頁面
Stet7.更改Http協定使用之通訊Port與編碼
- 打開C:\tomcat6\conf下的server.xml
- 檔案所在:C:\tomcat6\conf\server.xml
找到如:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
將port="8080" 改成port="8400"
<Connector port="8400" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
再次以StartUp開啟tomcat服務。
以瀏覽器開啟http://127.0.0.1:8400/
當出現tomcat歡迎頁,代表Port更改完成。
修改編輯一些config的檔案可以使用Notepad++來代替筆記本,算是一個蠻方便的工具。
Step8.編寫一個測試的index.jsp檔
- 於webapps中建立一個myTestAPP資料夾,路徑結構如下
- C:\tomcat6\webapps\myTestApp
- 使用Notepad++建立一個空白的index.jsp檔,編碼格式選擇編譯成UTF-8(檔頭無BOM),先行存檔。
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>這是一個JSP的測試頁面</title>
<body>
<center>
現在時間<%=new java.util.Date()%>
</center>
</body>
</html>
於瀏覽器中開啟http://127.0.0.1:8400/myTestApp/index.jsp
見到以下畫面即JSP正常運作
Step9.建立WEB-INF資料夾與建立web.xml檔
於myTestApp底下建立WEB-INF資料夾,並在WEB-INF資料夾中建立一個web.xml檔。
結構如下:
- C:\tomcat6\webapps\myTestApp\WEB-INF\web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My Web Application</display-name>
<description>
tomcat Web page Test
</description>
</web-app>
Step10.於WEB-INF底下建立classes與source兩資料夾
完成後結構為:
- C:\tomcat6\webapps\myTestApp\WEB-INF\classes
- C:\tomcat6\webapps\myTestApp\WEB-INF\source
完成後如下結構:
- C:\tomcat6\webapps\myTestApp\WEB-INF\classes\tw\com\test
package tw.com.test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletTest extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>l;<head><title>");
out.println("This is my first Servlet");
out.println("<</title></head><body>");
out.println("<h1>Hello 綾瀨遙</h1>");
out.println("</body></html>");
}
}
Step13.編譯ServletTest.java
輸入命令:
- C:\tomcat6\webapps\myTestApp\WEB-INF\source>javac -d ../classes ServletTest.java
由錯誤訊息得知主要無法import javax.servlet.*與javax.servlet.http.*
Step14.新增CLASSPATH修正無法import問題
修正方式:
於原本CLASSPATH按下編輯新增以下兩個變數值
%CATALINA_HOME%\lib;%CATALINA_HOME%\lib\servlet-api.jar;
設定後CLASSPATH環境變數應為:
.;.\classes\;..\classes\;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib;%CATALINA_HOME%\lib\servlet-api.jar
Step15.再次編譯ServletTest.java
輸入命令:
- C:\tomcat6\webapps\myTestApp\WEB-INF\source>javac -d ../classes ServletTest.java
此次通過編譯,可於
C:\tomcat6\webapps\myTestApp\WEB-INF\classes\tw\com\test
路徑裡看到編譯輸出的ServletTest.class檔。
Step16.再次打開編輯WEB-INF底下的web.xml檔,來登記ServletTest.class這隻檔案的映射服務。
/
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My Web Application</display-name>
<description>
tomcat Web page Test
</description>
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>tw.com.test.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/ServletTest</url-pattern>
</servlet-mapping>
</web-app>
使用瀏覽器輸入http://127.0.0.1:8400/myTestApp/ServletTest
輸出結果:
Hello,world!
資料參考於以下兩個關於Tomcat的網站
Tomcat官方網站: http://tomcat.apache.org/
Tmcat維基百科: http://zh.wikipedia.org/zh-tw/Apache_Tomcat
2010年6月7日 星期一
Flash AMFPHP Remote 測試範例
§使用NetConnection來做AMF Remote
example:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
private var _btnEnable:Boolean;
private function init():void
{
_btnEnable = true;
initNetConnection();
}
private var _nc:NetConnection;
private function initNetConnection():void
{
_nc = new NetConnection();
//回呼處理物件
_nc.client = this;
//序列化格式指定
_nc.objectEncoding = ObjectEncoding.AMF3;
//指定AMFServer服務位置
_nc.connect(amfServerUri);
_nc.addEventListener(NetStatusEvent.NET_STATUS , onStatus);
}
private var amfServerUri:String="http://127.0.0.1/flashservices/gateway.php";
private var _source:String = "tw.remote.test.Hello.sayHello";
- 範例雖是Flex撰寫,但由於使用NetConnection來做Remote連線,所以Flash也適用。
example:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application applicationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
private var _btnEnable:Boolean;
private function init():void
{
_btnEnable = true;
initNetConnection();
}
private var _nc:NetConnection;
private function initNetConnection():void
{
_nc = new NetConnection();
//回呼處理物件
_nc.client = this;
//序列化格式指定
_nc.objectEncoding = ObjectEncoding.AMF3;
//指定AMFServer服務位置
_nc.connect(amfServerUri);
_nc.addEventListener(NetStatusEvent.NET_STATUS , onStatus);
}
private var amfServerUri:String="http://127.0.0.1/flashservices/gateway.php";
private var _source:String = "tw.remote.test.Hello.sayHello";
embed SWF 實做,與問題
開發中遇到問題,先記錄起來,日後研究查詢資料後補上
在embed,SWF時,該SWF至於A網域中,而其他網域Web Server上.html頁面使用HTML標籤embed
SWF,在開發環境可以相對位置使用,但若置於web Server上就必須使用絕對位置,不然會產生,位置錯誤,如A網域中還同時置放了組態xml要給予swf使用,但由於相對位置關係,embed在B網域的swf會變成去讀取B網域中的xml,這樣就會發生錯誤情型。
詢問得知,若要開放embed的swf,xml內的資料須寫入swf,因為若是以絕對位置,會造成難以用網域來做安全管理,若是不開放就把xml寫出來,用動態載入,這樣的確也會因為安全性問題,讓有心人無法embed。
在remote端的server,或是swf想尋訪不同網域的地方都需要一個編輯一個crossdomain.xml,置放於服務server上,如此才能讓swf跨往訪問,可以用來控管不想要的網域連結
-
-
在embed,SWF時,該SWF至於A網域中,而其他網域Web Server上.html頁面使用HTML標籤embed
SWF,在開發環境可以相對位置使用,但若置於web Server上就必須使用絕對位置,不然會產生,位置錯誤,如A網域中還同時置放了組態xml要給予swf使用,但由於相對位置關係,embed在B網域的swf會變成去讀取B網域中的xml,這樣就會發生錯誤情型。
詢問得知,若要開放embed的swf,xml內的資料須寫入swf,因為若是以絕對位置,會造成難以用網域來做安全管理,若是不開放就把xml寫出來,用動態載入,這樣的確也會因為安全性問題,讓有心人無法embed。
在remote端的server,或是swf想尋訪不同網域的地方都需要一個編輯一個crossdomain.xml,置放於服務server上,如此才能讓swf跨往訪問,可以用來控管不想要的網域連結
-
-
2010年6月6日 星期日
Flex 動態CSS , 動態Style ,利用StyleManager
§使用StyleManager來動態更換CSS檔(動態更換Skin)
以下將簡單表示動態更換Flex的CSS,在CSS中若有設定組件使用swf即達到動態更換Skin
Step1.在Flex專案,於Src底下建立一個css資料夾(packge)。
Step2.建立如下兩個CSS測試檔,取名為projectA.css與projectB.css。
//projectA
/* CSS file */
Panel{
borderColor: #009966;
}
//projectB
/* CSS file */
Panel{
borderColor: #0066ff;
}
Step3.於CSS檔上按下滑鼠右鍵,選擇Compile CSS to SWF將兩隻CSS,Compile成SWF。
Setep4.建立以下mxml測試檔
以下將簡單表示動態更換Flex的CSS,在CSS中若有設定組件使用swf即達到動態更換Skin
Step1.在Flex專案,於Src底下建立一個css資料夾(packge)。
Step2.建立如下兩個CSS測試檔,取名為projectA.css與projectB.css。
//projectA
/* CSS file */
Panel{
borderColor: #009966;
}
//projectB
/* CSS file */
Panel{
borderColor: #0066ff;
}
Step3.於CSS檔上按下滑鼠右鍵,選擇Compile CSS to SWF將兩隻CSS,Compile成SWF。
Setep4.建立以下mxml測試檔
2010年6月4日 星期五
JAVA JDK 安裝與測試
§JAVA JDK 安裝與測試 For Winsows
至SunJAVA官方網頁下載JDK,JDK下載頁面。
●選擇JDK下載
下載Java Platform, Standard Edition版本,點擊JAVA圖示或Download JDK進入下載選擇頁面。
●選擇版本支援平台
●點擊檔案開始下載
下載頁中,點擊jdk-6u20-windows-i586.exe下載檔案。
至SunJAVA官方網頁下載JDK,JDK下載頁面。
●選擇JDK下載
下載Java Platform, Standard Edition版本,點擊JAVA圖示或Download JDK進入下載選擇頁面。
●選擇版本支援平台
1.選擇Windows或Windows64
2.點擊Download下載,會彈出一個登入視窗,
可以直接關掉進入下載頁面。
●點擊檔案開始下載
下載頁中,點擊jdk-6u20-windows-i586.exe下載檔案。
2010年6月1日 星期二
AMFPHP Flex Remote
§Flex AMFPHP Remote測試
承下兩篇安裝
本文環境會如下
一、本文目前配置環境
OS : Windows XP
WebServer : Apache 2.2
PHP : PHP5.2 (本來使用5.3,發生回呼錯誤,先降為5.2待查5.3 bug)。
DataBase : MySQL 5.1
二、本文上個別系統配置資料夾
Apache的DocumentRoot : C:\Web Site,即網站資料夾,對應URL就是(本機上)Http://localhost/。AMFPHP1.9依官方建議資料夾改名為flashservices置放於C:\Web Site\flashservices。
Step1.建立資料夾
於AMFPHP Remote服務所在路徑 flashservices\services\amfphp新增資料夾結構為 tw\remote\test,新增完畢你會有如下路徑結構 flashservices\services\amfphp\tw\remote\test。
Step2.建立一個Server端回呼程式
1.編輯一個Hello.php檔如下,編輯完存放於flashservices\services\amfphp\tw\remote\test。
2.可以使用notepad++工具來代替筆記本做簡單編輯。
//Server端回呼程式
//請用手打,記得存成UTF-8,若用notepad++在編碼選項中,還可選擇是否檔頭要含BOM。
<?php
class Hello
{
public function sayHello($name = null)
{
return "Hi $name wellcome JBlog!";
}
}
?>
承下兩篇安裝
本文環境會如下
一、本文目前配置環境
OS : Windows XP
WebServer : Apache 2.2
PHP : PHP5.2 (本來使用5.3,發生回呼錯誤,先降為5.2待查5.3 bug)。
DataBase : MySQL 5.1
二、本文上個別系統配置資料夾
Apache的DocumentRoot : C:\Web Site,即網站資料夾,對應URL就是(本機上)Http://localhost/。AMFPHP1.9依官方建議資料夾改名為flashservices置放於C:\Web Site\flashservices。
- 網站資料夾建議改成webSite,不要有空白比較好,若修改記得去修改apache的httpd.conf檔。
Step1.建立資料夾
於AMFPHP Remote服務所在路徑 flashservices\services\amfphp新增資料夾結構為 tw\remote\test,新增完畢你會有如下路徑結構 flashservices\services\amfphp\tw\remote\test。
Step2.建立一個Server端回呼程式
1.編輯一個Hello.php檔如下,編輯完存放於flashservices\services\amfphp\tw\remote\test。
2.可以使用notepad++工具來代替筆記本做簡單編輯。
//Server端回呼程式
//請用手打,記得存成UTF-8,若用notepad++在編碼選項中,還可選擇是否檔頭要含BOM。
<?php
class Hello
{
public function sayHello($name = null)
{
return "Hi $name wellcome JBlog!";
}
}
?>
訂閱:
文章 (Atom)