<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tomcat配置虛擬主機(jī)
    2008-12-13 17:38

    一、網(wǎng)站系統(tǒng)的組成

    只要在一臺(tái)計(jì)算機(jī)上安裝了WEB服務(wù)器軟件,從功能上講,這臺(tái)計(jì)算機(jī)就可以稱為WEB服務(wù)器。一個(gè)網(wǎng)站的規(guī)模可大可小,功能可多可少,最簡(jiǎn)單的網(wǎng)站只需要一臺(tái)Web服務(wù)器即可對(duì)外提供網(wǎng)頁(yè)瀏覽服務(wù)。復(fù)雜的網(wǎng)站包括多臺(tái)WEB服務(wù)器組成的群集系統(tǒng)、負(fù)載均衡設(shè)備、具有緩存功能的代理服務(wù)器(可以有多級(jí),甚至包括放置在服務(wù)器端的緩存系統(tǒng))、數(shù)據(jù)庫(kù)系統(tǒng)等,如圖2.2所示。

     


    2.2

    www.sina.com網(wǎng)站系統(tǒng)采用的基本上就是圖2.2所示的架構(gòu),不同地區(qū)的人們?cè)谠L問www.sina.com站點(diǎn)時(shí),瀏覽器實(shí)際上所訪問的服務(wù)器是不一樣的,例如,吉林省的用戶訪問的服務(wù)器實(shí)際是sina放在吉林地區(qū)的代理服務(wù)器,湖北省的用戶訪問的服務(wù)器實(shí)際是sina放在湖北地區(qū)的代理服務(wù)器。各地區(qū)的瀏覽器訪問www.sina.com站點(diǎn)的過程如圖2.3所示。

     


    2.3

    為了能夠讓瀏覽器透明地訪問到WEB站點(diǎn),讓用戶感覺不到是在訪問區(qū)域代理服務(wù)器,在DNS系統(tǒng)中需要將www.sina.com主機(jī)名指向所有的區(qū)域代理服務(wù)器的IP地址。在瀏覽器訪問www.sina.com站點(diǎn)中的頁(yè)面而向DNS服務(wù)器請(qǐng)求解析www.sina.com主機(jī)名時(shí),DNS服務(wù)器根據(jù)訪問者的地理位置信息返回他附近的區(qū)域代理服務(wù)器的IP地址,這樣,瀏覽器的訪問請(qǐng)求將發(fā)送給該區(qū)域代理服務(wù)器。只有當(dāng)區(qū)域代理服務(wù)器中沒有瀏覽器要訪問的頁(yè)面時(shí),區(qū)域代理服務(wù)器才去從真正的www.sina.com站點(diǎn)服務(wù)器上獲取該頁(yè)面并進(jìn)行緩存,以后該區(qū)域的其他瀏覽器就都可以就近從區(qū)域代理服務(wù)器中訪問到該頁(yè)面了,從而大大提高了訪問效率和減少了網(wǎng)絡(luò)流量。

     

     

    二、基于主機(jī)名的虛擬主機(jī)

    WEB瀏覽器與WEB服務(wù)器建立連接后,除了將請(qǐng)求URL中的資源路徑發(fā)送給WEB服務(wù)器外,還會(huì)將URL中的主機(jī)名部分作為HTTP請(qǐng)求消息的Host頭發(fā)送給WEB服務(wù)器。例如,在瀏覽器地址欄中輸入http://www.it315.org,瀏覽器發(fā)送給www.it315.org主機(jī)上的WEB服務(wù)器的請(qǐng)求消息內(nèi)容如下:

           GET / HTTP/1.1<回車>

           Host: www.it315.org<回車>

           <回車>

    WEB服務(wù)器接收到瀏覽器的訪問請(qǐng)求消息后,根據(jù)Host頭字段中所設(shè)置的主機(jī)名,就知道該選擇哪個(gè)WEB站點(diǎn)來進(jìn)行響應(yīng),因此,可以使用不同的主機(jī)名來作為區(qū)分同一個(gè)WEB服務(wù)器上的不同站點(diǎn)的標(biāo)識(shí)信息。

    TomcatServer.xml配置文件中有一個(gè)<Host>元素,一個(gè)<Host>元素用于建立一個(gè)WEB站點(diǎn),使用多個(gè)<Host>元素則可以建立多個(gè)WEB站點(diǎn)。<Host>元素的父級(jí)元素為<Engine>元素,嵌套在同一個(gè)<Engine>元素中的多個(gè)<Host>元素的name屬性不能相同,<Host>元素的name屬性指定WEB站點(diǎn)所對(duì)應(yīng)的主機(jī)名稱。TomcatServer.xml配置文件中初始設(shè)置的<Host>元素內(nèi)容如下:

    <Host name="localhost" appBase="webapps" …>

    </Host>

    <Host>元素中的appBase屬性指定了一個(gè)路徑,該路徑將作為嵌套在它里面的<Context>元素的docBase屬性中設(shè)置的相對(duì)路徑的基準(zhǔn)路徑。

    當(dāng)Tomcat接收到訪問請(qǐng)求時(shí),將比較請(qǐng)求消息中的Host頭字段的值與<Host>元素的name屬性值,并以匹配的<Host>元素所創(chuàng)建的WEB站點(diǎn)來響應(yīng)。如果Server.xml文件中沒有與請(qǐng)求消息的Host頭字段匹配的<Host>元素,Tomcat將以默認(rèn)的WEB站點(diǎn)來響應(yīng)。只要<Engine>元素的defaultHost屬性設(shè)置為嵌套在它里面的某個(gè)<Host>元素的name屬性值,該<Host>元素所創(chuàng)建的WEB站點(diǎn)就成了該引擎的默認(rèn)WEB站點(diǎn)。例如,TomcatServer.xml文件中的<Engine>元素的默認(rèn)設(shè)置如下:

    <Engine name="Standalone" defaultHost="localhost" debug="0">

           <Host name="localhost" appBase="webapps" …>

          

           </Host>

    </Engine>

    上面的這段配置信息說明,該引擎的默認(rèn)WEB站點(diǎn)為嵌套在<Engine>元素中的name屬性為“localhost”的<Host>元素所創(chuàng)建的WEB站點(diǎn)。

    在同一臺(tái)計(jì)算機(jī)上建立了多個(gè)基于主機(jī)名的虛擬主機(jī)后,WEB瀏覽器要訪問其中的某個(gè)虛擬主機(jī)的資源時(shí),在訪問URL中必須采用主機(jī)名,而不能采用IP地址。這是因?yàn)?/span>WEB瀏覽器要將URL中的主機(jī)名部分作為HTTP請(qǐng)求消息的Host頭發(fā)送給WEB服務(wù)器,如果URL中的主機(jī)名部分使用的是IP地址,那么,瀏覽器發(fā)出的請(qǐng)求消息中的Host頭字段的值就是這個(gè)IP地址,而在同一臺(tái)計(jì)算機(jī)上建立的多個(gè)基于主機(jī)名的虛擬主機(jī)共享同一個(gè)IP地址,在Host頭字段使用IP地址根本就無法區(qū)分不同的站點(diǎn)。

    即使在URL中指定的是主機(jī)名時(shí),WEB瀏覽器還是要先獲得該主機(jī)名所對(duì)應(yīng)的IP地址,然后再使用這個(gè)IP去連接WEB服務(wù)器。所以,在建立基于主機(jī)名的虛擬主機(jī)時(shí),除了要在Tomcatserver.xml文件中進(jìn)行設(shè)置外,還需要在整個(gè)網(wǎng)絡(luò)系統(tǒng)中建立主機(jī)名與IP地址的映射關(guān)系,即必須將主機(jī)名添加到名稱解析系統(tǒng),以便WEB瀏覽器能夠從名稱解析系統(tǒng)中查詢出主機(jī)名所對(duì)應(yīng)的IP地址。建立主機(jī)名與IP地址的映射關(guān)系的慣用方式有兩種:一是使用客戶機(jī)本地的Hosts 文件,二是使用DNS(Domain Name System,域名系統(tǒng))服務(wù)器。Hosts 文件和DNS的作用都是允許用戶使用“友好”的、文本格式的主機(jī)名稱,而不是數(shù)字格式的IP地址來訪問網(wǎng)絡(luò)中的計(jì)算機(jī)。Hosts文件可用于小型的Intranet(企業(yè)內(nèi)部網(wǎng)),網(wǎng)絡(luò)中的所有計(jì)算機(jī)上都需要使用Hosts文件。DNS通常用于大型的網(wǎng)絡(luò),特別是Internet上對(duì)外提供服務(wù)的計(jì)算機(jī)都是通過DNS來建立其主機(jī)名與IP地址的映射關(guān)系。客戶機(jī)首先在本地的Hosts文件中查找主機(jī)名稱所映射的IP地址,如果沒有找到,再去查詢DNS服務(wù)器。為了簡(jiǎn)單起見,這里僅介紹一下Hosts文件。對(duì)于Windows 2000系統(tǒng),Hosts 文件位于操作系統(tǒng)根目錄(取決操作系統(tǒng)所在的分區(qū),通常是c:\winnt)下的System32\Drivers\Etc子目錄中,默認(rèn)情況下,該文件中有如下一行內(nèi)容:

           127.0.0.1       localhost

    這行文本的作用就是將IP地址(127.0.0.1)映射成主機(jī)名(localhost),這也就是在IE瀏覽器地址欄中可以使用localhost訪問本地WEB服務(wù)器的原因。如果要增加更多的主機(jī)名與IP地址的映射,可以在Hosts文件中增加更多的行,然后參照上面這行內(nèi)容的格式在每行中填寫IP地址和相應(yīng)的主機(jī)名。

    :動(dòng)手體驗(yàn):使用Tomcat建立基于主機(jī)名的虛擬主機(jī)

    1)用UltraEdit打開<Tomcat主目錄>/conf目錄下的Server.xml文件,使用“查找”菜單查找內(nèi)容為“</Host>”的行,緊接該行下面增加一對(duì)<Host></Host>標(biāo)簽。參照前面的<Host>標(biāo)簽的屬性設(shè)置情況,設(shè)置新增的<Host>標(biāo)簽的屬性,并在它里面嵌套一個(gè)設(shè)置該WEB站點(diǎn)根目錄的<Context>元素,最終的內(nèi)容如下:

           <Host name="site1" debug="0" appBase="d:\VirtualHost1">

                  <Context path="" docBase="." debug="0"/>

           </Host>

    這樣,將創(chuàng)建一個(gè)新的WEB站點(diǎn)。上面的<Context>元素的docBase屬性值被設(shè)置為一個(gè)點(diǎn)(.),即表示使用<Host>元素的appBase屬性中所設(shè)置的路徑作為這個(gè)<Context>所映射的目錄。

    2)在上面新增的<Host></Host>標(biāo)簽對(duì)下面再增加一對(duì)<Host></Host>標(biāo)簽,并將它設(shè)置為如下形式:

           <Host name="site2" debug="0" appBase="d:\VirtualHost2">

                  <Context path="" docBase="." debug="0"/>

           </Host>

    這又創(chuàng)建了一個(gè)新的WEB站點(diǎn),該站點(diǎn)的主機(jī)名稱為site2,根目錄對(duì)應(yīng)的本地文件系統(tǒng)目錄為d:\VirtualHost2

    3)在d:盤下創(chuàng)建名稱為VirtualHost1VirtualHost2兩個(gè)目錄,并在這兩個(gè)目錄中分別創(chuàng)建一個(gè)名為test.html的文件,在d:\VirtualHost1\test.html文件中寫入如下一行內(nèi)容:

        這是d:\VirtualHost1目錄中的test.html文件

    d:\VirtualHost2\test.html文件中寫入如下一行內(nèi)容:

        這是d:\VirtualHost2目錄中的test.html文件

    4)保存修改后的Server.xml文件,重新啟動(dòng)Tomcat WEB服務(wù)器程序。打開一個(gè)新的命令行窗口中,并在這個(gè)命令行窗口中執(zhí)行如下命令:

    telnet 127.0.0.1 8080

    接著在連接成功的telnet程序命令窗口中,輸入如下內(nèi)容:

           GET /test.html HTTP/1.1<回車>

           Host:<空格>site1<回車>

           <回車>

    這時(shí)在telnet程序窗口中可以看到,WEB服務(wù)器返回內(nèi)容的正文部分為d:\VirtualHost1\test.html文件中的內(nèi)容。接著WEB服務(wù)器返回內(nèi)容的下邊,輸入如下內(nèi)容:

           GET /test.html HTTP/1.1<回車>

           Host:<空格>site2<回車>

           <回車>

    telnet程序窗口中又可以看到,WEB服務(wù)器這次返回內(nèi)容的正文部分為d:\VirtualHost2\test.html文件中的內(nèi)容。接著WEB服務(wù)器返回內(nèi)容的下邊,輸入如下內(nèi)容:

           GET /test.html HTTP/1.1<回車>

           Host:<空格><回車>

           <回車>

    telnet程序窗口中又可以看到,WEB服務(wù)器這次返回內(nèi)容的正文部分為d:\test\test.html文件中的內(nèi)容。接著WEB服務(wù)器返回內(nèi)容的下邊,再次輸入如下內(nèi)容:

           GET /test.html HTTP/1.1<回車>

           Host:<空格>xxx<回車>

           <回車>

    telnet程序窗口中又可以看到,WEB服務(wù)器這次返回內(nèi)容的正文部分仍然為d:\test\test.html文件中的內(nèi)容。

    上面的整個(gè)交互過程如圖2.34所示,Tomcat根據(jù)第1次和第2次請(qǐng)求中所指定Host頭的值,查找Server.xml文件中與之相匹配的<Host>元素的name屬性值,并以匹配的<Host>元素所設(shè)置的WEB站點(diǎn)來響應(yīng);在第3次和第4次請(qǐng)求中所指定Host頭的值,在Server.xml文件中沒有與之對(duì)應(yīng)的<Host>元素的name屬性值,Tomcat將以默認(rèn)的WEB站點(diǎn)來響應(yīng)。

     


    2.34

    5)在Windows 2000系統(tǒng)中,用記事本程序打開c:\winnt\System32\Drivers\Etc\Hosts文件,可以看到有如下一行內(nèi)容:

           127.0.0.1       localhost

    緊接這行文本的下面,用它復(fù)制出兩行文本,并將這兩行文本中的localhost分別修改成site1site2,這樣,就使用Hosts文件為當(dāng)前計(jì)算機(jī)設(shè)置了多個(gè)主機(jī)名。如果要用site1site2這個(gè)兩主機(jī)名訪問其他計(jì)算機(jī)上的WEB站點(diǎn),則應(yīng)將127.0.0.1修改成其他計(jì)算機(jī)的實(shí)際IP地址。保存Hosts文件后,在命令行窗口中執(zhí)行“ping site1”和“ping site2”命令,查看該主機(jī)名是否被正確解析到了相應(yīng)的IP地址上。建立site1site2與計(jì)算機(jī)IP地址的映射后,在IE瀏覽器地址欄中輸入http://localhost:8080/test.htmlhttp://site1:8080/test.htmlhttp://site2:8080/test.html,可以看到瀏覽器將顯示出各自站點(diǎn)中的test.html網(wǎng)頁(yè)文件的內(nèi)容。

    可見,使用主機(jī)名的方式在同一臺(tái)WEB服務(wù)器上創(chuàng)建多個(gè)虛擬主機(jī)后,在WEB瀏覽器中使用主機(jī)名訪問Web服務(wù)器時(shí),Web服務(wù)器將選擇與該主機(jī)名關(guān)聯(lián)的WEB站點(diǎn)進(jìn)行響應(yīng)。通過這種方式,多個(gè)WEB站點(diǎn)可以共享同一個(gè)IP地址和相同的端口號(hào),唯一不足的就是WEB瀏覽不能通過IP地址去訪問這些WEB站點(diǎn)。基于主機(jī)名的虛擬主機(jī)是目前Internet上的大多數(shù)虛擬主機(jī)業(yè)務(wù)提供商所通常采用的方式。只要找出幾個(gè)小型公司或個(gè)人的網(wǎng)站,如果在WEB瀏覽器地址欄中輸入“http://主機(jī)名”可以訪問到該WEB站點(diǎn),接著在命令行窗口中執(zhí)行“ping 主機(jī)名”,查看到該域名對(duì)應(yīng)的IP地址,然后在WEB瀏覽器地址欄中輸入“http://IP地址”時(shí),卻無法訪問這個(gè)WEB站點(diǎn)了,那么,這個(gè)WEB站點(diǎn)就是一個(gè)基于主機(jī)名的虛擬主機(jī),它與其他一些WEB站點(diǎn)共享一臺(tái)WEB服務(wù)器,而不是自己獨(dú)享一臺(tái)WEB服務(wù)器。

     

    注意:當(dāng)使用安全套接字層 (SSL) 時(shí),不能使用主機(jī)頭字段來實(shí)現(xiàn)虛擬主機(jī),這是因?yàn)槭褂?/span>SSLHTTP請(qǐng)求有加密保護(hù)。主機(jī)頭字段是加密內(nèi)容的一部分,不能被解釋和路由到正確的站點(diǎn)。

    posted @ 2009-09-16 20:17 勒緊皮帶向前沖 閱讀(298) | 評(píng)論 (0)編輯 收藏
     

    從網(wǎng)上找的IE和FF下都兼容的加入收藏的代碼

     1很早就發(fā)現(xiàn)傳統(tǒng)的加入IE收藏夾的代碼在Firefox下是無效的。
     2
     3
     4<a href="javascript:window.external.AddFavorite('http://www.9enjoy.com','9Enjoy')">添加到收藏夾</a>
     5
     6
     7今天瀏覽im286,發(fā)現(xiàn)討論兩者兼容的代碼,調(diào)試后,發(fā)現(xiàn)可行:)
     8
     9第一段:
    10
    11
    12<script>
    13function addfavorite()
    14{
    15  if (document.all)
    16  {
    17     window.external.addFavorite('http://www.9enjoy.com','9Enjoy');
    18  }

    19  else if (window.sidebar)
    20  {
    21     window.sidebar.addPanel('9Enjoy''http://www.9enjoy.com'"");
    22  }

    23}
     
    24</script>
    25<a href="#" onclick="addfavorite()">把本博客加入收藏</a>
    26
    27
    28
    29下面一段更嚴(yán)謹(jǐn),IE6,IE7,F(xiàn)F均通過。
    30
    31
    32<html>
    33<head>
    34<title>加入收藏</title>
    35<script language="JavaScript" type="text/javascript">
    36function JSAddFavorite()
    37{
    38
    39       if ( window.sidebar && "object" == typeof( window.sidebar ) && "function" == typeof( window.sidebar.addPanel ) )
    40
    41       {
    42
    43               //  firefox
    44
    45               window.sidebar.addPanel( '9Enjoy, 'http://www.9enjoy.com/', '' );
    46
    47       }

    48
    49       else if ( document.all && "object" == typeof( window.external ) )
    50
    51       {
    52
    53               //  ie
    54
    55               window.external.addFavorite( 'http://www.9enjoy.com/''9Enjoy' );
    56
    57       }

    58
    59}

    60
    61</script>
    62</head>
    63
    64<body>
    65<a href="javascript:JSAddFavorite();" title="加入收藏">加入收藏</a>
    66</body>
    67<html>
    68-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    注,我使用以上代碼在FF上并未執(zhí)行成功。
    這個(gè)是我的代碼
     1<script language="javascript">
     2    function JSAddFavorite(){
     3        if(window.sidebar && "object" == typeof(window.sidebar) && "function"==typeof(window.sidebar.addPanel)){
     4            //firefox
     5            window.sidebar.addPanel("收藏標(biāo)記","http://www.xxxx.com");
     6        }

     7        else if(document.all && "object" == typeof(window.external)){
     8            //ie
     9            window.external.addFavorite("http://www.xxxx.com","收藏標(biāo)記");
    10        }

    11    }

    12    window.setTimeout("JSAddFavorite",60*1000);
    13</script>
    如上,在FF上執(zhí)行不成功。不知怎么回事?有知道的兄弟評(píng)論下。
    posted @ 2009-09-15 23:27 勒緊皮帶向前沖 閱讀(357) | 評(píng)論 (0)編輯 收藏
     
    [轉(zhuǎn)]jsp獲取客戶端ip和mac地址
    2009年04月10日 星期五 16:02

    最近做一個(gè)安全系統(tǒng),需要對(duì)用戶的 ip 和 mac 地址進(jìn)行驗(yàn)證,這里用到獲取客戶端ip和mac地址的兩個(gè)方法,留存。

    1.獲取客戶端ip地址( 這個(gè)必須從客戶端傳到后臺(tái)):
       jsp頁(yè)面下,很簡(jiǎn)單,request.getRemoteAddr() ;
       因?yàn)橄到y(tǒng)的VIew層是用JSF來實(shí)現(xiàn)的,因此頁(yè)面上沒法直接獲得類似request,在bean里做了個(gè)強(qiáng)制轉(zhuǎn)換
       public String getMyIP() {
            try {
                FacesContext fc = FacesContext.getCurrentInstance();
                HttpServletRequest request = (HttpServletRequest)fc.getExternalContext().getRequest();
                return request.getRemoteAddr();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            return "";
        }

    2.獲取客戶端mac地址
        調(diào)用window的命令,在后臺(tái)Bean里實(shí)現(xiàn) 通過ip來獲取mac地址。方法如下:

        public String getMACAddress(String ip){
            String str = "";
            String macAddress = "";
            try {
                Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
                InputStreamReader ir = new InputStreamReader(p.getInputStream());
                LineNumberReader input = new LineNumberReader(ir);
                for (int i = 1; i < 100; i++) {
                    str = input.readLine();
                    if (str != null) {
                        if (str.indexOf("MAC Address") > 1) {
                            macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length());
                            break;
                        }
                    }
                }
            } catch (IOException e) {
                e.printStackTrace(System.out);
            }
            return macAddress;
        }

    posted @ 2009-09-14 12:14 勒緊皮帶向前沖 閱讀(2089) | 評(píng)論 (0)編輯 收藏
     

    Tomcat6.0配置(虛擬目錄的設(shè)置+多域名綁定)

    Tomcat6.0配置(虛擬目錄的設(shè)置+多域名綁定)

    優(yōu)點(diǎn):tomcat6.0可以自動(dòng)更新類和頁(yè)面,當(dāng)然如果修改了配置文件,或者web.xml和lib,則需要重啟tomcat才可以.
    配置更方便,開設(shè)站點(diǎn)只需修改一個(gè)conf文件。

    Step 1 JDK安裝
    ----------------------------------------------------------------------------------
    1.1 點(diǎn)擊jdk-6u1-windows-i586-p.exe文件安裝Jdk,選擇目錄(假使E:\jdk1.6),一路回車,安裝完成
    1.2 添加JAVA環(huán)境變量(我的電腦右鍵->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量)
            CLASSPATH   設(shè)置變量值 .;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar
            JAVA_HOME   設(shè)置變量值 C:\Program Files\Java\jdk1.6.0
            PATH        設(shè)置變量值 .;%JAVA_HOME%;%JAVA_HOME%/bin;(原來里面有內(nèi)容的話 最后加入就行)
    1.3 在DOS命令行狀態(tài)下測(cè)試Java是否成功安裝,敲入java -version可以查看版本
         c:\>java -version
         java version "1.6.0_01"
         Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
         Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
    1.4 測(cè)試HelloWorld,新建一個(gè)HelloWorld.java的文件,內(nèi)容如下
         public class HelloWorld {
            public static void main(String arg[]) {
               System.out.println("Hello World!這是Java測(cè)試程序,說明你已成功安裝了Java -- Jarry!");
            }
         }
         在命令行輸入javac HelloWorld.java,編譯一下,然后再執(zhí)行java HelloWorld,就能看到正常的輸出了。
         出現(xiàn)錯(cuò)誤一般是環(huán)境變量或大小寫等有問題,仔細(xì)檢查就沒有問題了。     


    Step 2 Tomcat安裝
    ----------------------------------------------------------------------------------
    2.1 點(diǎn)擊apache-tomcat-6.0.10.exe文件安裝Tomcat,選擇目錄(假使d:\Tomcat)安裝完成后
    2.2 添加TOMCAT環(huán)境變量(我的電腦右鍵->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量)
             TOMCAT_HOME   設(shè)置變量值 d:/Tomcat
    2.3 從程序菜單或是服務(wù)里啟動(dòng)Tomcat,然后你在瀏覽器輸入http://localhost:8080/就可以看到Tomcat歡迎頁(yè)面。
         正常情況下都會(huì)成功,如果啟動(dòng)失敗,請(qǐng)檢查jakarta_service_日期.log日志,通過它一般可以解決問題。

         比如出現(xiàn)類似報(bào)錯(cuò):
         [947 prunsrv.c] [error] Failed creating java
         看一下系統(tǒng)盤windows/system32/下是否丟失msvcr71.dll文件,如果缺失,需要從別的機(jī)器拷貝一個(gè)過來。

         打開瀏覽器 進(jìn)入http://localhost:8080/,當(dāng)看見Tomcat小貓的圖標(biāo)了,這樣表示安裝成功。

        至此,JSP服務(wù)器就搭建完成了,用于學(xué)習(xí)和測(cè)試沒有問題了,如果想要更高級(jí)的配置,可以往下面繼續(xù)看。

    Tomcat 6與Tomcat 5或者之前版本不一樣的就是,首頁(yè)沒有顯示具體的版本,貓貓也變大了些。
    沒有admin管理頁(yè)面了,admin在Tomcat 5.5來默認(rèn)都沒有了,不過可以下載admin包。
    而Tomcat 6.0沒有看見admin包,不過這并不要緊,一般情況下也不需要admin包。

    Tomcat 6.0默認(rèn)也沒有開啟servlet、禁止目錄瀏覽。這需要去conf/下配置web.xml文件。
    修改listings為true即可以目錄瀏覽,

                <param-name>listings</param-name>
                <param-value>true</param-value>
                <!-- false disable listings -->
                <!-- <param-value>false</param-value>-->         

    開啟servlet直接訪問功能,把這兩段注釋打開。

        <servlet>
            <servlet-name>invoker</servlet-name>
            <servlet-class>
              org.apache.catalina.servlets.InvokerServlet
            </servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <load-on-startup>2</load-on-startup>
        </servlet>

    <servlet-mapping>
            <servlet-name>invoker</servlet-name>
            <url-pattern>/servlet/*</url-pattern>
        </servlet-mapping>
       

    2.4 部署一個(gè)新項(xiàng)目chengqun,去conf/下配置server.xml

       <Context path="/chengqun" docBase="d:\tomcat\webapps\chengqun"></Context>
       
        chengqun是你程序的目錄    重啟Tomcat,訪問http://127.0.0.1:8080/chengqun就可以訪問了

     

     

    ======================================================================================================================
    域名綁定與虛擬目錄設(shè)置:
    server.xml 的修改方式如下:

    (一)多域名綁定

    1.如果你要綁定網(wǎng)站,首先是要把tomcat的默認(rèn)訪問端口8080,修改成80

    原始:
    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    修改后:
    <Connector port="80" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    其實(shí)這里就是把port:8080,修改成port:80就可以了,其他的參數(shù)不變

    2.接下來就是重點(diǎn)了哈哈...
    單個(gè)域名綁定:
    原始:
    <Engine name="Catalina" defaultHost="localhost">
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" />
    </Engine>
    當(dāng)然這里我把注釋代碼統(tǒng)統(tǒng)刪除掉了,省的礙眼


    修改后:
    <Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/" docBase="d:\wwwroot\chengqun"></Context>
    </Host>


    <Host name="chengqun1.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun1"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/" docBase="d:\wwwroot\chengqun1"></Context>
    </Host>

     

    多域名綁定:
    <Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
    <Alias>chengqun.202.71one.com</Alias>
    <Alias>chengqun1.202.71one.com</Alias>
    <Alias>chengqun2.202.71one.com</Alias>
    <Context path="/" docBase="d:\wwwroot\chengqun"></Context>
    </Host>

    這里面的參數(shù)還有很多,我也不是很清楚,不過這樣做確實(shí)可以實(shí)現(xiàn)多域名綁定哈哈.而且網(wǎng)站頁(yè)面修改了只要直接覆蓋就可以了,tomcat可以自動(dòng)更新類和頁(yè)面,當(dāng)然如果修改了web.xml或lib,則需要重啟tomcat才可以.


    (二)虛擬目錄
    (1)
    <Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/chengqun" docBase="d:\wwwroot\chengqun"></Context>
    </Host>
    其中,Host標(biāo)記是用來配置虛擬主機(jī)的,就是可以多個(gè)域名指向一個(gè)tomcat,格式只要參考默認(rèn)的就

    可以了。

    <context>是Host標(biāo)記的子元素吧,表示一個(gè)虛擬目錄,它主要有兩個(gè)屬性,path就相當(dāng)于虛擬目錄名字,

    而 docbase則是具體的文件位置。在這里我的虛擬路徑名稱為chengqun,實(shí)際上我的程序也就是html、jsp、

    servlet都 放在了d:\wwwroot\chengqun這個(gè)目錄下了。

    這樣我就可以通過 chengqun.202. com/chengqun 訪問我的這個(gè)虛擬目錄了。

    另外一種方法是:

    <Host name="chengqun.202. com" debug="0" appBase="d:\wwwroot\chengqun"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/" docBase="d:\wwwroot\chengqun"></Context>
    </Host>
    這樣設(shè)置以后,輸入域名可以訪問這個(gè)站點(diǎn)程序了(Context path="/"這里不同)
    (2)
    沒有指定默認(rèn)站點(diǎn),所以直接輸入IP的時(shí)候,無法訪問。如何讓輸入ip就可以訪問指定的站點(diǎn)呢?
        修改server.xml的 <Engine name="Catalina" defaultHost="chengqun.202. com">
    這樣就可以實(shí)現(xiàn)了輸入ip訪問chengqun.202. com這個(gè)站點(diǎn)的程序了!

    posted @ 2009-09-14 11:34 勒緊皮帶向前沖 閱讀(2246) | 評(píng)論 (0)編輯 收藏
     
    今天由于客戶對(duì)功能提出新要求。采用js操作iframe解決問題。特記錄其中遇到的問題。
    用Js控制iframe內(nèi)表單提交
    代碼如下:
     1<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
     2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     3<html>
     4  <head>    
     5    <title>c.jsp</title>
     6    
     7    <meta http-equiv="pragma" content="no-cache">
     8    <meta http-equiv="cache-control" content="no-cache">
     9    <meta http-equiv="expires" content="0">    
    10    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    11    <meta http-equiv="description" content="This is my page">    
    12
    13    <script type="text/javascript">
    14    <!--
    15        function reg(){
    16        jsi.document.all.username.value="xxx";
    17        jsi.document.all.userid.value="xxx>";
    18        jsi.document.all.flag.value="xxx";
    19          jsi.document.forms["jsf"].submit();        
    20          window.open("http://js.51baojian.net","_blank");  
    21          setTimeout("",3000);
    22          window.location.href="http://jss.51baojian.net";
    23    }

    24    -->
    25    </script>
    26  </head>
    27  
    28  <body onload="reg();">
    29    <table cellpadding="0" cellspacing="0" border="0">
    30        <tr><td>
    31            頁(yè)面進(jìn)入中..
    32            <iframe id="jsi" name="jsi" frameborder="0"
    33                    src="b.jsp" height="0" width="0"
    34            ></iframe>
    35        </td></tr>        
    36    </table>
    37  </body>
    38</html>
    b.jsp代碼為:
    1
    2<form id="jsf" name="jsf" action="url">
    3    <input type="hidden" name="username" value="">
    4    <input type="hidden" name="userid" value="">
    5    <input type="hidden" name="flag" value="">                
    6</form>
    7
    注意:
    頁(yè)面加載時(shí),遇到iframe就直接跳過去,加載下面的內(nèi)容,然后再回來加載iframe,當(dāng)然也可以理解成遇到iframe又開了一個(gè)線程來加載iframe,但是因?yàn)樯婕暗叫碌?/span>IO操作比較耗時(shí),所以如果在iframe下寫了js操作的話,會(huì)提示錯(cuò)誤。可以采用onload來觸發(fā)js操作執(zhí)行。
    在注意:(知道的就不要看了)

    onload指整個(gè)頁(yè)面加載完成后再執(zhí)行init()函數(shù),而不是當(dāng)頁(yè)面加載到<body>時(shí)就開始執(zhí)行。

    同樣,onunload指整個(gè)頁(yè)面卸載完成(關(guān)閉)后。

    posted @ 2009-08-20 14:19 勒緊皮帶向前沖 閱讀(3608) | 評(píng)論 (0)編輯 收藏
     
    hibernate hql distinct
    2008-08-03 14:15
    hibernate hql distinct
    在 hibernate的reference 中提到過hql是可以直接使用distinct的

    --
    關(guān)鍵字distinct與all 也可以使用,它們具有與SQL相同的語(yǔ)義.
    select distinct cat.name from Cat cat
    select count(distinct cat.name), count(cat) from Cat cat
    --

    所以,我就嘗試使用
    select distinct c.* from Column c, 在hql中,使用 * 必須要用到別名的
    查詢出的結(jié)果是 null來的.
    在mysql 中,這種寫法是沒有錯(cuò)的,..然后我再試了一下
    select distinct c from Column c , 這樣得出的結(jié)果是非null,是正確的.
    posted @ 2009-08-17 17:16 勒緊皮帶向前沖 閱讀(9525) | 評(píng)論 (1)編輯 收藏
     

    HQL是個(gè)中立的語(yǔ)言,即它跟任何數(shù)據(jù)庫(kù)都沒關(guān)系,你如果使用HQL的話通過數(shù)據(jù)庫(kù)方言都會(huì)翻譯成相應(yīng)的數(shù)據(jù)庫(kù)的SQL語(yǔ)句,包括[排序,子查詢,調(diào)用SQL中的函數(shù)].
      HQL中關(guān)鍵字是不區(qū)分大小寫的,但是屬性和類型是區(qū)分大小寫的。
       1>.簡(jiǎn)單屬性查詢
          1>).單一屬性查詢,返回結(jié)果集屬性列表,元素類型和實(shí)體類中相應(yīng)的屬性類型一致。如:
              session = HibernateUtils.getSession();
              session.beginTransaction();
               
              //返回結(jié)果集屬性列表,元素類型和實(shí)體類中相應(yīng)的屬性類型一致
               List students = session.createQuery("select name from Student").list();
               for (Iterator iter=students.iterator(); iter.hasNext();) {
                      String name = (String)iter.next();
                      System.out.println(name);
               }
          session.getTransaction().commit();
          2>).多個(gè)屬性查詢,返回的集合元素是對(duì)象數(shù)組,數(shù)組元素的類型和對(duì)
              應(yīng)的屬性在實(shí)體類中的類型一致,數(shù)組的長(zhǎng)度取決于select中屬性的個(gè)數(shù)。如:
              List students = session.createQuery("select id, name from Student").list();
             for (Iterator iter=students.iterator(); iter.hasNext();) {
                    Object[] obj = (Object[])iter.next();
                    System.out.println(obj[0] + "," + obj[1]);
              }
          3>).如果認(rèn)為返回?cái)?shù)組不夠?qū)ο蠡梢圆捎肏QL動(dòng)態(tài)實(shí)例化Student對(duì)象,
              但是Strudent類中必須提供相應(yīng)的構(gòu)造函數(shù)。如:
              List students = session.createQuery("select new Student(id, name) from Student").list();
              for (Iterator iter=students.iterator(); iter.hasNext();) {
                    Student student = (Student)iter.next();
                    System.out.println(student.getId() + "," + student.getName());
              }
        2>.實(shí)體對(duì)象查詢
           1>).返回Student對(duì)象的集合,可以忽略select,表可以使用別名,別名可以用as也可以不用。如:
              List students = session.createQuery("from Student s").list();
              //List students = session.createQuery("from Student as s").list();
             for (Iterator iter=students.iterator(); iter.hasNext();) {
                     Student student = (Student)iter.next();
                     System.out.println(student.getName());
               }
           2>).返回Student對(duì)象的集合,使用select查詢實(shí)體對(duì)象,必須采用別名。如:
              List students = session.createQuery("select s from Student as s").list();
              for (Iterator iter=students.iterator(); iter.hasNext();) {
                    Student student = (Student)iter.next();
                     System.out.println(student.getName());
              }
           3>).不支持select * from .....這樣的查詢語(yǔ)句。如:下面的語(yǔ)句是錯(cuò)誤的
               List students = session.createQuery("select * from Student").list();
           4>).list和iterator的區(qū)別?
               我們知道,session.createQuery()得到個(gè)Query,而從Hibernate API中我們可
               以發(fā)現(xiàn)Query有兩個(gè)方法list()和iterator()用于返回結(jié)果集。它們的區(qū)別在
               于:
               *list每次都會(huì)發(fā)出sql語(yǔ)句,list會(huì)向緩存中放入數(shù)據(jù),而不利用緩存中的數(shù)據(jù)
               *iterator在默認(rèn)情況下利用緩存數(shù)據(jù),但如果緩存中不存在數(shù)據(jù)有可能出現(xiàn)N+1問題
            5>).N+1問題
                在默認(rèn)情況下,使用query.iterator()查詢,有可能出現(xiàn)N+1問題
                1: 首先發(fā)出一條查詢對(duì)象id列表的sql語(yǔ)句
                N: 根據(jù)id列表到緩存中查詢,如果緩存中不存在與之匹配的數(shù)據(jù),那么會(huì)根據(jù)
                   id發(fā)出相應(yīng)的sql語(yǔ)句
                如:
                Iterator iter = session.createQuery("from Student").iterate();
            while(iter.hasNext()) {
                Student student = (Student)iter.next();
                System.out.println(student.getName());
            }
        3>.條件查詢
           1>).可以采用拼字符串的方式傳遞參數(shù)。如:
                   List students = session.createQuery("select s.id, s.name from Student s where s.name like '%1%'").list();
                   for (Iterator iter=students.iterator(); iter.hasNext();) {
                          Object[] obj = (Object[])iter.next();
                           System.out.println(obj[0] + "," + obj[1]);
                    }
           2>).可以使用?方式傳遞參數(shù),參數(shù)的索引從0開始;傳遞的參數(shù)值如果是字符型的,不用
               單引號(hào)引起來;可以使用方法鏈編程。如:
                List students = session.createQuery("select s.id, s.name from Student s where s.name like ?")
                                                    .setParameter(0, "%1%")
                                                    .list();
               for (Iterator iter=students.iterator(); iter.hasNext();) {
                           Object[] obj = (Object[])iter.next();
                           System.out.println(obj[0] + "," + obj[1]);
               }
           3>).可以使用 :參數(shù)名稱 的方式傳遞參數(shù)值。如:
                  List students = session.createQuery("select s.id, s.name from Student s where s.name like :myname")
                                                       .setParameter("myname", "%1%")
                                                       .list();
                  for (Iterator iter=students.iterator(); iter.hasNext();) {
                             Object[] obj = (Object[])iter.next();
                             System.out.println(obj[0] + "," + obj[1]);
                 }
           4>).如果傳遞多個(gè)參數(shù),可以使用setParameterList方法。如:
               List students = session.createQuery("select s.id, s.name from Student s where s.id in(:myids)")
                                                    .setParameterList("myids", new Object[]{1, 2, 3, 4, 5})
                                                   .list();
               for (Iterator iter=students.iterator(); iter.hasNext();) {
                       Object[] obj = (Object[])iter.next();
                       System.out.println(obj[0] + "," + obj[1]);
               }
           5>).在HQL中可以使用數(shù)據(jù)庫(kù)的函數(shù),像mysql中的date_format。如:
                 List students = session.createQuery("select s.id, s.name from Student s where date_format(s.createTime, '%Y-%m')=?")
                                                      .setParameter(0, "2008-02")
                                                      .list();
                  for (Iterator iter=students.iterator(); iter.hasNext();) {
                         Object[] obj = (Object[])iter.next();
                          System.out.println(obj[0] + "," + obj[1]);
                   }
           6>).查詢某個(gè)日期段的數(shù)據(jù)。如:
               SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
               //查詢2008-01-10到2008-02-15創(chuàng)建的學(xué)生
               List students = session.createQuery("select s.id, s.name from Student s where s.createTime between ? and ?")
                                                   .setParameter(0, sdf.parse("2008-01-10 00:00:00"))
                                                   .setParameter(1, sdf.parse("2008-02-15 23:59:59"))
                                                   .list();
                  for (Iterator iter=students.iterator(); iter.hasNext();) {
                         Object[] obj = (Object[])iter.next();
                          System.out.println(obj[0] + "," + obj[1]);
                    }

        4>.Hibernate也支持直接使用sql查詢。如:
              List students = session.createSQLQuery("select * from t_student").list();
              for (Iterator iter=students.iterator(); iter.hasNext();) {
                    Object[] obj = (Object[])iter.next();
                    System.out.println(obj[0] + "," + obj[1]);
              }
        5>.外置命名查詢,主要完成hql語(yǔ)句和程序的解耦合.
           1>).在映射文件中采用<query>標(biāo)簽來定義HQL語(yǔ)句。如:
                <query name="searchStudents">
                    <![CDATA[
                          SELECT s FROM Student s where s.id<?
                     ]]>
                </query>
           2>).在程序中采用session.getNamedQuery()方法得到HQL查詢串。如:
                  List students = session.getNamedQuery("searchStudents")
                                                       .setParameter(0, 10)
                                                       .list();
                  for (Iterator iter=students.iterator(); iter.hasNext();) {
                         Student student = (Student)iter.next();
                         System.out.println(student.getName());
                   }
         6>.查詢過濾器
           1>).在影射文件中定義過濾器參數(shù)。如:
            <filter-def name="filtertest">
                    <filter-param name="myid" type="integer"/>
            </filter-def>   
           2>).在類的影射中使用這些參數(shù)。如:
             <filter name="filtertest" condition="id &lt; :myid"/><!--&lt;轉(zhuǎn)義字符"<"-->
           3>).在程序中啟用過濾器。如:
             session.enableFilter("filtertest")
                         .setParameter("myid", 10);   
             List students = session.createQuery("from Student").list();//會(huì)在該session中所有的查詢后自動(dòng)加上過濾器中的條件
             for (Iterator iter=students.iterator(); iter.hasNext();) {
                   Student student = (Student)iter.next();
                   System.out.println(student.getName());
             }
           參見:Student.hbm.xml,FilterQueryTest.java
         7>.分頁(yè)查詢
            1>).setFirstResult()從0開始
            2>).setMaxResults每頁(yè)顯示多少條數(shù)據(jù)。如:
                  List students = session.createQuery("from Student")
                                                       .setFirstResult(1)
                                                       .setMaxResults(2)
                                                       .list();
                  for (Iterator iter=students.iterator(); iter.hasNext();) {
                         Student student = (Student)iter.next();
                         System.out.println(student.getName());
                 }
         8>.對(duì)象導(dǎo)航查詢
            Hibernate支持對(duì)象的,因此可以用對(duì)象導(dǎo)航查詢。如:
            Student類總有Classes類型的屬性classes,而Classes類有name屬性。我們通過classes的name來查詢student:
            List students = session.createQuery("select s.name from Student s where s.classes.name like '%1%'").list();
            for (Iterator iter=students.iterator(); iter.hasNext();) {
                 String name = (String)iter.next();
                 System.out.println(name);
           }
         9>.連接查詢
            1>).內(nèi)連接:只是把兩邊都有的記錄查出來,可以省略inner,并且只要影射文件中已經(jīng)設(shè)好了表之間的關(guān)系,無須用on表示查詢條件。如:
               //List students = session.createQuery("select c.name, s.name from Student s join s.classes c").list();
               List students = session.createQuery("select c.name, s.name from Student s inner join s.classes c").list();
               for (Iterator iter=students.iterator(); iter.hasNext();) {
                    Object[] obj = (Object[])iter.next();
                    System.out.println(obj[0] + "," + obj[1]);
               }
            2>).外左連接:把左邊表的所有記錄都顯示出來。如:
                 List students = session.createQuery("select c.name, s.name from Classes c left join c.students s").list();
                 for (Iterator iter=students.iterator(); iter.hasNext();) {
                      Object[] obj = (Object[])iter.next();
                      System.out.println(obj[0] + "," + obj[1]);
                 }
            3>).外右連接:把右邊表的所有記錄都顯示出來。如:
                 List students = session.createQuery("select c.name, s.name from Classes c right join c.students s").list();
                  for (Iterator iter=students.iterator(); iter.hasNext();) {
                       Object[] obj = (Object[])iter.next();
                       System.out.println(obj[0] + "," + obj[1]);
                 }
         10>.統(tǒng)計(jì)查詢
            1>).count。如:
                Long count = (Long)session.createQuery("select count(*) from Student").uniqueResult();//返回的是單條記錄
                System.out.println(count);
            2>).group by。如:
                List students =session.createQuery("select c.name, count(s) from Student s join s.classes c " +
                        "group by c.name order by c.name").list();
               for (Iterator iter=students.iterator(); iter.hasNext();) {
                    Object[] obj = (Object[])iter.next();
                    System.out.println(obj[0] + ", " + obj[1]);
               }
         11>.DML風(fēng)格的操作(盡量少用,因?yàn)榫彺娌煌?
            update和delete只會(huì)更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),而緩存中不會(huì)改,此時(shí)如果取得該數(shù)據(jù)還是緩存中的,而不會(huì)是更新后的,因此緩
            存中的數(shù)據(jù)就成了臟數(shù)據(jù)了。如果批量更新的話,還會(huì)給內(nèi)存帶來很大壓力。如:
            session.createQuery("update Student s set s.name=? where s.id < ?")
                        .setParameter(0, "李四")
                        .setParameter(1, 5)
                        .executeUpdate();


    本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/yangfeitarena/archive/2009/04/17/4086334.aspx

    posted @ 2009-08-17 11:44 勒緊皮帶向前沖 閱讀(349) | 評(píng)論 (0)編輯 收藏
     

    點(diǎn)擊“開始”—>“設(shè)置”——>“控制面板”—>“任務(wù)計(jì)劃”—>“添加任務(wù)計(jì)劃”—>讓后按照任務(wù)向?qū)гO(shè)置即可。

    posted @ 2009-06-25 23:42 勒緊皮帶向前沖 閱讀(245) | 評(píng)論 (0)編輯 收藏
     

     

     1<div id="img" style="position:absolute;; width: 200; height: 151"><a href="#" target="_blank"><img src="images/170_19.gif" width="325" height="139" border="0" /></a></div> 2<script language="javascript">
     3 var xPos = 20;
     4var yPos = 10;
     5img.style.left= xPos;
     6img.style.top = yPos;
     7var step = 1;
     8var delay = 30
     9var width,height,Hoffset,Woffset;
    10var y = 1;
    11var x = 1;
    12var interval;
    13img.visibility = "visible";function changePos() 
    14{
    15width = document.body.clientWidth;
    16height = document.body.clientHeight;
    17Hoffset = img.offsetHeight;
    18Woffset = img.offsetWidth;
    19if (y) 
    20{
    21    yPos = yPos + step;
    22}

    23else 
    24{
    25    yPos = yPos - step;
    26}

    27if (yPos < 0
    28{
    29    y = 1;
    30    yPos = 0;
    31}

    32if (yPos >= (height - Hoffset)) 
    33{
    34    y = 0;
    35    yPos = (height - Hoffset);
    36}

    37if (x) 
    38{
    39    xPos = xPos + step;
    40}

    41else 
    42{
    43    xPos = xPos - step;
    44}

    45if (xPos < 0
    46{
    47    x = 1;
    48    xPos = 0;
    49}

    50if (xPos >= (width - Woffset)) 
    51{
    52    x = 0;
    53    xPos = (width - Woffset);
    54}

    55img.style.left = xPos + document.body.scrollLeft;
    56img.style.top = yPos + document.body.scrollTop;
    57}
    function start() 
    58{
    59interval = setInterval('changePos()', delay);
    60}
    function pause_resume() 
    61{
    62    clearInterval(interval);
    63}

    64start();
    65
    </script>
    posted @ 2009-06-16 15:32 勒緊皮帶向前沖 閱讀(1012) | 評(píng)論 (0)編輯 收藏
     
    安裝完服務(wù)器后,放上自己的網(wǎng)站。。測(cè)試,暈竟然出現(xiàn)如下錯(cuò)誤提示:</P>
    Active Server Pages 錯(cuò)誤 \'ASP 0131\'

    不允許的父路徑

    /exam/admin/login.asp,行 1

    包含文件 \'../include/conn.asp\' 不能用 \'..\' 表示父目錄。</P>
    特別郁悶,2000 Server 下不會(huì)有這個(gè)啊。。我到網(wǎng)上找了一下才明白。。</P>
    解決方法如下:</P>
    Internet 信息服務(wù)(IIS)管理器>>網(wǎng)站站點(diǎn)>>屬性>>主目錄選項(xiàng)卡>>配置》選項(xiàng)》勾上"啟用父路徑"的復(fù)選框即可.

    默認(rèn)不啟用啟用父路徑估計(jì)是一項(xiàng)安全設(shè)置 :)

    posted @ 2009-06-02 14:45 勒緊皮帶向前沖 閱讀(294) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共14頁(yè): 上一頁(yè) 1 2 3 4 5 6 7 8 9 下一頁(yè) Last 
     
    主站蜘蛛池模板: 97无码免费人妻超级碰碰夜夜| 亚洲AV无码一区东京热久久| 亚洲综合精品成人| 91久久精品国产免费一区| 国产亚洲av片在线观看18女人| 亚洲av无码专区在线电影| 2019中文字幕在线电影免费| 亚洲精品国精品久久99热一| 国产亚洲精品免费| 大学生一级特黄的免费大片视频| 亚洲美女色在线欧洲美女| 精品视频一区二区三区免费| 国产精品亚洲美女久久久| 无码天堂va亚洲va在线va| 成人a免费α片在线视频网站| 亚洲综合伊人制服丝袜美腿| 91香蕉在线观看免费高清| 亚洲成a人片在线观看日本| sihu国产精品永久免费| 日产国产精品亚洲系列| 色婷婷亚洲一区二区三区| 日韩免费无码一区二区视频| 亚洲色欲色欱wwW在线| 成年女人免费v片| 亚洲宅男精品一区在线观看| 五月婷婷在线免费观看| 久久亚洲AV成人无码| 久久国产精品免费视频| 久久久久亚洲AV片无码| 成人精品一区二区三区不卡免费看| 自拍偷自拍亚洲精品被多人伦好爽| 男女猛烈激情xx00免费视频| 四虎影视永久免费观看| 苍井空亚洲精品AA片在线播放| 日韩免费一区二区三区| 亚洲av永久无码精品秋霞电影秋| 女人18毛片水真多免费播放 | 亚洲一区二区三区免费观看| 57pao一国产成永久免费| 666精品国产精品亚洲| 13一14周岁毛片免费|