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

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

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

    StevenBot-Saltsam

    眼睛能裝下世界,為何卻裝不下眼淚? 一只風(fēng)箏一輩子只為一根線冒險(xiǎn)。 那不是一場(chǎng)游戲,為何總有一根線牽著心懷,隱隱作疼? 那不是一段邂逅,為何飄在橋上的影子,總纏進(jìn)夢(mèng)鄉(xiāng)? 那不是一個(gè)夢(mèng)境,為何你的溫柔私語,總是不經(jīng)意的響起?

    導(dǎo)航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    datas link

    OSChinal Sources codes Library

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    2011年11月16日 #

    Spring 學(xué)習(xí)

         摘要: 1.spring屬性的注入配置1.      屬性的注入配置Bean文件的配置,即為bean的各屬性賦值 <bean id="sone" class="edu.yzu.entity.Student" init-method="initialMethod" parent="sbean" ...  閱讀全文

    posted @ 2011-11-16 01:16 Steven_bot 閱讀(540) | 評(píng)論 (0)編輯 收藏

    2011年10月25日 #

    Platform來獲取一些系統(tǒng)的路徑和參數(shù)

    在Eclipse的插件開發(fā)中,可以通過Platform來獲取一些系統(tǒng)的路徑和參數(shù)。 
    假定Eclipse的安裝路徑為:D:/Java/eclipse 
    創(chuàng)建的Workspace路徑為:D:/Java/eclipse/workspace 

    Platform.getNL():zh_CN 
    Platform.getWS():win32 
    Platform.getOS():win32 
    Platform.getOSArch():x86 
    Platform.getStateStamp():155 
    Platform.getUserLocation().getURL():file:/D:/Profiles/windowsloginname/user/ 
    Platform.getInstallLocation().getURL():file:/d:/Java/eclipse/ 
    Platform.getConfigurationLocation().getURL():file:/d:/Java/eclipse/configuration/ 
    Platform.getInstanceLocation().getURL():file:/D:/Java/eclipse/workspace/ 
    Platform.getLocation():D:/Java/eclipse/workspace 
    Platform.getLocation().toOSString():D:/Java/eclipse/workspace 
    Platform.getLogFileLocation():D:/Java/eclipse/workspace/.metadata/.log 
    Platform.getLogFileLocation().toOSString():D:/Java/eclipse/workspace/.metadata/.log 
    Platform.getPluginStateLocation(Platform.getPlugin("NamedPlugin")):D:/Java/eclipse/workspace/.metadata/.plugins/NamedPlugin 
    Platform.getPlugin("NamedPlugin").getStateLocation():D:/Java/eclipse/workspace/.metadata/.plugins/NamedPlugin 
    Platform.getPlugin("NamedPlugin").getDescriptor():NamedPlugin_1.0.0 
    Platform.getPlugin("NamedPlugin").getDescriptor().getLabel():Plug-in Name 
    Platform.getPlugin("NamedPlugin").getDescriptor().getProviderName():ProviderName 
    Platform.getPlugin("NamedPlugin").getDescriptor().getUniqueIdentifier():NamedPlugin 
    Platform.getPlugin("NamedPlugin").getDescriptor().getInstallURL():platform:/plugin/NamedPlugin_1.0.0/ 
    Platform.getPlugin("NamedPlugin").getDescriptor().getInstallURL().getPath():/plugin/NamedPlugin_1.0.0/

    posted @ 2011-10-25 10:49 Steven_bot 閱讀(1521) | 評(píng)論 (0)編輯 收藏

    2011年10月8日 #

    Tomcat的參數(shù)配置及一般問題的解決

         摘要: 如何解決端口沖突導(dǎo)致tomcat無法啟動(dòng)的問題Tomcat在啟動(dòng)時(shí)主要使用下面的3個(gè)端口<Server port="8005" shutdown="SHUTDOWN" debug="0"><Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8...  閱讀全文

    posted @ 2011-10-08 09:34 Steven_bot 閱讀(1870) | 評(píng)論 (0)編輯 收藏

    tomcat啟動(dòng)jvm內(nèi)存設(shè)置(轉(zhuǎn)載)

    Linux:
    在/usr/local/apache-tomcat-5.5.23/bin目錄下的catalina.sh
    添加:JAVA_OPTS=''-Xms512m -Xmx1024m''
    要加“m”說明是MB,否則就是KB了,在啟動(dòng)tomcat時(shí)會(huì)報(bào)內(nèi)存不足。
    -Xms:初始值
    -Xmx:最大值
    -Xmn:最小值
    Windows
    在catalina.bat最前面加入
    set JAVA_OPTS=-Xms128m -Xmx350m 
    如果用startup.bat啟動(dòng)tomcat,OK設(shè)置生效.夠成功的分配200M內(nèi)存.
    但是如果不是執(zhí)行startup.bat啟動(dòng)tomcat而是利用windows的系統(tǒng)服務(wù)啟動(dòng)tomcat服務(wù),上面的設(shè)置就不生效了,
    就是說set JAVA_OPTS=-Xms128m -Xmx350m 沒起作用.上面分配200M內(nèi)存就OOM了..
    windows服務(wù)執(zhí)行的是bin\tomcat.exe.他讀取注冊(cè)表中的值,而不是catalina.bat的設(shè)置.
    解決辦法:
    修改注冊(cè)表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
    原值為
    -Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
    -Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
    -Xrs
    加入 -Xms300m -Xmx350m  
    重起tomcat服務(wù),設(shè)置生效

    文章出處:飛諾網(wǎng)(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/2008215/99782.html

    posted @ 2011-10-08 09:31 Steven_bot 閱讀(753) | 評(píng)論 (0)編輯 收藏

    合理配置tomcat內(nèi)存-java.lang.OutOfMemoryError: PermGen space及其解決方法

    轉(zhuǎn)載自: http://it.chinawin.net/softwaredev/article-c4e1.html
    不論是在開發(fā)還是在已經(jīng)發(fā)布的項(xiàng)目中,我們經(jīng)常會(huì)碰到的一個(gè)問題:
        java.lang.OutOfMemoryError: PermGen spacePermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域,OutOfMemoryError: PermGen space從表面上看就是內(nèi)存溢出,解決方法是加大內(nèi)存。說說為什么會(huì)內(nèi)存溢出:PermGen space用于存放Class和Meta的信息,Class在被 Load的時(shí)候被放入PermGen space區(qū)域,它和存放Instance的Heap區(qū)域不同,GC(Garbage Collection)不會(huì)在主程序運(yùn)行期對(duì)PermGen space進(jìn)行清理,所以如果你的APPLICATION會(huì)LOAD很多CLASS的話,就很可能出現(xiàn)PermGen space錯(cuò)誤。這種錯(cuò)誤常見在web服務(wù)器對(duì)JSP進(jìn)行pre compile的時(shí)候。如果你的WEB APP下都用了大量的第三方j(luò)ar, 其大小超過了jvm默認(rèn)的大小(4M)那么就會(huì)產(chǎn)生此錯(cuò)誤信息了。建議:將相同的第三方j(luò)ar文件移置到tomcat/lib目錄下,這樣可以達(dá)到減少 jar 文檔重復(fù)占用內(nèi)存的目的。
    改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 其中-Xms<size> 為JVM初始化堆的大小
            -Xmx<size> 為JVM堆的最大值
            -XX:MaxNewSize 為調(diào)大新對(duì)象區(qū),以減少垃圾回收器回收次數(shù)但是有的時(shí)候可能這樣的設(shè)置還會(huì)不行(比如,當(dāng)Server應(yīng)用程序加載較多類時(shí),即jvm加載類時(shí),永久域中 的對(duì)象急劇增加,從而使jvm不斷調(diào)整永久域大小,為了避免調(diào)整),你可以使用更多的參數(shù)配置,如: java -Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
    其中,使用   -XX:MaxPermSize標(biāo)志來增加永久域的大小,-XX:PermSize標(biāo)志設(shè)置初始值
    如 果虛擬機(jī)啟動(dòng)時(shí)設(shè)置使用的內(nèi)存比較小而在這種情況下有許多對(duì)象進(jìn)行初始化,虛擬機(jī)就必須重復(fù)地增加內(nèi)存來滿足使用。由于這種原因,我們一般把-Xms和 -Xmx設(shè)為一樣大,而堆的最大值受限于系統(tǒng)使用的物理內(nèi)存。一般使用數(shù)據(jù)量較大的應(yīng)用程序會(huì)使用持久對(duì)象,內(nèi)存使用有可能迅速地增長(zhǎng)。當(dāng)應(yīng)用程序需要的 內(nèi)存超出堆的最大值時(shí)虛擬機(jī)就會(huì)提示內(nèi)存溢出,并且導(dǎo)致應(yīng)用服務(wù)崩潰。因此一般建議堆的最大值設(shè)置為可用內(nèi)存的最大值的80%。
    在tomcat中redeploy時(shí)出現(xiàn)outofmemory的錯(cuò)誤.
    可以有以下幾個(gè)方面的原因:
    1,使用了proxool,因?yàn)閜roxool內(nèi)部包含了一個(gè)老版本的cglib.
    2, log4j,最好不用,只用common-logging
    3, 老版本的cglib,快點(diǎn)更新到最新版。
    4,更新到最新的hibernate3.2

    --------------------------------------------------------------------------------------------------------------------------------

            主要包括避免死循環(huán),應(yīng)該及時(shí)釋放種資源:內(nèi)存, 數(shù)據(jù)庫(kù)的各種連接,防止一次載入太多的數(shù)據(jù)。導(dǎo)致java.lang.OutOfMemoryError的根本原因是程序不健壯。因此,從根本上解決Java內(nèi)存溢出的唯一方法就是修改程序,及時(shí)地釋放沒用的對(duì)象,釋放內(nèi)存空間。 遇到該錯(cuò)誤的時(shí)候要仔細(xì)檢查程序,嘿嘿,遇多一次這種問題之后,以后寫程序就會(huì)小心多了。

                3)對(duì)resin容器,同樣可以在啟動(dòng)時(shí)對(duì)jvm設(shè)置內(nèi)存限度。在bin文件夾下創(chuàng)建一個(gè)startup.bat文件,內(nèi)容如下:
                     @echo off
                      call "httpd.exe"  "-Xms128M" "-Xmx256M"
                      :end 
                      其中"-Xms128M"為最小內(nèi)存,"-Xmx256M"為最大內(nèi)存。

       2.    優(yōu)化程序,釋放垃圾。

               一次是用hibernate查詢數(shù)據(jù)時(shí),一次查詢過多的數(shù)據(jù),例如30000條,此時(shí)程序出錯(cuò),該死的java.lang.OutMemoryError,后來調(diào)整了該部分的代碼,每次只取出指定量的數(shù)據(jù),成功的解決該問題。

                還有一次是當(dāng)測(cè)試人員loadRunner做壓力測(cè)試時(shí),并發(fā)200個(gè)用戶時(shí),運(yùn)行不到幾分鐘整個(gè)weblogic都癱掉,真夠狠的,又是java.lang.OutOfMemoryError, PM叫我檢查同事寫的代碼,折騰了我好久,結(jié)果發(fā)現(xiàn)原來是由于session的資源一直沒有被釋放產(chǎn)生的,真把俺給氣死!??!在該工程中在web.xml文件中設(shè)置了一個(gè)session的偵聽期,當(dāng)檢測(cè)到session超時(shí)時(shí),進(jìn)入指定的類進(jìn)行相應(yīng)處理,而該同事在進(jìn)行了自定義的處理后,沒有通過session的invalidate()方法將session的資源釋放,導(dǎo)致當(dāng)大批量并發(fā)時(shí),造成內(nèi)存溢出。

                解決java.lang.OutOfMemoryError的方法有如下幾種:

    1. 增加jvm的內(nèi)存大小。方法有:

                1)在執(zhí)行某個(gè)class文件時(shí)候,可以使用java -Xmx256M aa.class來設(shè)置運(yùn)行aa.class時(shí)jvm所允許占用的最大內(nèi)存為256M。
                2)對(duì)tomcat容器,可以在啟動(dòng)時(shí)對(duì)jvm設(shè)置內(nèi)存限度。對(duì)tomcat,可以在catalina.bat中添加:
     "set CATALINA_OPTS=-Xms128M -Xmx256M
      set JAVA_OPTS=-Xms128M -Xmx256M",或者把%CATALINA_OPTS%和%JAVA_OPTS%代替為-Xms128M -Xmx256M



    1、PermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域OutOfMemoryError: PermGen space從表面上看就是內(nèi)存益出,解決方法也一定是加大內(nèi)存。說說為什么會(huì)內(nèi)存益出:這一部分用于存放Class和Meta的信息,Class在被 Load的時(shí)候被放入PermGen space區(qū)域,它和和存放Instance的Heap區(qū)域不同,GC(Garbage Collection)不會(huì)在主程序運(yùn)行期對(duì)PermGen space進(jìn)行清理,所以如果你的APP會(huì)LOAD很多CLASS的話,就很可能出現(xiàn)PermGen space錯(cuò)誤。這種錯(cuò)誤常見在web服務(wù)器對(duì)JSP進(jìn)行pre compile的時(shí)候。

    改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

    2、在tomcat中redeploy時(shí)出現(xiàn)outofmemory的錯(cuò)誤.

    可以有以下幾個(gè)方面的原因:

    1,使用了proxool,因?yàn)閜roxool內(nèi)部包含了一個(gè)老版本的cglib.

    2, log4j,最好不用,只用common-logging

    3, 老版本的cglib,快點(diǎn)更新到最新版。

    4,更新到最新的hibernate3.2

    3、

    這里以tomcat環(huán)境為例,其它WEB服務(wù)器如jboss,weblogic等是同一個(gè)道理。
    一、java.lang.OutOfMemoryError: PermGen space

    PermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域,
    這塊內(nèi)存主要是被JVM存放Class和Meta信息的,Class在被Loader時(shí)就會(huì)被放到PermGen space中,
    它和存放類實(shí)例(Instance)的Heap區(qū)域不同,GC(Garbage Collection)不會(huì)在主程序運(yùn)行期對(duì)
    PermGen space進(jìn)行清理,所以如果你的應(yīng)用中有很多CLASS的話,就很可能出現(xiàn)PermGen space錯(cuò)誤,
    這種錯(cuò)誤常見在web服務(wù)器對(duì)JSP進(jìn)行pre compile的時(shí)候。如果你的WEB APP下都用了大量的第三方j(luò)ar, 其大小
    超過了jvm默認(rèn)的大小(4M)那么就會(huì)產(chǎn)生此錯(cuò)誤信息了。
    解決方法: 手動(dòng)設(shè)置MaxPermSize大小

    修改TOMCAT_HOME/bin/catalina.sh
    在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
    JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
    建議:將相同的第三方j(luò)ar文件移置到tomcat/shared/lib目錄下,這樣可以達(dá)到減少jar 文檔重復(fù)占用內(nèi)存的目的。

    二、java.lang.OutOfMemoryError: Java heap space
    Heap size 設(shè)置
    JVM堆的設(shè)置是指java程序運(yùn)行過程中JVM可以調(diào)配使用的內(nèi)存空間的設(shè)置.JVM在啟動(dòng)的時(shí)候會(huì)自動(dòng)設(shè)置Heap size的值,
    其初始空間(即-Xms)是物理內(nèi)存的1/64,最大空間(-Xmx)是物理內(nèi)存的1/4??梢岳肑VM提供的-Xmn -Xms -Xmx等選項(xiàng)可
    進(jìn)行設(shè)置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
    提示:在JVM中如果98%的時(shí)間是用于GC且可用的Heap size 不足2%的時(shí)候?qū)伋龃水惓P畔ⅰ?br style="line-height: 25px" />提示:Heap Size 最大不要超過可用物理內(nèi)存的80%,一般的要將-Xms和-Xmx選項(xiàng)設(shè)置為相同,而-Xmn為1/4的-Xmx值。 
    解決方法:手動(dòng)設(shè)置Heap size
    修改TOMCAT_HOME/bin/catalina.sh
    在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
    JAVA_OPTS="-server -Xms800m -Xmx800m   -XX:MaxNewSize=256m"

    三、實(shí)例,以下給出1G內(nèi)存環(huán)境下java jvm 的參數(shù)設(shè)置參考:

    JAVA_OPTS="-server -Xms800m -Xmx800m  -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "


    三、相關(guān)資料

    /show/3/7/20061112220131.htm

    /show/3/7/20061112220054.htm

    均使用tomcat作為WEB服務(wù)器,每天訪問量百萬多,tomcat仍然運(yùn)行良好。建議大家有問題多從自己程序入手,多看看java的DOC文檔
    并詳細(xì)了解JVM的知識(shí)。這樣開發(fā)的程序才會(huì)健壯。

    延伸閱讀:

    JVM 性能調(diào)整的一些基本概念

    apache+Tomcat負(fù)載平衡設(shè)置詳解[轉(zhuǎn)]

    java - the Java application launcher

    JVM調(diào)優(yōu)[轉(zhuǎn)]
    Java如何通過VC調(diào)用VB編寫的COM - 

    JNI完全手冊(cè) - 

    JBuilder9制作EXE文件 - 

    如何在Java中調(diào)用dll - 

    JNI調(diào)用固有方法 - 

     

    java.lang.OutOfMemoryError這個(gè)錯(cuò)誤我相信大部分開發(fā)人員都有遇到過,產(chǎn)生該錯(cuò)誤的原因大都出于以下原因:JVM內(nèi)存過小、程序不嚴(yán)密,產(chǎn)生了過多的垃圾。

               在一年多的工作過程中,遇到該問題的印象最深有兩次。

    posted @ 2011-10-08 09:30 Steven_bot 閱讀(9151) | 評(píng)論 (0)編輯 收藏

    如何修改和查看tomcat內(nèi)存大小

    為了解決tomcat在大進(jìn)行大并發(fā)請(qǐng)求時(shí),出現(xiàn)內(nèi)存溢出的問題,請(qǐng)修改tomcat的內(nèi)存大小,其中分為以下兩種方式:


    一、使用 catalina.bat 等命令行方式運(yùn)行的 tomcat

    查看系統(tǒng)最大支持內(nèi)存命令:java -Xmx1024m -version

    1、修改 tomcat\bin\Catalina.bat 文件
    windows環(huán)境下:

    在166行左右
    rem Execute Java with the applicable properties ”以下每行
    %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

    在 %DEBUG_OPTS% 后面添加-Xms256m -Xmx512m

    linux環(huán)境下:

    打開在Tomcat的安裝目錄的bin文件的catalina.sh文件,進(jìn)入編輯狀態(tài).
    在注釋后面加上如下腳本:
    JAVA_OPTS='-Xms512m -Xmx1024m'
    JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"

    其中 JAVA_OPTS='-Xms512m -Xmx1024m' 是設(shè)置Tomcat使用的內(nèi)存的大小.

    -XX:PermSize=64M -XX:MaxPermSize=256m 指定類空間(用于加載類)的內(nèi)存大小 

    保存后,重新以命令行的方式運(yùn)行 tomcat ,即可,然后通過最后面介紹的如何觀察tomcat現(xiàn)有內(nèi)存情況的方法進(jìn)行查看是否已經(jīng)變更成功。

     

     

     

    二、使用 系統(tǒng)中的 “服務(wù)”,或者開始菜單的可執(zhí)行程序運(yùn)行的tomcat

    1、關(guān)閉 現(xiàn)在正在運(yùn)行的tomcat


    2.1 [注意]

    [高版本tomcat配置方法]

    如果是tomcat 5.5 或者是 5.0.28 之后的版本,在 Java 選項(xiàng)卡中,下方,會(huì)有
    Inital memory Pool:   
    Maximum memory Pool:
    Thread stack size:
    三個(gè)輸入框,在這里即可不用做上面的操作,直接配置內(nèi)存大小,只需要設(shè)置
    Inital memory Pool 為 256
    Maximum memory Pool 為 512

    點(diǎn)擊確定后,重啟tomcat 生效

     

    如果您是低版本的tomcat,發(fā)現(xiàn)沒有上面那幾個(gè)錄入框,請(qǐng)看下面的操作步驟

     

    [低版本tomcat配置方法]

    在開始菜單中,找到“Apache Tomcat 5.0”,并選擇“Configure Tomcat”,在彈出的對(duì)話框窗口中,切換到 Java VM 選項(xiàng)卡,并在 Java Options 輸入框的最前面輸入

    -Xms256m -Xmx512m

    即輸入框中的內(nèi)容會(huì)像下面的代碼(與自己的環(huán)境有所區(qū)別)

    -Xms256m -Xmx512m
    -Dcatalina.home="C:\tomcat5"
    -Djava.endorsed.dirs="C:\tomcat5\common\endorsed"
    -Xrs

    設(shè)置完后,點(diǎn)擊“確定”,并重啟tomcat即可。

     

    三、查看現(xiàn)有tomcat的內(nèi)存大小情況

    1、啟動(dòng)tomcat
    2、訪問 http://localhost:8080/manager/status ,并輸入您在安裝tomcat時(shí)輸入的用戶與口令,如 admin ,密碼 admin(密碼是您在tomcat安裝時(shí)輸入的)

    注:添加用戶,修改conf/tomcat-users.xml

    <?xml version='1.0' encoding='utf-8'?>
    <tomcat-users>
      <role rolename="tomcat"/>
      <role rolename="role1"/>
      <role rolename="manager"/>
      <role rolename="admin"/>
      <user username="tomcat" password="tomcat" roles="tomcat"/>
      <user username="both" password="tomcat" roles="tomcat,role1"/>
      <user username="role1" password="tomcat" roles="role1"/>
      <user username="admin" password="admin" roles="admin,manager"/>
    </tomcat-users>

    3、進(jìn)入了Server Status頁(yè)面,可以在JVM表格中看到 
    Free memory: 241.80 MB Total memory: 254.06 MB Max memory: 508.06 MB

    上面的文字即代表了,當(dāng)前空閑內(nèi)存、當(dāng)前總內(nèi)存、最大可使用內(nèi)存三個(gè)數(shù)據(jù)。
    確定了最大內(nèi)存足夠大時(shí),tomcat即可正常運(yùn)轉(zhuǎn)

    posted @ 2011-10-08 09:23 Steven_bot 閱讀(60463) | 評(píng)論 (1)編輯 收藏

    2011年10月7日 #

    在tomcat上部署pentaho 1.5.3

    1 . 首先需要下載pentaho-j2ee-deployment- , pentaho-data- 和 pentaho-solution- 三個(gè)包,分別解壓到三個(gè)不同的地方
    2 . 從命令行進(jìn)入pentaho-j2ee-deployment 目錄,運(yùn)行ant -p 會(huì)列出所有的ant 任務(wù),執(zhí)行war-pentaho-tomcat-hypersonic任務(wù),成功之后會(huì)生成4個(gè)war包,pentaho-portal-layout.war , pentaho-style.war 和 sw-style.war ,(sw-style.war 是steel-wheel-style ,是可選項(xiàng),可能是pentaho的一個(gè)例子或者是pentaho的一種style風(fēng)格),還有多出一個(gè)tomcat目錄下的hsqldb目錄下有一個(gè)pentaho.war ,如果你執(zhí)行的是war-pentaho-mysql就是在tomcat目錄下有個(gè)mysql5目錄,里面一樣是pentaho.war.我選用的是hsqldb .
    3 . 在你的tomcat的安裝目錄下找到conf / server.xml 文件,在其中的host 元素下加上如下這一段,這一段是從pentaho的文檔里面抄來的,manual-deployment-pentaho- ,其中它列出來的有些多余,這個(gè)文檔應(yīng)該使用confluence 用pdf 方式導(dǎo)出的,抄的時(shí)候注意檢查一下xml 元素排版上的問題.它列出的resource 元素太多了,你查看pentaho-data- 包里面,應(yīng)該只有四個(gè)數(shù)據(jù)庫(kù)hibernate,sampledata,shark,quartz ,把不用的resource元素都刪掉,(應(yīng)該是最上面的四個(gè)).如果你的tomcat啟動(dòng)不了了,檢查一下你添加的部分是不是有錯(cuò)。

    xml 代碼
    1. <Context path="/pentaho" docbase="webapps/pentaho/">
    2. <Resource name="jdbc/SampleData" auth="Container"
    3. type="javax.sql.DataSource" maxActive="20" maxIdle="5" maxWait="10000"
    4. username="pentaho_user" password="password"
    5. factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    6. driverClassName="org.hsqldb.jdbcDriver"
    7. url="jdbc:hsqldb:hsql://localhost/sampledata" />
    8. <Resource name="jdbc/Hibernate" auth="Container"
    9. type="javax.sql.DataSource"
    10. factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    11. maxActive="20" maxIdle="5" maxWait="10000" username="hibuser"
    12. password="password" driverClassName="org.hsqldb.jdbcDriver"
    13. url="jdbc:hsqldb:hsql://localhost/hibernate" />
    14. <Resource name="jdbc/Quartz" auth="Container"
    15. type="javax.sql.DataSource"
    16. factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    17. maxActive="20" maxIdle="5" maxWait="10000" username="pentaho_user"
    18. password="password" driverClassName="org.hsqldb.jdbcDriver"
    19. url="jdbc:hsqldb:hsql://localhost/quartz" />
    20. <Resource name="jdbc/Shark" auth="Container"
    21. type="javax.sql.DataSource"
    22. factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    23. maxActive="20" maxIdle="5" maxWait="10000" username="sa" password=""
    24. driverClassName="org.hsqldb.jdbcDriver"
    25. url="jdbc:hsqldb:hsql://localhost/shark" />
    26. Context>


    4 . 把pentaho.war copy到tomcat 的webapps目錄下,它會(huì)自動(dòng)解壓的,然后關(guān)閉tomcat , 找到pentaho/WEB-INF/web.xml 文件,找到solution-path元素,指向你解壓后的pentaho-solution- 目錄,注意java里面是用正斜杠 / ,如果你從windows的地址欄copy的話注意把反斜杠改一下.
    5 . 修改pentaho/WEB-INF/classes 目錄下的log4j.xml文件,把 里面的value改成INFO,或者更高,這一步是可選項(xiàng),主要是啟動(dòng)的時(shí)候出現(xiàn)很多不必要的debug 信息.如果你啟動(dòng)的時(shí)候出錯(cuò)了,再改回來。(一般都是solution-path沒有找對(duì),我用7-zip解壓的時(shí)候老是解壓到一個(gè)新的目錄,所以后來指定 solution-path 的時(shí)候,目錄地址高了一級(jí).) 
    6 . 啟動(dòng)pentaho-data- 目錄里面的hsqldb數(shù)據(jù)庫(kù).
    7 . 這個(gè)時(shí)候啟動(dòng)tomcat ,應(yīng)該是不報(bào)任何錯(cuò)誤的.你把瀏覽器指向http://localhost:8080/pentaho ,會(huì)看到pentaho的界面的,只不過是沒有什么顏色的那種.
    8 . 把編譯後的三個(gè)war文件copy到tomcat 的webapps目錄下,等它們自動(dòng)解壓之后,再進(jìn)去看,發(fā)現(xiàn)有了樣式了。安裝就完成了.

    貼幾張圖:
    pentaho成功啟動(dòng)后應(yīng)該有 Pentaho BI 平臺(tái)服務(wù)器就緒 這句話.

    安裝了style 和 portal 包之后的登錄界面

    在pentaho-data- 目錄的lib 目錄下執(zhí)行java -cp hsqldb.jar org.hsqldb.util.DatabaseManager 出現(xiàn)的hsqldb 的manager 登錄畫面
    用戶名和密碼都在相應(yīng)目錄的數(shù)據(jù)庫(kù)文件里面,hsqldb的數(shù)據(jù)庫(kù)文件是可以用
    文本編輯器打開的,搜索password就可以找到用戶名和密碼了
    sampledata 里面的數(shù)據(jù)
    我在安裝的時(shí)候也碰到了諸多的問題,
    1 . 一開始編譯的時(shí)候使用的ant war-pentaho-tomcat 任務(wù),它直接報(bào)錯(cuò),說找不到rdbms目錄,后來猜想這個(gè)任務(wù)應(yīng)該是留給其他數(shù)據(jù)庫(kù)編譯的時(shí)候擴(kuò)展的.直接就換了war-pentaho-tomcat-hypersonic 任務(wù)重新編譯了一次
    2 . 后來從文檔里copy出數(shù)據(jù)源的那句話出錯(cuò)了,導(dǎo)致tomcat啟動(dòng)不了,因?yàn)閺膒df文件copy的那段話排版有問題,后來把它粘貼到eclipse(裝了WTP插件的)里面,一格式化就看出來了,context 元素和后面的屬性path中間的空格沒了,還有多出來了幾個(gè)resource元素.
    3 . 指定solution-path的時(shí)候目錄高了一級(jí).
    4 . 啟動(dòng)tomcat的時(shí)候出現(xiàn)了很多不必要的debug信息,修改log4j文件就可以了,它在tomcat/bin 目錄下還會(huì)生成幾個(gè)log文件,像是server.log 和ReportEngine_.log 文件。

    關(guān)鍵還是要掌握學(xué)習(xí)的方法,學(xué)會(huì)思考問題 . 安裝的時(shí)候也遇到了很多問題,但是只要你細(xì)細(xì)的分析問題的原因,總是可以找出解決的辦法的.

    posted @ 2011-10-07 22:06 Steven_bot 閱讀(643) | 評(píng)論 (0)編輯 收藏

    Eclipse debug模式

    1.Step Into (also F5) 跳入 
    2.Step Over (also F6) 跳過 
    3.Step Return (also F7) 執(zhí)行完當(dāng)前method,然后return跳出
    4.step Filter 逐步過濾 一直執(zhí)行直到遇到未經(jīng)過濾的位置或斷點(diǎn)(設(shè)置Filter:window-preferences-java-Debug-step Filtering) 
    5.resume 重新開始執(zhí)行debug,一直運(yùn)行直到遇到breakpoint 
    6.hit count 設(shè)置執(zhí)行次數(shù) 適合程序中的for循環(huán)(設(shè)置 breakpoint view-右鍵hit count) 
    7.inspect 檢查 運(yùn)算。執(zhí)行一個(gè)表達(dá)式顯示執(zhí)行值 
    8.watch 實(shí)時(shí)地監(jiān)視變量的變化 
    9.我們常說的斷點(diǎn)(breakpoints)是指line breakpoints,除了line breakpoints,還有其他的斷點(diǎn)類型:field(watchpoint)breakpoint,method breakpoint,exception breakpoint. 
    10.field breakpoint 也叫watchpoint(監(jiān)視點(diǎn)) 當(dāng)成員變量被讀取或修改時(shí)暫掛 
    11.添加method breakpoint 進(jìn)入/離開此方法時(shí)暫掛(Run-method breakpoint) 
    12.添加Exception breakpoint 捕抓到Execption時(shí)暫掛
    |-斷點(diǎn)屬性: 
    |-1.hit count 執(zhí)行多少次數(shù)后暫掛 用于循環(huán) 
    |-2.enable condition 遇到符合你輸入條件(為ture\改變時(shí))就暫掛 
    |-3.suspend thread 多線程時(shí)暫掛此線程 
    |-4.suspend VM 暫掛虛擬機(jī) 
    13.variables 視圖里的變量可以改變變量值,在variables 視圖選擇變量點(diǎn)擊右鍵--change value.一次來進(jìn)行快速調(diào)試。 
    14.debug 過程中修改了某些code后--〉save&build-->resume-->重新暫掛于斷點(diǎn)

    posted @ 2011-10-07 21:36 Steven_bot 閱讀(767) | 評(píng)論 (0)編輯 收藏

    使用 Apache Wink、Eclipse 和 Maven 開發(fā) RESTful Web 服務(wù)

         摘要: Apache Wink 是一個(gè)促進(jìn)創(chuàng)建和使用 REST Web 服務(wù)的 Apache 孵化器項(xiàng)目。通過 REST Web 服務(wù),客戶機(jī)和服務(wù)之間的交互局限于一組預(yù)定義的操作,客戶機(jī)和服務(wù)器之間的交互的復(fù)雜性限制為客戶機(jī)和服務(wù)之間交換的資源表示。這種方法支持構(gòu)建可互操作、可伸縮、可靠的、基于 REST 的分布式超媒體系統(tǒng)。常用縮略詞API: 應(yīng)用程序編程接口HTTP: 超文本傳輸...  閱讀全文

    posted @ 2011-10-07 18:18 Steven_bot 閱讀(1564) | 評(píng)論 (0)編輯 收藏

    Java 調(diào)用cmd.exe命令

    java的Runtime.getRuntime().exec(commandText)可以調(diào)用執(zhí)行cmd指令。 

    cmd /c dir 是執(zhí)行完dir命令后關(guān)閉命令窗口。 

    cmd /k dir 是執(zhí)行完dir命令后不關(guān)閉命令窗口。 

    cmd /c start dir 會(huì)打開一個(gè)新窗口后執(zhí)行dir指令,原窗口會(huì)關(guān)閉。 

    cmd /k start dir 會(huì)打開一個(gè)新窗口后執(zhí)行dir指令,原窗口不會(huì)關(guān)閉。 

    可以用cmd /?查看幫助信息。 

    ★CMD命令★ 
    calc ---------------- 啟動(dòng)計(jì)算器 
    charmap ---------- 啟動(dòng)字符映射表 
    cmd.exe ----------- CMD命令提示符(我這不能用,不知乍地?。?nbsp;
    conf ---------------- 啟動(dòng)netmeeting 
    explorer ----------- 打開資源管理器 
    mspaint ----------- 畫圖板 
    notepad ----------- 打開記事本 
    nslookup ---------- IP地址偵測(cè)器 
    odbcad32 --------- ODBC數(shù)據(jù)源管理器 
    regedit ------------- 注冊(cè)表 
    services.msc ----- 本地服務(wù)設(shè)置 
    wordpad ---------- 啟動(dòng)寫字板
    javac 其實(shí)執(zhí)行了 只是沒有輸出執(zhí)行結(jié)果 因?yàn)槟銢]有輸出執(zhí)行結(jié)果的部分
    如果你執(zhí)行Runtime.getRuntime.exec("cmd");
    也看不到結(jié)果 
    因?yàn)樗皇窃趈ava程序中執(zhí)行的而是在操作系統(tǒng)上執(zhí)行的
    你可以這樣Runtime.getRuntime.exec("cmd /c start javac ");
    就可以看到一個(gè)命令行窗口

    posted @ 2011-10-07 18:15 Steven_bot 閱讀(870) | 評(píng)論 (0)編輯 收藏

    JSTL 入門: 表達(dá)式語言

         摘要: JavaServer Pages(JSP)是用于 J2EE 平臺(tái)的標(biāo)準(zhǔn)表示層技術(shù)。JSP 技術(shù)提供了用于執(zhí)行計(jì)算(這些計(jì)算用來動(dòng)態(tài)地生成頁(yè)面內(nèi)容)的腳本編制元素和操作。腳本編制元素允許在 JSP 頁(yè)面中包括程序源代碼,在為響應(yīng)用戶請(qǐng)求而呈現(xiàn)頁(yè)面時(shí)可以執(zhí)行這些源代碼。操作將計(jì)算操作封裝到很象 HTML 或 XML 標(biāo)記的標(biāo)記中,JSP 頁(yè)面的模板文本通常包含這些標(biāo)記。JSP 規(guī)范只將幾種操作定義成了...  閱讀全文

    posted @ 2011-10-07 18:11 Steven_bot 閱讀(276) | 評(píng)論 (0)編輯 收藏

    servlet中的一些疑惑

    因?yàn)镽edirect的流程是這樣的,  request 1  sent to server,  server return back to client,  request 2 then sent to server. But Forward 僅在server side處理, 對(duì)client side 是透明的. 由于Redirect 有兩次傳輸, 所以效率低. 范圍: 由于對(duì)request.setAttribute() 來說, 它攜帶的對(duì)象生存范圍只在request內(nèi), 所以Redirect方式會(huì)導(dǎo)致request攜帶的對(duì)象丟失. 總結(jié):  一般還是用Forward比較合適. 
    ActionMapping

    ActionMapping將對(duì)Struts應(yīng)用中有效的業(yè)務(wù)邏輯進(jìn)行分類,當(dāng)一個(gè)請(qǐng)求到達(dá)時(shí),ActionSevlet在ActionMapping目錄中查找對(duì)應(yīng)的信息。ActionMapping是Struts應(yīng)用的一個(gè)核心設(shè)計(jì),當(dāng)需要了解一個(gè)Struts應(yīng)用,或編寫一個(gè)新的Struts應(yīng)用的時(shí)候,都應(yīng)該從ActionMapping入手。ActionMapping有較多的屬性信息,具體參考相關(guān)文檔。

    ActionForward

    ActionForward是Struts的核心類之一,其基類僅有4個(gè)屬性:name / path / redirect / classname。在基于Struts的Web應(yīng)用程序開發(fā)過程中,Action操作完畢后程序會(huì)通過Struts的配置文件struts- config.xml鏈接到指定的ActionForward,傳到Struts的核心類ActionServlet,ActionServlet使用 ActionForward提供的路徑,將控制傳遞給下一個(gè)步驟。ActionForward控制接下來程序的走向。ActionForward代表一個(gè)應(yīng)用的URI,它包括路徑和參數(shù),例如:

    path=“/modify.do?method=edit&id=10”

    ActionForward的參數(shù)除了在struts-config.xml和頁(yè)面中設(shè)置外,還可以通過在Action類中添加參數(shù),或重新在Action中創(chuàng)建一個(gè)ActionForward。

    在ActionForward中有一個(gè)重要的屬性redirect,當(dāng)redirect=false時(shí),將保存存儲(chǔ)在http請(qǐng)求和請(qǐng)求上下文中的所有內(nèi)容,僅在同一個(gè)應(yīng)用中可用。當(dāng)redirect=true時(shí),Web客戶端進(jìn)行一次新的http請(qǐng)求,請(qǐng)求的資源可以在同一個(gè)應(yīng)用中,也可以不在,原來的請(qǐng)求參數(shù)不再保存,原來的請(qǐng)求上下文也被清除,新的http請(qǐng)求僅包含ActionForward的path屬性里所包含的參數(shù)。如果在同一個(gè)應(yīng)用中,用戶會(huì)話的上下文會(huì)被維護(hù)。

    ActionForward分為全局轉(zhuǎn)發(fā)和局部轉(zhuǎn)發(fā),Action的Mapping對(duì)象的findForward方法首先會(huì)檢查局部轉(zhuǎn)發(fā)列表,查找失敗就會(huì)到全局轉(zhuǎn)發(fā)列表中查找。書寫格式中,我們一般將全局變量定義為String常數(shù),避免誤解,使得轉(zhuǎn)發(fā)列表結(jié)構(gòu)清晰易讀。

    在項(xiàng)目開發(fā)過程中經(jīng)常碰到一種情況,當(dāng)頁(yè)面已經(jīng)改變了,瀏覽器中的地址如/modify.do或/modify.jsp卻沒有變化,當(dāng)時(shí)沒有考慮這么細(xì),雖然存在疑問,但沒有影響到程序功能的實(shí)現(xiàn),因此忽略過去了,今天查找了一些資料才弄清楚??蛻舳藶g覽器顯示的是瀏覽器最后被給定的URL,當(dāng)URL被提交后,在某個(gè)組件返回一個(gè)響應(yīng)給瀏覽器之前,Web應(yīng)用可能已經(jīng)轉(zhuǎn)發(fā)請(qǐng)求多次,而這些過程都發(fā)生在服務(wù)器端,客戶端瀏覽器并不知道有什么變化。當(dāng)一個(gè) http響應(yīng)被返回時(shí),它并沒有包含地址欄的值,所以瀏覽器僅僅顯示其用來作為初始請(qǐng)求的地址。通過使用redirect可以改變?yōu)g覽器地址的顯示,因?yàn)檫@樣可以向?yàn)g覽器提交一個(gè)新的請(qǐng)求,但付出的代價(jià)是數(shù)據(jù)不能通過請(qǐng)求上下文傳遞到頁(yè)面,這也是使用forward和redirect的差異之一

    posted @ 2011-10-07 18:04 Steven_bot 閱讀(353) | 評(píng)論 (0)編輯 收藏

    window.status 和 window.defaultStatus

    在ie下面,設(shè)置了不設(shè)置window.status的時(shí)候,默認(rèn)顯示的是完成,碰到超鏈接以后,顯示的是超鏈接,然后移除后,顯示的是空白,如果指定了window.status之后,在空白的地方顯示的是設(shè)置的值,而且永遠(yuǎn)保持這個(gè)值。

    如果設(shè)置了defaultStatus屬性后,那么只要把鼠標(biāo)放到空白的地方,顯示的都是defaultStatus的值,即使設(shè)置window.status也只是曇花一現(xiàn),到了空白的地方顯示的還是window.defautStatus的值.

     

     

    firefox下面,本身不能使用window.status和window.defaultStatus,只有在about:config中將dom.disable_window_status_change設(shè)置為false之后,才能使這兩個(gè)值生效,

    但是firefox上面,本身默認(rèn)的完成兩個(gè)字不會(huì)被超鏈接清掉,然后window.status和window.defaultStatus的效果是一樣的,只要指定了這兩個(gè)值,那么

    鼠標(biāo)在空白的地方的時(shí)候,狀態(tài)欄上顯示的就是設(shè)置的值,任何一個(gè)都會(huì)把寧外的一個(gè)覆蓋掉。這是與ie上的不同

    posted @ 2011-10-07 17:32 Steven_bot 閱讀(830) | 評(píng)論 (0)編輯 收藏

    window.event對(duì)象解析

         摘要: event代表事件的狀態(tài),例如觸發(fā)event對(duì)象的元素、鼠標(biāo)的位置及狀態(tài)、按下的鍵等等。event對(duì)象只在事件發(fā)生的過程中才有效。event的某些屬性只對(duì)特定的事件有意義。比如,fromElement 和 toElement 屬性只對(duì)onmouseover 和 onmouseout 事件有意義。例子下面的例子檢查鼠標(biāo)是否在鏈接上單擊,并且,如果shift鍵被按下,就取消鏈接的跳轉(zhuǎn)。<html...  閱讀全文

    posted @ 2011-10-07 17:27 Steven_bot 閱讀(370) | 評(píng)論 (0)編輯 收藏

    js關(guān)于document和window對(duì)象

         摘要: [document對(duì)象]  該對(duì)象是window和frames對(duì)象的一個(gè)屬性,是顯示于窗口或框架內(nèi)的一個(gè)文檔?! 傩浴 linkColor 活動(dòng)鏈接的顏色(ALINK)  anchor 一個(gè)HTMI錨點(diǎn),使用<A NAME=>標(biāo)記創(chuàng)建(該屬性本身也是一個(gè)對(duì)象)  anchors array 列出文檔錨點(diǎn)對(duì)象的數(shù)組(<A NAME=>)(該屬性本身也是一個(gè)對(duì)象)  bgC...  閱讀全文

    posted @ 2011-10-07 17:24 Steven_bot 閱讀(2768) | 評(píng)論 (0)編輯 收藏

    JS中setTimeout()的用法詳解

         摘要: 1. SetTimeOut()             1.1 SetTimeOut()語法例子             1.2 用SetTimeOut()執(zhí)行...  閱讀全文

    posted @ 2011-10-07 17:20 Steven_bot 閱讀(47462) | 評(píng)論 (2)編輯 收藏

    JavaScript語言精粹---學(xué)習(xí)總結(jié)

         摘要: 一: 我們應(yīng)該注意的1、== != 與 === !===JavaScript 有兩組相等運(yùn)算符:=== 和 !==,以及它們邪惡的孿生兄弟 == 和 !==。=== 和 !== 這一組運(yùn)算符會(huì)按照你期望的方式工作。如果兩個(gè)運(yùn)算數(shù)類型一致且擁有相同的值,那么 ===&nb...  閱讀全文

    posted @ 2011-10-07 16:04 Steven_bot 閱讀(411) | 評(píng)論 (0)編輯 收藏

    JSTL(fn)

    首先,我們要在頁(yè)面的最上方引用:

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

     

    下面是JSTL中自帶的方法列表以及其描述 

     

    fn:contains(string, substring)

    假如參數(shù)string中包含參數(shù)substring,返回true

    例如:<c:if test="${fn:contains(name, searchString)}">

     

    fn:containsIgnoreCase(string, substring)

    假如參數(shù)string中包含參數(shù)substring(忽略大小寫),返回true

    例如:<c:if test="${fn:containsIgnoreCase(name, searchString)}">

     

    fn:endsWith(string, suffix)

    假如參數(shù) string 以參數(shù)suffix結(jié)尾,返回true

    例如:<c:if test="${fn:endsWith(filename, ".txt")}">

     

    fn:escapeXml(string)

    將有非凡意義的XML (HTML)轉(zhuǎn)換為對(duì)應(yīng)的XML character entity code,并返回

    例如: <字符應(yīng)該轉(zhuǎn)為&lt; ${fn:escapeXml(param:info)}

     

    fn:indexOf(string, substring)

    返回參數(shù)substring在參數(shù)string中第一次出現(xiàn)的位置

    ${fn:indexOf(name, "-")}

     

    fn:join(array, separator)

    將一個(gè)給定的數(shù)組array用給定的間隔符separator串在一起,組成一個(gè)新的字符串并返回。

    ${fn:join(array, ";")}

     

    fn:length(item)

    返回參數(shù)item中包含元素的數(shù)量。參數(shù)Item類型是數(shù)組、collection或者String。假如是String類型,返回值是String中的字符數(shù)。

    ${fn:length(shoppingCart.products)}

     

    fn:replace(string, before, after)

    返回一個(gè)String對(duì)象。用參數(shù)after字符串替換參數(shù)string中所有出現(xiàn)參數(shù)before字符串的地方,并返回替換后的結(jié)果

    ${fn:replace(text, "-", "•")}

     

    fn:split(string, separator)

    返回一個(gè)數(shù)組,以參數(shù)separator 為分割符分割參數(shù)string,分割后的每一部分就是數(shù)組的一個(gè)元素

    ${fn:split(customerNames, ";")}

     

    fn:startsWith(string, prefix)

    假如參數(shù)string以參數(shù)prefix開頭,返回true

    <c:if test="${fn:startsWith(product.id, "100-")}">

     

    fn:substring(string, begin, end)

    返回參數(shù)string部分字符串從參數(shù)begin開始到參數(shù)end位置,包括end位置的字符

    ${fn:substring(zip, 6, -1)}

     

    fn:substringAfter(string, substring)

    返回參數(shù)substring在參數(shù)string中后面的那一部分字符串

    ${fn:substringAfter(zip, "-")}

     

    fn:substringBefore(string, substring)

    返回參數(shù)substring在參數(shù)string中前面的那一部分字符串

    ${fn:substringBefore(zip, "-")}

     

    fn:toLowerCase(string)

    將參數(shù)string所有的字符變?yōu)樾?,并將其返?/span>

    ${fn.toLowerCase(product.name)}

     

    fn:toUpperCase(string)

    將參數(shù)string所有的字符變?yōu)榇髮懀⑵浞祷?/span>

    ${fn.UpperCase(product.name)}

     

    fn:trim(string)

    去除參數(shù)string 首尾的空格,并將其返回

    ${fn.trim(name)}

     

     下面是一個(gè)在頁(yè)面顯示時(shí)超過100個(gè)字符以后用......代替的方法:

    <c:set var="testStr" value="${analyze.command}" />

                  <c:choose>

                       <c:when test="${fn:length(testStr) > 100}">

                          <c:out value="${fn:substring(testStr, 0, 100)}" />  ......

                       </c:when>

                       <c:otherwise>

                          <c:out value="${testStr}" />

                       </c:otherwise>

                  </c:choose>

    posted @ 2011-10-07 15:46 Steven_bot 閱讀(519) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題  下一頁(yè)
    主站蜘蛛池模板: 亚洲日本一区二区三区在线| 亚洲国产一区国产亚洲| 亚洲精品国产成人专区| 亚洲精品无码国产片| 青柠影视在线观看免费| 在线中文高清资源免费观看| 久久伊人亚洲AV无码网站| 国产精品高清视亚洲精品| 国产一二三四区乱码免费| 成人a视频片在线观看免费| 亚洲国产精品成人精品无码区在线| 国产成人亚洲综合网站不卡| 在线观看免费黄色网址| 妞干网免费视频在线观看| 亚洲gv白嫩小受在线观看| 国产精品亚洲一区二区无码| 51在线视频免费观看视频| 国产成人精品久久亚洲| 久久亚洲国产成人影院| 久久国产精品免费视频| 免费永久看黄在线观看app| 亚洲国产高清美女在线观看| 巨胸喷奶水视频www免费视频| 午夜毛片不卡高清免费| 亚洲精品免费在线视频| 在线观看免费无码视频| 又大又硬又爽免费视频| 亚洲乱码一区av春药高潮| 精品亚洲永久免费精品| 亚洲AV伊人久久青青草原| 亚洲偷偷自拍高清| 9420免费高清在线视频| 亚洲一区AV无码少妇电影☆| 毛片亚洲AV无码精品国产午夜| 最近中文字幕完整版免费高清| 亚洲综合色婷婷七月丁香| 国产精品观看在线亚洲人成网| 青青视频观看免费99| 久久久婷婷五月亚洲97号色| 国产免费牲交视频免费播放 | 亚洲老妈激情一区二区三区|