隨筆-22  評論-8  文章-0  trackbacks-0
           
               摘要: 對于SOCKET在這里我不想究其歷史,我只想說其時它是一種進程通訊的方式,簡言之就是調用這個網絡庫的一些API函數就能實現分布在不同主機的相關進程之間的數據交換.
          SOCKET中首先我們要理解如下幾個定義概念:

          一是IP地址:IP Address我想很容易理解,就是依照TCP/IP協議分配給本地主機的網絡地址,就向兩個進程要通訊,任一進程要知道通訊對方的位置,位置如何來確定,就用對方的IP

          二是端口號:用來標識本地通訊進程,方便OS提交數據.就是說進程指定了對方進程的網絡IP,但這個IP只是用來標識進程所在的主機,如何來找到運行在這個主機的這個進程呢,就用端口號.

          三是連接:指兩個進程間的通訊鏈路.

          四是半相關:網絡中用一個三元組可以在全局唯一標志一個進程:
          (協議,本地地址,本地端口號)這樣一個三元組,叫做一個半相關,它指定連接的每半部分。   閱讀全文
          posted @ 2011-06-27 10:46 Hukin 閱讀(202) | 評論 (0)編輯 收藏
          在網頁中書寫相對路徑: 使用被引用文檔或素材相對于當前頁面的相對路徑,例如,在網頁“/home/www/a/index.htm”引用素材“/home/www/a/images/a.jpg”,其相對路徑應該是“./images/a.jpg”或“images/a.jpg”。 
          在JS文件中書寫相對路徑:JS文件是指在頁面中引用的外部JavaScript文件,其中可能采用JavaScript代碼生成html代碼,由于生成的html代碼是嵌入在引用該JS文件的頁面中,因此,在描述相對路徑時,應該使用被引用的文檔或素材相對于引用JS文件的頁面之間的相對路徑。例如,文檔“/home/www/a/index.htm”中引用了JS文件“/home/www/a/js/hello.js”,而在該js中生成一段引用素材“/home/www/a/images/1.jpg”的html代碼,則在這段代碼中,其相對路徑應該是“./images/1.jpg”或“images/1.jpg”,而不能是“../images/1.jpg”。 
          在CSS文件中書寫相對路徑:CSS文件是指在頁面中引用的外部樣式定義文件,該文件通常用于定義頁面中各種html標記的顯示效果(例如文本的字體名稱、字體大小、縮進、邊距等),CSS文件中同樣可以引用外部的素材或文檔(例如設置某個DIV對象的背景圖片)。和JS文件不同,瀏覽器認為CSS文件也是一個獨立的文檔,因此,在CSS中對素材的引用可以通過計算素材文件和該CSS文件之間的相對路徑來實現,而與引用該CSS文件的頁面所在的位置無關。例如,文檔“/home/www/a/index.htm”中引用了CSS文件“/home/www/a/css/main.css”,而在該CSS中引用了素材“/home/www/a/images/1.jpg”,則在CSS中對于該素材引用的相對路徑應該是“../images/1.jpg”,而不能是“./images/1.jpg”或“images/1.jpg”。 
          在Flash中書寫相對路徑:Flash用于表現網頁中的某些動態效果,使用Flash的網頁往往更美觀,交互性更強。在Flash文件中,同樣可以引用外部的素材(例如,使用Flash制作一個精美的相冊),那么,應該如何在Flash中使用相對路徑引用外部素材呢?與JS文件類似,瀏覽器也不認為Flash文件是一個獨立的文檔,而是認為其是一個嵌入在頁面內的素材,因此,在Flash文件中引用素材時,同樣應該使用被引用的素材和嵌入Flash的html頁面之間的相對路徑。例如,文檔“/home/www/a/index.htm”中引用了Flash文件“/home/www/a/swf/main.swf”,而該Flash中引用了素材“/home/www/a/images/1.jpg”,則正確的相對路徑是“./images/1.jpg”或“images/1.jpg”,而不是“../images/1.jpg”。
          posted @ 2011-06-24 09:30 Hukin 閱讀(914) | 評論 (0)編輯 收藏
               摘要: Embed
          (一)、基本語法:
          embed src=url
          說明:embed可以用來插入各種多媒體,格式可以是 Midi、Wav、AIFF、AU、MP3等等,
          Netscape及新版的IE 都支持。url為音頻或視頻文件及其路徑,可以是相對路徑或絕對路徑。
          示例:

          (二)、屬性設置:
          1、自動播放:
          語法:autostart=true、false
          說明:該屬性規定音頻或視頻文件是否在下載完之后就自動播放。
          true:音樂文件在下載完之后自動播放;
          false:音樂文件在下載完之后不自動播放。
          示例:


          2、循環播放:  閱讀全文
          posted @ 2011-06-23 14:14 Hukin 閱讀(174) | 評論 (0)編輯 收藏
               摘要:   閱讀全文
          posted @ 2011-06-16 16:45 Hukin 閱讀(6756) | 評論 (0)編輯 收藏
          1.將數據庫驅動程序的JAR文件放在Tomcat的 common/lib 中;

          2.在server.xml中設置數據源,以MySQL數據庫為例,如下:
          在<GlobalNamingResources> </GlobalNamingResources>節點中加入,
                <Resource
                name="jdbc/DBPool"
                type="javax.sql.DataSource"
                password="root"
                driverClassName="com.mysql.jdbc.Driver"
                maxIdle="2"
                maxWait="5000"
                username="root"
                url="jdbc:mysql://127.0.0.1:3306/test"
                maxActive="4"/>
             屬性說明:name,數據源名稱,通常取”jdbc/XXX”的格式;
                      type,”javax.sql.DataSource”;
                      password,數據庫用戶密碼;
                      driveClassName,數據庫驅動;
                      maxIdle,最大空閑數,數據庫連接的最大空閑時間。超過空閑時間,數據庫連
                               接將被標記為不可用,然后被釋放。設為0表示無限制。
                      MaxActive,連接池的最大數據庫連接數。設為0表示無限制。
                      maxWait ,最大建立連接等待時間。如果超過此時間將接到異常。設為-1表示
                               無限制。

          3.在你的web應用程序的web.xml中設置數據源參考,如下:
            在<web-app></web-app>節點中加入,
            <resource-ref>
              <description>MySQL DB Connection Pool</description>
              <res-ref-name>jdbc/DBPool</res-ref-name>
              <res-type>javax.sql.DataSource</res-type>
              <res-auth>Container</res-auth>
              <res-sharing-scope>Shareable</res-sharing-scope>
           </resource-ref>
            子節點說明: description,描述信息;
                         res-ref-name,參考數據源名字,同上一步的屬性name;
                         res-type,資源類型,”javax.sql.DataSource”;
                         res-auth,”Container”;
                         res-sharing-scope,”Shareable”;

          4.在web應用程序的context.xml中設置數據源鏈接,如下:
            在<Context></Context>節點中加入,
            <ResourceLink
             name="jdbc/DBPool" 
             type="javax.sql.DataSource" 
             global="jdbc/DBPool"/>
             屬性說明:name,同第2步和第3步的屬性name值,和子節點res-ref-name值;
                       type,同樣取”javax.sql.DataSource”;
                       global,同name值。
           
          至此,設置完成,下面是如何使用數據庫連接池。
          1.建立一個連接池類,DBPool.java,用來創建連接池,代碼如下:
          import javax.naming.Context;
          import javax.naming.InitialContext;
          import javax.naming.NamingException;
          import javax.sql.DataSource;

          public class DBPool {
              private static DataSource pool;
              static {
                   Context env = null;
                    try {
                        env = (Context) new InitialContext().lookup("java:comp/env");
                        pool = (DataSource)env.lookup("jdbc/DBPool");
                        if(pool==null) 
                            System.err.println("'DBPool' is an unknown DataSource");
                         } catch(NamingException ne) {
                            ne.printStackTrace();
                    }
                }
              public static DataSource getPool() {
                  return pool;
              }
          }

          2.在要用到數據庫操作的類或jsp頁面中,用DBPool.getPool().getConnection(),獲得一個Connection對象,就可以進行數據庫操作,最后別忘了對Connection對象調用close()方法,注意:這里不會關閉這個Connection,而是將這個Connection放回數據庫連接池。
          posted @ 2011-06-14 15:06 Hukin 閱讀(172) | 評論 (0)編輯 收藏
          郁悶!為了在MyEclipse配置Tomcat 服務器,竟然弄了我幾乎一個上午,也沒弄成功,最后才注意到本該早注意到Tomcat 5.x還有個JDK這個東東,才成功了。一上午辛辛苦苦也沒解決就是因為沒注意到他害的,其實配置是很簡單的。下面是其步驟:
            一、單擊工具欄的的黑小三角或者單擊 菜單欄窗口—>首選項,出現首選項對話框,在對話框的左邊框中找到MyEclipse—>Application Servers下找到Tomcat選項,如下圖,
          二、根據自己的Tomcat版本選擇相應的Tomcat選項(我的是5.0版本),然后在對話框右側的Tomcat home directory選項選擇Tomcat的安裝目錄,下面的Tomcat base directory和Tomcat temp directory系統會自動為你填上,Optional  program arguments可以不用填,我也不知道這是做什么用的,再選上Enable選項,要不然在待會兒在Server中看不到Tomcat服務器
          三、千萬別忘了Tomcat 選項下面的JDK,我就是因為沒注意到它才一直不成功,單擊JDK,彈出如下對話框,
          Notes會提示你怎么做,
          四、點擊Tomcat JDK name旁的"Add",彈出如下對話框:
          JRE名稱(N)選項填上名字(可以隨便取),在JRE主目錄選項選擇你的jdk安裝目錄(僅僅只是jdk,不包含jre),JRE系統庫系統會自動添加,缺省JVM參數可以不用填,按“確定”回到上級再按“確定”就OK了。
          如果你配置的不對的話會彈出出錯提示對話框
          就是Notes提示的第一條。
          五、回到MyEclipse主界面,在Server下多了個Tomcat選項,右鍵單擊Tomcat,選擇Mannage Deployment(如果你不配置的話等一下你是運行不了項目的),彈出Srever Deployments對話框,在Server選項上選擇你剛剛配置的Tomcat服務,點擊"Add",彈出New Deployment對話框,
          在Project上選擇你要運行的項目,單擊“完成”返回上一級按“確定”就可以了。
            最后啟動Tomcat服務器,在Web Browser輸入地址,到這里就大功告成了。
          是不是發現原來很簡單呢!
          提醒一下,在New Deployment對話框中的Packaged Archive選項是把項目打包成.war形式運行的。
            剛開始是因為MyEclipse自帶的Derby不會用,才去配置Tomcat的,等Tomcat配置成功后,也就明白怎么用Derby了,其實很簡單,配置都不用你去配,系統已經幫你配好了,你只要啟動它就行了。
          只是感覺MyEclipse這方面沒Lomboz—Elipse那么方便,只要在想要執行的jsp文件上選擇“Run on Server”就行了,在MyEclipse下不行
          posted @ 2011-06-14 14:49 Hukin 閱讀(316) | 評論 (0)編輯 收藏

          比如:在網上書店應用中,從一個客戶開始購物,到最后結賬,整個過程是一個Session.
          Servlet API中定義了javax.servlet.http.HttpSession接口,Servlet容器必須實現這一接口。當一個Session開始時,Servlet容器將創建一個HttpSession對象,在HttpSession對象中可以存放客戶狀態的信息。Servelt容器為HttpSession分配一個唯一標識符,稱為Session ID.Servlet容器把Session ID作為Cookie保存在客戶的瀏覽器中。每次客戶發出HTTP請求時,Servlet容器可以從HttpRequest對象中讀取Session ID,然后根據SessionID找到相應的HttpSession對象,從而獲取客戶的狀態信息。
          HttpSession接口中的方法:
          getId():返回Session的ID;
          invalidate():使當前的Session失效,Servlet容器會釋放HttpSession對象占用的資源。
          setAttribute(String name,Object value):將一對name/Value屬性保存在HttpSession對象中
          getAttribut(String name):根據name參數返回保存在HttpSession對象的屬性值。
          getAttributeNames():以數組的方式HttpSession對象中所有的屬性名。
          isNew():判斷是否是新創建的Session,如果是新創建的Session,返回true,否則返回false
          setMaxInactiveInterval():設定一個Session可以處于不活動狀態的最大時間間隔,以秒為單位。如果超過這個時間。Session自動失效,如果設置為負數,表示不限制Session付出與不活動狀態的時間。
          getMaxInactiveInterval()讀取當前Sessions可以處于不活動狀態的最大時間間隔。
          在Java Servlet API中提出了跟蹤Session的另一種機制,如果客戶瀏覽器不支持Cookie,Servlet容器可以重寫客戶請求的URL,吧Session ID添加到URL信息中。
          HttpServletResponse接口提供了重寫URL的方法:
          public java.lang.String encodeURL(java.lang.String url)
          該方法的實現機制為:
          先判斷當前的Web組件是否啟用Session,如果沒有啟用Session,例如在JSP中聲明
          <%@ page session="false"%>或者已經執行了session.invalidate()方法,那么直接返回參數URL
          再判斷客戶瀏覽器是否支持Cookie,如果支持Cookie,就直接返回參數URL;如果不支持,就在參數URL中加入Session ID信息,然后返回修改后的URL.

          String username1 = "";  (username1 為自定義的字段,從數據庫中取出值后放到里面)
          request.getSession().setAttribute("username",username1);            
           從request里得到session在把值傳進去,不過這種方法可以將從數據庫里取得的數據用session顯示于頁面,但當在頁面點擊按鈕產生別的action的時候,取出來顯示在頁面的數據就都沒了,原來是request的生命周期是一個請求,當另外一個請求發生時,原來action中的request的值沒重置了,也就是說原來的數據都沒了,所以在頁面也不會顯示.這時候要將原來action中的request.getSession().setAttribute("username",username1);  
          改為HttpSession session = request.getSession();   session.setAttribute("username",username1);這時候傳到頁面的生命周期就是一個會話,即使你在頁面有別的請求,但session中的值依然存在.

          posted @ 2011-06-14 10:40 Hukin 閱讀(378) | 評論 (0)編輯 收藏

          本文檔提供關于Tomcat的基礎信息.主要內容如下:
          Tomcat二進制版本安裝
          與Tomcat相關的腳本的主要內容
          與server.xml相關的主要內容,Tomcat的主要配置文件
          如何設置Tomcat與宿主web服務器一起工作的說明
          如何應用Tomcat配置一個現實中的web站點
          希望此文檔足以使新用戶可以開始使用Tomcat.如找不到某方面的內容請(按以下順序)
          查找Tomcat faq
          查找Tomcat包清單
          向Tomcat用戶郵件列表發出問題
          如此疑問的答案不存在,我們鼓勵把對疑問的解答放入Tomcat faq或此文檔.如對此文檔有意見或建議,請發送到Tomcat的郵件列表.

          Getting Started
          Tomcat是一個帶有jsp環境的servlet容器.servlet容器是一個根據用戶的行為可以管理和激活servlet的運行時的shell.
          粗略地可以將servlet容器分為如下幾類:

          獨立的servlet容器
          內置有web服務器的一部分.指當使用基于Java的web服務器的情形,例如servlet容器是JavaWebServer的一個部分. 獨立的servlet容器是Tomcat的默認模式.
          大多數的web服務器并非基于Java,因此,我們可以得出如下兩種容器的模式.

          進程內的servlet容器
          servlet容器作為web服務器的插件和Java容器的實現.Web服務器插件在內部地址空間打開一個JVM(java virtual machine)使Java容器得以在內部運行.如有某個需要調用servlet的請求,,插件將取得對此請求的控制并將他傳遞(使用JNI)給Java容器.進程內容器對于多線程,單進程的服務器非常合適并且提供很好的運行速度,但伸縮性有所不足.

          進程外的servlet容器
          servlet容器運行于web服務器之外的地址空間且作為web服務器的插件和Java容器的實現的結合.web服務器插件和Java容器 JVM使用IPC機制(通常是TCP/IP)進行通訊.當一個調用servlet的請求到達時,插件將取得對此請求的控制并將其傳遞(使用IPC等)給Java容器,進程外容器的反應時間或進程外容器引擎不如進程內容器,但進程外容器引擎在許多其他可比的范圍內更好(伸縮性,穩定性等).
          Tomcat既可作為獨立的容器(主要是用于開發與調試)又可作為對現有服務器的附加(當前支持Apache,IIS和Netscape服務器).即任何時候配置Tomcat你都必須決定如何應用他,如選擇第二或第三種模式,你還需要安裝一個web服務器接口.

          Tomcat與Jserv有何區別?Tomcat是Jserv嗎?
          這是個常見的誤解.Jserv是Servlet API2.0兼容并與Apache一起使用的容器.Tomcat是一個完全重寫的并與Servlet API2.2和JSP1.1兼容的容器.
          Tomcat使用了一些為Jserv而寫的代碼,特別是Jserv的Apache接口,但這是唯一的相同之處.

          怎樣安裝Tomcat的二進制版本?
          非常簡單,只需:
          下載 zip/tar.gz 任何壓縮文件,從http://jakarta.apche.org/download/binindex.html處.
          解壓縮此文件到某目錄(如:foo).將會生成一子目錄,名為”tomcat”.
          轉換到”tomcat”目錄設置一新的環境變量(TOMCAT_HOME)指向你安裝的tomcat的目錄
          WIN32平臺,鍵入:
          “set TOMCAT_HOME=foo\tomcat”
          Unix平臺:
          如是bash/sh環境, 鍵入:”TOMCAT_HOME=foo/tomcat;export TOMCAT_HOME”
          如是tcsh環境, 鍵入:”setenv TOMCAT_HOME foo/tomcat”
          設置環境變量JAVA_HOME指向你JDK的目錄,然后添加JAVA解釋器到你的PATH環境變量.
          好了!現在可以運行TOMCAT并作為一個獨立的Servlet容器(模式一)

          啟動與關閉Tomcat
          使用”bin”目錄中的腳本啟動與關閉Tomcat.
          啟動:
          uinx:bin/startup.sh
          win32:bin\startup
          關閉:
          unix:bin/shutdown.sh
          win32:bin\shutdown

          Tomcat目錄結構
          假設你已將Tomcat解壓,你已得到下列目錄結構:
          目錄名--描述 
          bin 
          包含啟動/關閉腳本 
          conf 
          包含不同的配置文件,
          包括 server.xml(Tomcat的主要配置文件)和為不同的Tomcat配置的web應用設置缺省值的文件web.xml
          doc
          包含各種Tomcat文檔 
          lib 
          包含Tomcat使用的jar文件.unix平臺此目錄下的任何文件都被加到Tomcat的classpath中 
          logs 
          Tomcat擺放日志文件的地方 
          src 
          ServletAPI源文件.先別高興,這些只有些必須在Servlet容器內實現的空接口和抽象類 
          webapps 
          包含web項目示例 
          此外你可以Tomcat會創建如下目錄:
          work
          Tomcat自動生成,放置Tomcat運行時的臨時文件(如編譯后的JSP文件).如在Tomcat運行時刪除此目錄.JSP頁面將不能運行.
          classes
          你可以創建此目錄來添加一些附加的類到類路徑中.任何你加到此目錄中的類都可在Tomcat的類路徑中找到自身.
          Tomcat的腳本
          Tomcat是一個Java程序,因此在設置好幾個環境變量后即可用命令行的方式運行.然而設置Tomcat使用的每個環境變量和如下的命令行參數乏味且易錯.因此,Tomcat開發組提供了一些腳本使啟動和關閉Tomcat變得輕松.
          注意:這些腳本僅僅是個便利的方法去啟動和關閉Tomcat.你可修改他們來定制CLASSPATH,環境變量如PATH,LD_LIBRARY_PATH,等等,只要是生成一個正確的命令行即可.
          這些腳本是什么呢?下表列出對一般用戶最重要的腳本.
          tomcat 
          主腳本.設置合適的環境變量,包括CLASSPATH,TOMCAT_HOME和JAVA_HOME和用適合的命令行參數啟動Tomcat 

          startup 
          在后臺啟動Tomcat.”tomcat start”命令的替換方式 

          shutdown 
          關閉Tomcat.”tomcat stop”命令的替換方式 

          對用戶最重要的腳本是tomcat(tomcat.bat/tomcat.sh).其他Tomcat相關的腳本作為一個簡單的面向單任務的指向Tomcat腳本(設置不同的命令行參數等)的入口.


          仔細考察tomcat.bat/tomcat.sh,它按以下步驟運行:

          在Unix下的步驟:
          如未指定,推測 TOMCAT_HOME
          如未指定,推測 JAVA_HOME

          設置CLASS_PATH包含:
          1.${TOMCAT_HOME}/classes目錄(如果存在)
          2.${TOMCAT_HOME}/lib的一切內容
          3.${JAVA_HOME}/lib/tools.jar(此jar文件包含工具javac,我們需要javac處理jsp文件.

          運行帶有設定Java環境變量的命令行參數的java命令,調入tomcat.home,和org.apache.tomcat.startup.Tomcat 作為啟始類.同時也傳遞命令行參數到org.apache.tomcat.startup.Tomcat ,例如:

          執行start/stop/run 等的操作
          此Tomcat進程使用指向server.xml的路徑,
          例如server.xml放置于etc/server_1.xml并且用戶意圖在后臺啟動apache,鍵 入如下命令行:
          bin/tomcat.sh start ?f /etc/server_1.xml
          在Win32下的步驟:(略)
          由此可見,win32版的tomcat.bat與Unix版的幾乎一致.尤其在它不推測TOMCAT_HOME和JAVA_HOME的值,并且不將所有的jar文件放入類路徑中.

          Tomcat的配置文件
          Tomcat的配置基于兩個配置文件:
          1.server.xml - Tomcat的全局配置文件
          2.web.xml - 在Tomcat中配置不同的關系環境

          這一部分將講述如何使用這些文件.我們不會包含web.xml的內部機制,這些內部機制深入到了Servlet API的細節,因此,我們將討論涵蓋servler.xml內容及web.xml在Tomcat關系環境中的用法.

          server.xml
          server.xml是Tomcat的主配置文件.完成兩個目標:
          1 提供Tomcat組件的初始配置.
          2 說明Tomcat的結構,含義,使得Tomcat通過實例化組件完成起動及構建自身, 如在server.xml所指定的

          下表描述server.xml種的重要元素: 

          元素及其描述 
          Server
          server.xml文件中最重要的元素.Server定義了一個Tomcat服務器.一般你不用對他擔心太多.Server元素能包含Logger和ContextManager元素類型

          Logger
          此元素定義一個Logger對象,每個Logger都有一個名字去標識,也有一個紀錄Logger的輸出和冗余級別(描述此日志級別)和包含日志文件的路徑.通常有servlet的Logger(ServletContext.log()處),JSP和Tomcat運行時的Logger.

          ContextManager
          ContextManager說明一套ContextInterceptor, RequestInterceptor , Context和他們的Connectors的配置及結構.ContextManager有幾個隨同提供的特性:
          1. 用來紀錄調試信息的調試級別 
          2. webapps/,conf/,logs/和所有已定義的環境的基本位置.用來使Tomcat可以在TOMCAT_HOME外的其他目錄啟動. 
          3. 工作目錄的名字

          ContextInterceptor&RequestInterceptor
          這些偵聽器(interceptors)偵聽具體發生在ContextManager中的事件.例如,ContextInterceptor偵聽Tomcat的啟動及終止事件,RequestInterceptor監視在它服務過程中用戶請求需要通過的不同階段.Tomcat的管理員不必知道太多關于偵聽器的知識;另外,開發者應該知道這是如何在Tomcat中實現一個”全局”型的操作(例如安全性及每個請求日志)

          Connector
          Connector表示一個到用戶的聯接,不管是通過web服務器或直接到用戶瀏覽器(在一個獨立配置中).Connector負責管理Tomcat的工作線程和 讀/寫 連接到不同用戶的端口的 請求/響應.Connector的配置包含如下信息:
          1.句柄類
          2.句柄監聽的TCP/IP端口
          3.句柄服務器端口的TCP/IP的backlog.
          稍后我們將在此文檔中描述如何配置Connector.

          Context
          每個Context提供一個指向你放置你Web項目的Tomcat的下屬目錄。每個Context包含如下配置:
          1. Context放置的路徑,可以是與ContextManager主目錄相關的路徑.
          2.紀錄調試信息的調試級別
          3.可重載的標志.開發Servlet時,重載更改后的Servlet,這是一個非常便利的特性,你可以調試或用Tomcat測試新代碼而不用停止或重新啟動Tomcat.要打開重載,把reloadable設為真即可.這雖花費時間但可檢測所發生的變化;更重要的事,鑒于,在一個裝載類對象裝入一個新的servlet時,類裝載觸發器可能會擲出一些錯誤.為避免這些問題,你可以設置可重載為假,這將停止重載功能.

          從另一個目錄中啟動Tomcat
          作為缺省值將使用TOMCAT_HOME/conf/server.xml作為配置文件.缺省配置將使用TOMCT_HOME作為關系環境的基礎.
          使用 “-f/你的/目錄/server.xml”選項你可改變這種情況,使用另一個服務器配置文件和設置關系環境管理器的目錄屬性你需要在主目錄內設置以下幾個文件:
          ? 一個 webapps/目錄(如果你已生成) ? 所有war文件獎杯界壓倒此目錄而且所有子目錄將作為關系環境添加.
          ? conf/目錄 - 你可保存一個特殊的web.xml文件和其他配置文件
          ? logs/ - 所有日志文件將代替TOMCAT_HOME/logs/紀錄到此目錄中
          ? work/ - 關系環境的工作目錄
          如server.xml中的ContextManager.home屬性有關聯,將關聯到到當前工作目錄.

          web。xml
          關于web。xml和web項目結構(包括目錄服務及配置)的詳細描述可在Servlet API Spec的第9,10,14章中找到。
          然而有一個與Tomcat有關的小“特性“與web.xml有關。Tomcat可以讓用戶通過將缺省的web.xml放入conf目錄中來定義所有關系環境的web.xml的缺省值.建立一個新的關系環境時,Tomcat使用缺省的web.xml文件作為基本設置和應用項目特定的web.xml(放在應用項目的WEB-INF/web.xml文件)來覆蓋這些缺省值.

          設置Tomcat與Apache Web 服務器
          服務器
          到現在為止,我們未討論作為服務器擴展的Tomcat,只討論了作為獨立運行的服務器.但有一些問題需要說明:
          1. 當處理靜態頁面時,Tomcat不如Apache迅速.
          2. Tomcat不象Apache一樣可配置.
          3. Tomcat不象Apache一樣強壯.
          4. 有很多網站已在某一特定web server上投入了很長時間,例如,使用CGI腳本/Server API模組/perl/php…我們不能假設這些遺留下來的東西都會被丟棄.
          基于以上原因,一個現實的網站建議使用一個Web服務器,如Apache,為網站的靜態頁面請求提供服務,并使用Tomcat作為一個Servlet/JSP插件.
          我們不準備深入的討論每個不同的配置,我們將:
          1. 涵蓋Web服務器的基本行為
          2. 解釋需要何種配置
          3. 在Apache上的實例

          Web 服務器操作
          簡單說來,web服務器總是等待來自客戶端的HTTP請求。當請求到達時,服務器會提供一切必要的內容來滿足此請求。加入一個Servlet容器某種程度上會改變此行為。但服務器仍需處理如下因素:
          載入servlet容器接口庫并初始化(處理請求之前)。
          當收到一個請求時,檢查是否屬于某Servlet,如是,則接口庫接收此請求并處理。
          另一方面,接口庫需要知道他將服務某種請求,通常是基于請求的URL的某種模式和將此請求導向何處。
          當用戶想要設置使用虛擬主機的配置時,事情會變得更加復雜,或者想多個開發者在一個服務器上進行開發但使用不同的Servlet容器的JVMs。以下我們將討論這兩個問題。

          必需進行的配置
          應該考慮的是最明顯的配置是servlet URL具有對servlet容器中的servlet具有表示的責任。很明顯,你必須知道傳遞什么到Servlet容器。我們仍需提供附加的配置項目到web-server或servlet-container的結合體中.
          l 考慮到Tomcat進程是否可取得,我們仍需提供配置和Tomcat正在監聽的TCP/IP 主機名/端口號。
          l 需要告知web服務器接口庫的位置(因此我們可以在起始時裝入)
          l 需要設置接口內部信息如將日志記錄在何處和如何紀錄,等等。
          所有此類信息必須出現在web服務器配置里或被接口使用的私有配置文件中。下面將講述如何在Apache中如何實現這些配置。

          Apache上的實現
          這一部分演示如何配置Apache與Tomcat一起工作;并試圖解釋深入到可能會用到的配置規范。在jserv 安裝頁上可找到其他信息。 

          posted @ 2011-06-01 16:18 Hukin 閱讀(227) | 評論 (0)編輯 收藏
          一、開發環境配置
            第一步:下載j2sdk和tomcat:到sun官方站(http://java.sun.com/j2se/1.5.0/download.jsp)下載j2sdk,注意下載版本為Windows Offline Installation的SDK,同時最好下載J2SE 1.5.0 Documentation,然后到tomcat官方站點(http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi)下載tomcat(下載最新5.5.9版本的tomcat); 
            第二步:安裝和配置你的j2sdk和tomcat:執行j2sdk和tomcat的安裝程序,然后按默認設置進行安裝即可。
            1.安裝j2sdk以后,需要配置一下環境變量,在我的電腦->屬性->高級->環境變量->系統變量中添加以下環境變量(假定你的j2sdk安裝在c:\j2sdk1.5.0):
            JAVA_HOME=c:\j2sdk1.5.0
            classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因為它代表當前路徑)
            path=%JAVA_HOME%\bin
            接著可以寫一個簡單的java程序來測試J2SDK是否已安裝成功: 
            public class Test{
            public static void main(String args[]){
            System.out.println("This is a test program.");
            }
            }
            將上面的這段程序保存為文件名為Test.java的文件。 
            然后打開命令提示符窗口,cd到你的Test.java所在目錄,然后鍵入下面的命令
            javac Test.java
            java Test
            此時如果看到打印出來This is a test program.的話說明安裝成功了,如果沒有打印出這句話,你需要仔細檢查一下你的配置情況。
            2.安裝Tomcat后,在我的電腦->屬性->高級->環境變量->系統變量中添加以下環境變量(假定你的tomcat安裝在c:\tomcat):
            CATALINA_HOME=c:\tomcat
            CATALINA_BASE=c:\tomcat
            然后修改環境變量中的classpath,把tomat安裝目錄下的common\lib下的(可以根據實際追加)servlet.jar追加到classpath中去,修改后的classpath如下:
            classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar; 
            接著可以啟動tomcat,在IE中訪問http://localhost:8080,如果看到tomcat的歡迎頁面的話說明安裝成功了。
             第三步:建立自己的jsp app目錄
            1.到Tomcat的安裝目錄的webapps目錄,可以看到ROOT,examples, tomcat-docs之類Tomcat自帶的的目錄;
            2.在webapps目錄下新建一個目錄,起名叫myapp;
            3.myapp下新建一個目錄WEB-INF,注意,目錄名稱是區分大小寫的;
            4.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>
            A application for test.
            </description>
            </web-app>
             5.在myapp下新建一個測試的jsp頁面,文件名為index.jsp,文件內容如下:
            <html><body><center>
            Now time is: <%=new java.util.Date()%>
            </center></body></html>
            6.重啟Tomcat
            7.打開瀏覽器,輸入http://localhost:8080/myapp/index.jsp 看到當前時間的話說明就成功了。
             第四步:建立自己的Servlet:
            1.用你最熟悉的編輯器(建議使用有語法檢查的java ide)新建一個servlet程序,文件名為Test.java,文件內容如下:
          package Test;
          import java.io.IOException;
          import java.io.PrintWriter;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          public class Test extends HttpServlet {
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          PrintWriter out=response.getWriter();
          out.println("<html><body><h1>This is a servlet test.</h1></body></html>");
          out.flush();
          }
          }
           
            2 .編譯
            將Test.java放在c:\test下,使用如下命令編譯:
              C:\Test>javac Test.java 
            然后在c:\Test下會產生一個編譯后的servlet文件:Test.class
            3 .將結構Test\Test.class剪切到%CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那個test目錄到classes目錄下,如果classes目錄不存在,就新建一個。 現在webapps\myapp\WEB-INF\classes下有test\Test.class的文件目錄結構
             4 .修改webapps\myapp\WEB-INF\web.xml,添加servlet和servlet-mapping
            編輯后的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>
          A application for test.
          </description>

          <servlet>
          <servlet-name>Test</servlet-name>
          <display-name>Test</display-name>
          <description>A test Servlet</description>
          <servlet-class>Test.Test</servlet-class>
          </servlet>

          <servlet-mapping>
          <servlet-name>Test</servlet-name>
          <url-pattern>/Test</url-pattern>
          </servlet-mapping>
          </web-app>
           
            這段話中的servlet這一段聲明了你要調用的Servlet,而servlet-mapping則是將聲明的servlet"映射"到地址/Test上
           
            5 .好了,重啟動Tomcat,啟動瀏覽器,輸入http://localhost:8080/myapp/Test 如果看到輸出This is a servlet test.就說明編寫的servlet成功了。
           
            注意:修改了web.xml以及新加了class,都要重啟Tomcat
              第四步:建立自己的Bean:
          梓熹提示注意: Bean中的如:package Test;中的“包名”要與它的上層文件夾名稱相同。jsp網頁引用時<%@page import="Test.TestBean" %>中的Test同樣是包名。
           
            1.用你最熟悉的編輯器(建議使用有語法檢查的java ide)新建一個java程序,文件名為TestBean.java,文件內容如下:
           
          package Test;
          public class TestBean{
          private String name = null;
          public TestBean(String strName_p){
          this.name=strName_p;
          }
          public void setName(String strName_p){
          this.name=strName_p;
          }
          public String getName(){
          return this.name;
          }
          }

            2 .編譯
              將TestBean.java放在c:\test下,使用如下命令編譯:
            C:\Test>javac TestBean.java
             然后在c:\Test下會產生一個編譯后的bean文件:TestBean.class
           
            3 .將TestBean.class文件剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes\Test下,
           
            4 .新建一個TestBean.jsp文件,文件內容為:
           
          <%@page import="Test.TestBean" %>
          <html><body><center>
          <%
          TestBean testBean=new TestBean("This is a test java bean.");
          %>
          Java bean name is: <%=testBean.getName()%>
          </center>
          </body>
          </html>
           
            5 .好了,重啟Tomcat,啟動瀏覽器,輸入http://localhost:8080/myapp/TestBean.jsp 如果看到輸出Java bean name is: This is a test java bean.就說明編寫的Bean成功了。
           
            這樣就完成了整個Tomcat下的jsp、servlet和javabean的配置。接下來需要做的事情就是多看書、多讀別人的好代碼,自己多動手寫代碼以增強自己在這方面開發的能力了。
           
            jvm應填寫到
            c:\j2sdk\bin
           
            給你一個簡單的配置::::
           
            JSP環境配置心得
           
            首先要說的是,使用jdk+tomcat完全可以配置我們的jsp服務器,不再需要其實任何東東,有很多文章介紹了Apache,其實根本用不著,一般的學習調試tomcat完全可以勝任了。
           
            安裝jdk后,tomcat在安裝之前會自動找到jdk的安裝路徑,一路點擊"下一步",經過一段時間的文件復制,最后"close",完成comcat的安裝。
           
            您最好去下載一個版本較高的tomcat,比如4.1以上的,因為它不需要設置太多的系統變量,右擊"我的電腦",選擇"屬性"->"高級"->"環境變量"->"系統變量",新建一個TOMCAT_HOME,值設置成你的tomcat所在的路徑,比如:D:\Program Files\Apache Group\Tomcat 5.5,配置完成。
           
            從開始菜單中找到tomcat選項,一般打開順序是:開始->程序->Apache Tomcat 5.5,選擇"Start Tomcat",讓jsp服務器開始運行,此時會打開一個類似Dos的窗口,會顯示一些相關的信息。<
          posted @ 2011-05-30 14:25 Hukin 閱讀(386) | 評論 (0)編輯 收藏

          HTTP協議(http://www.w3.org/Protocols/)是“一次性單向”協議。

          服務端不能主動連接客戶端,只能被動等待并答復客戶端請求。客戶端連接服務端,發出一個HTTP Request,服務端處理請求,并且返回一個HTTP Response給客戶端,本次HTTP Request-Response Cycle結束。

           

          我們看到,HTTP協議本身并不能支持服務端保存客戶端的狀態信息。于是,Web Server中引入了session的概念,用來保存客戶端的狀態信息。

           

          這里用一個形象的比喻來解釋session的工作方式。假設Web Server是一個商場的存包處,HTTP Request是一個顧客,第一次來到存包處,管理員把顧客的物品存放在某一個柜子里面(這個柜子就相當于Session),然后把一個號碼牌交給這個顧客,作為取包憑證(這個號碼牌就是Session ID)。顧客(HTTP Request)下一次來的時候,就要把號碼牌(Session ID)交給存包處(Web Server)的管理員。管理員根據號碼牌(Session ID)找到相應的柜子(Session),根據顧客(HTTP Request)的請求,Web Server可以取出、更換、添加柜子(Session)中的物品,Web Server也可以讓顧客(HTTP Request)的號碼牌和號碼牌對應的柜子(Session)失效。顧客(HTTP Request)的忘性很大,管理員在顧客回去的時候(HTTP Response)都要重新提醒顧客記住自己的號碼牌(Session ID)。這樣,顧客(HTTP Request)下次來的時候,就又帶著號碼牌回來了。

           

          Session ID實際上是在客戶端和服務端之間通過HTTP RequestHTTP Response傳來傳去的。號碼牌(Session ID)必須包含在HTTP Request里面。關于HTTP Request的具體格式,請參見HTTP協議(http://www.w3.org/Protocols/)。這里只做一個簡單的介紹。

          Java Web Server(即Servlet/JSP Server)中,Session IDjsessionid表示(請參見Servlet規范)。

           

          HTTP Request一般由3部分組成:

          1Request Line

          這一行由HTTP Method(如GETPOST)、URL、和HTTP版本號組成。

          例如,GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

          GET http://www.google.com/search?q=Tomcat HTTP/1.1

          POST http://www.google.com/search HTTP/1.1

          GET http://www.somsite.com/menu.do;jsessionid=1001 HTTP/1.1

           

          2Request Headers

          這部分定義了一些重要的頭部信息,如,瀏覽器的種類,語言,類型。Request Headers中還可以包括Cookie的定義。例如:

          User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

          Accept-Language: en-us

          Cookie: jsessionid=1001

           

          3Message Body

          如果HTTP MethodGET,那么Message Body為空。

          如果HTTP MethodPOST,說明這個HTTP Requestsubmit一個HTML Form的結果,

          那么Message BodyHTML Form里面定義的Input屬性。例如,

          user=guest

          password=guest

          jsessionid=1001

          主意,如果把HTML Form元素的Method屬性改為GET。那么,Message Body為空,所有的Input屬性都會加在URL的后面。你在瀏覽器的URL地址欄中會看到這些屬性,類似于

          http://www.somesite/login.do?user=guest&password=guest&jsessionid=1001

           

          從理論上來說,這3個部分(Request URLCookie Header, Message Body)都可以用來存放Session ID。由于Message Body方法必須需要一個包含Session IDHTML Form,所以這種方法不通用。

           

          一般用來實現Session的方法有兩種:

          1URL重寫。

          Web Server在返回Response的時候,檢查頁面中所有的URL,包括所有的連接,和HTML FormAction屬性,在這些URL后面加上“;jsessionid=XXX”。

          下一次,用戶訪問這個頁面中的URLjsessionid就會傳回到Web Server

          2Cookie

          如果客戶端支持CookieWeb Server在返回Response的時候,在ResponseHeader部分,加入一個“set-cookie: jsessionid=XXXXheader屬性,把jsessionid放在Cookie里傳到客戶端。

           

          客戶端會把Cookie存放在本地文件里,下一次訪問Web Server的時候,再把Cookie的信息放到HTTP Request的“Cookieheader屬性里面,這樣jsessionid就隨著HTTP Request返回給Web Server

          posted @ 2011-05-30 11:24 Hukin 閱讀(148) | 評論 (0)編輯 收藏
          僅列出標題
          共3頁: 上一頁 1 2 3 下一頁 
          主站蜘蛛池模板: 广南县| 响水县| 来宾市| 元氏县| 天峻县| 桃园市| 钦州市| 黄大仙区| 桐柏县| 古浪县| 通化市| 乐山市| 阿克苏市| 庆元县| 巴塘县| 九龙城区| 麦盖提县| 怀仁县| 额济纳旗| 建平县| 康平县| 土默特右旗| 卢氏县| 温州市| 乌拉特后旗| 南皮县| 苏尼特右旗| 纳雍县| 莱芜市| 孟连| 信阳市| 浪卡子县| 安化县| 垣曲县| 遂宁市| 科技| 无棣县| 馆陶县| 常熟市| 常德市| 华坪县|