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

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

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

    今天看見(jiàn)的一個(gè)日期控件,感覺(jué)很強(qiáng)大。與大家共享。
    演示地址 http://www.my97.net/dp/demo/


    posted @ 2008-09-04 15:03 勒緊皮帶向前沖 閱讀(360) | 評(píng)論 (0)編輯 收藏
     
    Iterate主要用來(lái)處理在頁(yè)面上輸出集合類,集合一般來(lái)說(shuō)是下列之一:
    1、 java對(duì)象的數(shù)組

    2、 ArrayList、Vector、HashMap等

    具體用法請(qǐng)參考struts文檔,這里不作詳細(xì)介紹

    現(xiàn)在定義一個(gè)class,User.java 把它編譯成User.class

    package example;

    import java.io.Serializable;
    public final class User implements Serializable {
    private String name = null;
    private String password = null;

    public String getName () {
    return (this.name);
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword () {
    return (this. password);
    }

    public void setPassword (String password) {
    this. password = password;
    }

    }

    然后在一個(gè)struts webapplication中創(chuàng)建一個(gè)jsp,例如iterate.jsp

    <%@ page language=”java” %>
    <%@ page import=”example.*%>
    <%@ taglib uri=/WEB-INF/struts-bean.tld” prefix=”bean” %>
    <%@ taglib uri=/WEB-INF/struts-logic.tld” prefix=”logic” %>

    <%
    java.util.ArrayList list 
    = new java.util.ArrayList();
    User usera
    =new User();
    usera.setName(”white”);
    usera.setPassword(”abcd”);
    list.add(usera);
    User userb
    =new User();
    userb.setName(”mary”);
    userb.setPassword(”hijk”);
    list.add(userb);
    session.setAttribute(”list”, list);

    %>

    <html><body><table width=”100%”>

    <logic:iterate id=”a” name=”list” type=” example.User “>

    <tr><td width=”50%”>

    name: 
    <bean:write name=”a” property=”name”/>

    <td/><td width=”50%”>

    password: 
    <bean:write name=”a” property=”password”/>

    </td></tr>

    </logic:iterate>

    </table></body></html>
    將User.class, iterate.jsp放到相應(yīng)的目錄,運(yùn)行iterate.jsp你就可以看到iterate的效果了

    iterate標(biāo)記
    id 腳本變量的名稱,它保存著集合中當(dāng)前元素的句柄。
    name 代表了你需要疊代的集合,來(lái)自session或者request的屬性。
    type 是其中的集合類元素的類型

    bean的write標(biāo)記是用來(lái)將屬性輸出的,name用來(lái)匹配iterate的id,property用來(lái)匹配相應(yīng)類的屬性

    <logic:iterate>用法詳解2

    2007-04-04 20:34

    <login:iterate>標(biāo)記用于在頁(yè)面中創(chuàng)建一個(gè)循環(huán),以此來(lái)遍歷如數(shù)組、Collection、Map這樣的對(duì)象。該標(biāo)記的功能強(qiáng)大,在Struts應(yīng)用的頁(yè)面中經(jīng)常使用到。
    1、對(duì)數(shù)組進(jìn)行循環(huán)遍歷
    使用
    <logic:iterate>標(biāo)記可以用于遍歷數(shù)組,以下是一段示例代碼:

     

    程序代碼 程序代碼

    <%
    String[] testArray={”str1″,”str2″,”str3″};
    pageContext.setAttribute(”test”,testArray);
    %>
    <logic:iterate id=”show” name=”test”>
    <bean:write name=”show”/>
    </logic:iterate>
    在上面的代碼中,首先定義了一個(gè)字符串?dāng)?shù)組,并為其初始化。接著,將該數(shù)組存入pageContext對(duì)象中,命名為test1。然后使用
    <logic:iterate>標(biāo)記的name屬性指定了該數(shù)組,并使用id來(lái)引用它,同時(shí)使用<bean:write>標(biāo)記來(lái)將其顯示出來(lái)。其結(jié)果為:
    str1
    str2
    str3

    另外,還可以通過(guò)length屬性來(lái)指定輸出元素的個(gè)數(shù)。如下面的代碼:

     

    程序代碼 程序代碼

    <logic:iterate id=”show” name=”test” length=”2″ offset=”1″>
    <bean:write name=”show”/>
    </logic:iterate>
    其中l(wèi)ength屬性指定了輸出元素的個(gè)數(shù),offset屬性指定了從第幾個(gè)元素開(kāi)始輸出,如此處為1,則表示從第二個(gè)元素開(kāi)始輸出。所以該代碼的運(yùn)行結(jié)果應(yīng)當(dāng)輸出:
    str2
    str3

    另外,該標(biāo)記還有一個(gè)indexId屬性,它指定一個(gè)變量存放當(dāng)前集合中正被訪問(wèn)的元素的序號(hào),如:

     

    程序代碼 程序代碼

    <logic:iterate id=”show” name=”test” length=”2″ offset=”1″ indexId=”number”>
    <bean:write name=”number”/>:<bean:write name=”show”/>
    </logic:iterate>
    其顯示結(jié)果為:
    1:str2
    2:str3

    2、對(duì)HashMap進(jìn)行循環(huán)遍歷

     

    程序代碼 程序代碼

    <%
    HashMap countries
    =new HashMap();
    countries.put(”country1″,”中國(guó)”);
    countries.put(”country2″,”美國(guó)”);
    countries.put(”country3″,”英國(guó)”);
    countries.put(”country4″,”法國(guó)”);
    countries.put(”country5″,”德國(guó)”);
    pageContext.setAttribute(”countries”,countries);
    %>
    <logic:iterate id=”country” name=”countries”>
    <bean:write name=”country” property=”key”/>:
    <bean:write name=”country” property=”value”/>
    </logic:iterate>
    在bean:write中通過(guò)property的key和value分別獲得HaspMap對(duì)象的鍵和值。其顯示結(jié)果為:
    country5:德國(guó)
    country3:英國(guó)
    country2:美國(guó)
    country4:法國(guó)
    country1:中國(guó)
    由結(jié)果可看出,它并未按添加的順序?qū)⑵滹@示出來(lái)。這是因?yàn)镠aspMap是無(wú)序存放的。

    3、嵌套遍歷

     

    程序代碼 程序代碼

    <%
    String[] colors={”red”,”green”,”blue”};
    String[] countries1={”中國(guó)”,”美國(guó)”,”法國(guó)”};
    String[] persons={”喬丹”,”布什”,”克林頓”};
    ArrayList list2
    =new ArrayList();
    list2.add(colors);
    list2.add(countries1);
    list2.add(persons);
    pageContext.setAttribute(”list2″,list2);
    %>
    <logic:iterate id=”first” name=”list2″ indexId=”numberfirst”>
    <bean:write name=”numberfirst”/>
    <logic:iterate id=”second” name=”first”>
    <bean:write name=”second”/>
    </logic:iterate>
    <br>
    </logic:iterate>
    運(yùn)行效果:
    0 red green blue
    1 中國(guó) 美國(guó) 法國(guó)
    2 喬丹 布什 克林頓


    <logic:iterate id="myBean" indexId="ind" name="循環(huán)JavaBean的對(duì)象名稱">

    <bean:write name="myBean" property="Bean的屬性">

      <!--循環(huán)Map-->
       <logic:iterate id="myHashMap" indexId="mapInd" name="myBean" property="hashMap名稱">
             <!--輸出hashMap的鍵,不需要可以不用這行-->
             <bean:write name="myHashMap" property="key">

             <!--輸出hashMap的值,如果值是個(gè)數(shù)組或者又一個(gè)MAP你可以再對(duì)他循環(huán)-->
             <bean:write name="myHashMap" property="value">
       </logic:iterate>

    <logic:iterate>



    轉(zhuǎn)自 聽(tīng)雪樓 http://www.tingxuelou.com/index.php/archives/517

    posted @ 2008-09-02 16:44 勒緊皮帶向前沖 閱讀(189) | 評(píng)論 (0)編輯 收藏
     
    在單一的服務(wù)器上執(zhí)行WEB應(yīng)用程序有一些重大的問(wèn)題,當(dāng)網(wǎng)站成功建成并開(kāi)始接受大量請(qǐng)求時(shí),單一服務(wù)器終究無(wú)法滿足需要處理的負(fù)荷量,所以就有點(diǎn)顯得有點(diǎn)力不從心了。另外一個(gè)常見(jiàn)的問(wèn)題是會(huì)產(chǎn)生單點(diǎn)故障,如果該服務(wù)器壞掉,那么網(wǎng)站就立刻無(wú)法運(yùn)作了。不論是因?yàn)橐休^佳的擴(kuò)充性還是容錯(cuò)能力,我們都會(huì)想在一臺(tái)以上的服務(wù)器計(jì)算機(jī)上執(zhí)行WEB應(yīng)用程序。所以,這時(shí)候我們就需要用到集群這一門(mén)技術(shù)了。

             在進(jìn)入集群系統(tǒng)架構(gòu)探討之前,先定義一些專門(mén)術(shù)語(yǔ):
    1. 集群(Cluster):是一組獨(dú)立的計(jì)算機(jī)系統(tǒng)構(gòu)成一個(gè)松耦合的多處理器系統(tǒng),它們之間通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)進(jìn)程間的通信。應(yīng)用程序可以通過(guò)網(wǎng)絡(luò)共享內(nèi)存進(jìn)行消息傳送,實(shí)現(xiàn)分布式計(jì)算機(jī)。 
    2. 負(fù)載均衡(Load Balance):先得從集群講起,集群就是一組連在一起的計(jì)算機(jī),從外部看它是一個(gè)系統(tǒng),各節(jié)點(diǎn)可以是不同的操作系統(tǒng)或不同硬件構(gòu)成的計(jì)算機(jī)。如一個(gè)提供Web服務(wù)的集群,對(duì)外界來(lái)看是一個(gè)大Web服務(wù)器。不過(guò)集群的節(jié)點(diǎn)也可以單獨(dú)提供服務(wù)。
    3. 特點(diǎn):在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,負(fù)載均衡提供了一種廉價(jià)有效的方法擴(kuò)展服務(wù)器帶寬和增加吞吐量,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,提高網(wǎng)絡(luò)的靈活性和可用性。集群系統(tǒng)(Cluster)主要解決下面幾個(gè)問(wèn)題: 
    高可靠性(HA):利用集群管理軟件,當(dāng)主服務(wù)器故障時(shí),備份服務(wù)器能夠自動(dòng)接管主服務(wù)器的工作,并及時(shí)切換過(guò)去,以實(shí)現(xiàn)對(duì)用戶的不間斷服務(wù)。
    高性能計(jì)算(HP):即充分利用集群中的每一臺(tái)計(jì)算機(jī)的資源,實(shí)現(xiàn)復(fù)雜運(yùn)算的并行處理,通常用于科學(xué)計(jì)算領(lǐng)域,比如基因分析,化學(xué)分析等。 
    負(fù)載平衡:即把負(fù)載壓力根據(jù)某種算法合理分配到集群中的每一臺(tái)計(jì)算機(jī)上,以減輕主服務(wù)器的壓力,降低對(duì)主服務(wù)器的硬件和軟件要求。

    目前比較常用的負(fù)載均衡技術(shù)主要有: 
    1. 基于DNS的負(fù)載均衡 
    通過(guò)DNS服務(wù)中的隨機(jī)名字解析來(lái)實(shí)現(xiàn)負(fù)載均衡,在DNS服務(wù)器中,可以為多個(gè)不同的地址配置同一個(gè)名字,而最終查詢這個(gè)名字的客戶機(jī)將在解析這個(gè)名字時(shí)得到其中一個(gè)地址。因此,對(duì)于同一個(gè)名字,不同的客戶機(jī)會(huì)得到不同的地址,他們也就訪問(wèn)不同地址上的Web服務(wù)器,從而達(dá)到負(fù)載均衡的目的。 

    2. 反向代理負(fù)載均衡 (如Apache+JK2+Tomcat這種組合)
    使用代理服務(wù)器可以將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部的Web服務(wù)器,讓代理服務(wù)器將請(qǐng)求均勻地轉(zhuǎn)發(fā)給多臺(tái)內(nèi)部Web服務(wù)器之一上,從而達(dá)到負(fù)載均衡的目的。這種代理方式與普通的代理方式有所不同,標(biāo)準(zhǔn)代理方式是客戶使用代理訪問(wèn)多個(gè)外部Web服務(wù)器,而這種代理方式是多個(gè)客戶使用它訪問(wèn)內(nèi)部Web服務(wù)器,因此也被稱為反向代理模式。

    3. 基于NAT(Network Address Translation)的負(fù)載均衡技術(shù) (如Linux Virtual Server,簡(jiǎn)稱LVS)
    網(wǎng)絡(luò)地址轉(zhuǎn)換為在內(nèi)部地址和外部地址之間進(jìn)行轉(zhuǎn)換,以便具備內(nèi)部地址的計(jì)算機(jī)能訪問(wèn)外部網(wǎng)絡(luò),而當(dāng)外部網(wǎng)絡(luò)中的計(jì)算機(jī)訪問(wèn)地址轉(zhuǎn)換網(wǎng)關(guān)擁有的某一外部地址時(shí),地址轉(zhuǎn)換網(wǎng)關(guān)能將其轉(zhuǎn)發(fā)到一個(gè)映射的內(nèi)部地址上。因此如果地址轉(zhuǎn)換網(wǎng)關(guān)能將每個(gè)連接均勻轉(zhuǎn)換為不同的內(nèi)部服務(wù)器地址,此后外部網(wǎng)絡(luò)中的計(jì)算機(jī)就各自與自己轉(zhuǎn)換得到的地址上服務(wù)器進(jìn)行通信,從而達(dá)到負(fù)載分擔(dān)的目的。

    介紹完上面的集群技術(shù)之后,下面就基于Tomcat的集群架構(gòu)方案進(jìn)行說(shuō)明:

    上面是采用了Apache httpd作為web服務(wù)器的,即作為T(mén)omcat的前端處理器,根據(jù)具體情況而定,有些情況下是不需要Apache httpd作為 web 服務(wù)器的,如系統(tǒng)展現(xiàn)沒(méi)有靜態(tài)頁(yè)面那就不需要Apache httpd,那時(shí)可以直接使用Tomcat作為web 服務(wù)器來(lái)使用。使用Apache httpd主要是它在處理靜態(tài)頁(yè)面方面的能力比Tomcat強(qiáng)多了。
    1、 用戶的網(wǎng)頁(yè)瀏覽器做完本地 DNS和企業(yè)授權(quán)的DNS之的請(qǐng)求/響應(yīng)后,這時(shí)候企業(yè)授權(quán)的DNS(即21cn BOSS DNS)會(huì)給用戶本地的DNS服務(wù)器提供一個(gè)NAT請(qǐng)求分配器(即網(wǎng)關(guān))IP。


    2、 NAT分配器,它會(huì)根據(jù)特定的分配算法,來(lái)決定要將連接交給哪一臺(tái)內(nèi)部 Apache httpd來(lái)處理請(qǐng)求。大多數(shù)的NAT請(qǐng)求分配器提供了容錯(cuò)能力:根據(jù)偵測(cè)各種WEB服務(wù)器的失效狀況,停止將請(qǐng)求分配給已經(jīng)宕掉的服務(wù)器。并且有些分配器還可以監(jiān)測(cè)到WEB服務(wù)器機(jī)器的負(fù)載情況,并將請(qǐng)求分配給負(fù)載最輕的服務(wù)器等等。Linux Virtual Server是一個(gè)基于Linux操作系統(tǒng)上執(zhí)行的VS-NAT開(kāi)源軟件套件,而且它有豐富的功能和良好的說(shuō)明文件。商業(yè)硬件解決方案 Foundry Networks的ServerIron是目前業(yè)界公認(rèn)最佳的請(qǐng)求分配器之一。


    3、 Apache httpd + Mod_JK2在這里是作為負(fù)載均衡器,那為什么要做集群呢?如果集群系統(tǒng)要具備容錯(cuò)能力,以便在任何單一的硬件或軟件組件失效時(shí)還能100%可用,那么集群系統(tǒng)必須沒(méi)有單點(diǎn)故障之憂。所以,不能只架設(shè)一臺(tái)有mod_jk2的Apache httpd,因?yàn)槿绻?nbsp;httpd或mod_jk2失效了,將不會(huì)再有請(qǐng)求被會(huì)送交到任何一個(gè)Tomcat 實(shí)例。這種情況下,Apache httpd就是瓶勁,特別在訪問(wèn)量大的網(wǎng)站。


    4、 Mod_JK2負(fù)載均衡與故障復(fù)原,決定把Apache httpd當(dāng)成web服務(wù)器,而且使用mod_jk2將請(qǐng)求傳送給Tomcat,則可以使用mod_jk2的負(fù)載均衡與容錯(cuò)功能。在集群系統(tǒng)中,帶有mod_jk2的Apache httpd可以做的事情包括:
    A、 將請(qǐng)求分配至一或多個(gè)Tomcat實(shí)例上
    你可以在mod_jk2的workers.properties文件中,設(shè)定許多Tomcat實(shí)例,并賦于每個(gè)實(shí)例一個(gè)lb_factor值,以作為請(qǐng)求分配的加權(quán)因子。


    B、 偵測(cè)Tomcat實(shí)例是否失敗
    當(dāng)Tomcat實(shí)例的連接器服務(wù)不再響應(yīng)時(shí),mod_jk2會(huì)及時(shí)偵測(cè)到,并停止將請(qǐng)求送給它。其他的Tomcat實(shí)例則會(huì)接受失效實(shí)例的負(fù)載。


    C、 偵測(cè)Tomcat實(shí)例在失效后的何時(shí)恢復(fù)
    因連接器服務(wù)失效,而停止將請(qǐng)求分配給Tomcat實(shí)例之后,mod_jk2會(huì)周期性地檢查是否已恢復(fù)使用性,并自動(dòng)將其加入現(xiàn)行的Tomcat實(shí)例池中。


    5、 Tomcat中的集群原理是通過(guò)組播的方式進(jìn)行節(jié)點(diǎn)的查找并使用TCP連接進(jìn)行會(huì)話的復(fù)制。這里提示一下就是,對(duì)每個(gè)請(qǐng)求的處理,Tomcat都會(huì)進(jìn)行會(huì)話復(fù)制,復(fù)制后的會(huì)話將會(huì)慢慢變得龐大。


    6、 Mod_jk2同時(shí)支持會(huì)話親和和會(huì)話復(fù)制。在tomcat 5中如何實(shí)現(xiàn)會(huì)話親和和會(huì)話復(fù)制?把server.xml中的
    <cluster/>標(biāo)簽去掉就實(shí)現(xiàn)會(huì)話親和,把<cluster/>標(biāo)簽加上就實(shí)現(xiàn)會(huì)話復(fù)制。


    7、 會(huì)話親和:就是表示來(lái)自同會(huì)話的所有請(qǐng)求都由相同的Tomcat 實(shí)例來(lái)處理,這種情況下,如果Tomcat實(shí)例或所執(zhí)行的服務(wù)器機(jī)器失效,也會(huì)喪失Servlet的會(huì)話數(shù)據(jù)。即使在集群系統(tǒng)中執(zhí)行更多的Tomcat實(shí)例,也永遠(yuǎn)不會(huì)復(fù)制會(huì)話數(shù)據(jù)。這樣是提高集群性能的一種方案,但不具備有容錯(cuò)能力了。


    8、 使用會(huì)話復(fù)制,則當(dāng)一個(gè)Tomcat實(shí)例宕掉時(shí),由于至少還有另一個(gè)Tomcat實(shí)例保有一份會(huì)話狀態(tài)數(shù)據(jù),因而數(shù)據(jù)不會(huì)喪失。但性能會(huì)有所降低。 
    posted @ 2008-08-26 16:53 勒緊皮帶向前沖 閱讀(166) | 評(píng)論 (0)編輯 收藏
     
    轉(zhuǎn)自 http://www.tkk7.com/SteelHand/archive/2005/07/01/6974.html

    第3.10式. 過(guò)濾文本輸入
    問(wèn)題

    你想要渲染包含HTML標(biāo)記的數(shù)據(jù),并且希望該數(shù)據(jù)被瀏覽器當(dāng)作HTML標(biāo)記解釋和處理。
    動(dòng)作要

    很簡(jiǎn)單,可以使用:
    <bean:write name="myForm" property="freeText" filtered="false"/>

     

    在使用JSTL時(shí),你也可以使用未過(guò)濾的值:
    <c:out value="${myForm.freeText}" escapeXml="false"/>

     
    動(dòng)作變化

    在你使用Struts bean:write 標(biāo)簽來(lái)產(chǎn)生文本時(shí),默認(rèn)情況下任何對(duì)HTML處理敏感的字符都要被它們的對(duì)等實(shí)體代替。例如,大于號(hào)字符(>) 將被替代為
    &gt;字符實(shí)體。這種特征稱為是響應(yīng)過(guò)濾( response filtering),默認(rèn)情況下是激活的。在大多數(shù)情況下,過(guò)濾正是希望的行為,因?yàn)槲唇?jīng)過(guò)濾的文本可能被瀏覽器誤解釋。Table 3-4 列出了被bean:write標(biāo)簽過(guò)濾的字符和它們的對(duì)應(yīng)實(shí)體。
    Table 3-4. 被過(guò)濾的字符

    字符名稱
        

    字符值
        

    替代實(shí)體

    大于
        

    < 
        

    &lt
    ;

    小于
        

    > 
        

    &gt;

    &符號(hào)
        

    &
        

    &amp;

    雙引號(hào)
        

    "
        

    &quot;

    反斜杠
        

    \
        

    '

     

    但是有時(shí)候,你希望被渲染的文本中包括HTML 標(biāo)簽。假設(shè)你有一個(gè)在線日志應(yīng)用,允許用戶輸入將要顯示在一個(gè)頁(yè)面中的文本。允許使用HTML 標(biāo)簽將使得用戶可以那些可以格式化文本的標(biāo)記。文本中可能包含超鏈接,不同的字體,以及圖像等等。在其他情形下,你的應(yīng)用可能可能還會(huì)從其他來(lái)源,比如另一個(gè)URL,一個(gè)XML文件,一個(gè)Web Service或者數(shù)據(jù)庫(kù)中,獲得HTML模板文本。

    通過(guò)將bean:write標(biāo)簽的filtered屬性設(shè)置為false,你就可以告訴Struts標(biāo)簽不要使用相應(yīng)的實(shí)體替換 tag not to 特殊字符。首先,我們來(lái)看一下過(guò)濾是如何工作的。假設(shè)一個(gè)用戶在表單中輸入了下面的文本:
    Apache Struts Web Framework 
    <b>rocks</b>!

     

    現(xiàn)在這個(gè)文本將被bean:write標(biāo)簽來(lái)渲染顯示。當(dāng)filtered 屬性設(shè)施為true時(shí),特殊字符將被其對(duì)等物替換,這樣文本看起來(lái)就會(huì)是:
    Apache Struts Web Framework 
    &lt;b&gt;rocks&lt;/b&gt;!

    這很有可能不是用戶所想要的。他想要的是"Apache Struts Web Framework rocks!"。但是,因?yàn)橐鈭D是想要允許用戶輸入裝飾文本的HTML標(biāo)簽,那么將filtered屬性設(shè)置為false 就會(huì)得到正確的渲染:
    Apache Struts Web Framework 
    <b>rocks</b>!

     

    瀏覽器將認(rèn)識(shí)這個(gè)標(biāo)簽,并且按其所愿正確的應(yīng)用HTML 標(biāo)記。

    這在渲染一個(gè)Web頁(yè)面時(shí)式一個(gè)有用的機(jī)制。但是,在使用這個(gè)方法時(shí)必須足夠小心。如果數(shù)據(jù)是沒(méi)有過(guò)濾的,那么就可能會(huì)危及渲染后的 HTML頁(yè)面的布局,整個(gè)頁(yè)面可能會(huì)看起來(lái)遭到破壞。例如,假定下面的文本被輸入:
    Apache Struts Web Framework 
    <b>rocks<b>!

     

    咋看起來(lái),這沒(méi)什么問(wèn)題。但是,注意到b元素的后面一個(gè)關(guān)閉標(biāo)簽的斜杠缺失了。這個(gè)錯(cuò)誤很容易發(fā)生,而且這可能會(huì)使得頁(yè)面中后面的所有文本都是粗體。

    不幸的是,要避免這類錯(cuò)誤是很困難的。最好還是試圖確保輸入的數(shù)據(jù)都是正確有效的HTML。還有個(gè)選擇就是通過(guò)XML 解析器來(lái)處理輸出。它會(huì)檢測(cè)諸如標(biāo)記不匹配之類的問(wèn)題。你還可以通過(guò)一些能夠試圖糾正問(wèn)題的解析器來(lái)完成,比如Jtidy。最后,如果數(shù)據(jù)是來(lái)自于非受控的來(lái)源,你可以選擇完全不允許HTML。如果你還想使用一些文本裝飾功能的話,還可以考慮使用WikiText 或者UBB Code之類的格式表示來(lái)替代。
    相關(guān)動(dòng)作

    JTidy 提供了一個(gè)命令行接口和Java API 來(lái)解析和整理HTML。關(guān)于JTidy 的細(xì)節(jié)請(qǐng)?jiān)L問(wèn)http://jtidy.sourceforge.net。

    UBBCode 是PHP本身支持的一種標(biāo)記格式。也可以在Java中處理UBBCode。一個(gè)解析UBBCode 的PHP函數(shù),有人在Java中重寫(xiě)了,地址可見(jiàn):http://www.firegemsoftware.com/other/tutorials/ubb.php.

    posted @ 2008-08-26 13:03 勒緊皮帶向前沖 閱讀(277) | 評(píng)論 (0)編輯 收藏
     
     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
     2 <HTML>
     3  <HEAD>
     4   <TITLE> New Document </TITLE>
     5   <META NAME="Generator" CONTENT="EditPlus">
     6   <META NAME="Author" CONTENT="">
     7   <META NAME="Keywords" CONTENT="">
     8   <META NAME="Description" CONTENT="">
     9   <script>
    10     var fileSize=160;
    11     var fileType="jpg,gif,bmp,png";
    12     var bool=false;   //0代表上傳的類型不對(duì),1代表上傳的類型正確
    13     var str="";
    14     function checkform(){
    15        str=document.getElementById("photo").value.toLowerCase();
    16        var ext=str.split(".");
    17        var type=fileType.split(",");
    18        for(var i=0;i<type.length;i++){
    19          alert(ext[1]+","+type[i]);
    20          if(ext[1]==type[i]){
    21             bool=true;
    22             alert(bool);
    23          }
    24        }
    25       if(bool){
    26          var boolSize=checkSize(str);
    27          alert(boolSize);
    28          if(boolSize){
    29           alert("上傳成功");
    30          }else{
    31           alert("你上傳的圖片太大,不能超過(guò)"+fileSize+"KB");
    32          }
    33        }else{
    34            bool=false;
    35             alert("你上傳的類型不是"+type+"中的一種");
    36        }
    37     }
    38     function checkSize(fileName){
    39       var img=new Image();
    40         img.src=str;
    41         fsize=img.fileSize/1024;
    42         fsize=fsize.toFixed(1);
    43        if(img.readyState!="complete"){
    44          bool=false;
    45          return false;
    46        }else{
    47          alert(fsize+","+fileSize);
    48          if(fsize>fileSize){
    49              bool=false;
    50             return false;
    51          }else{
    52           bool=false;
    53           return true;
    54          }
    55         }
    56     }
    57   </script>
    58  </HEAD>
    59 
    60  <BODY>
    61 <form   name= "form1 "   action= " "> 
    62 照片: <input  type="file"  name= "photo" id="photo" value= " "   onchange= "checkform();"> 
    63 </form> 
    64  </BODY>
    65 </HTML>
    66 
    posted @ 2008-08-25 11:35 勒緊皮帶向前沖 閱讀(419) | 評(píng)論 (0)編輯 收藏
     
    1function CheckFile(f,p)
     
    2{
     
    3//判斷圖片尺寸
     4var img=null;
     5img
    =document.createElement("img");
     6document.body.insertAdjacentElement(
    "beforeend",img);
     7img.style.visibility
    ="hidden"
     8img.src
    =f;
     9
    var imgwidth=img.offsetWidth;
    10
    var imgheight=img.offsetHeight;
    11
    if(p.name=="UpFile_Photo1")
    12{
    13
    if(imgwidth!=68||imgheight!=68)
    14{
    15alert(
    "小圖的尺寸應(yīng)該是68x68");
    16}
    17}
    18
    if(p.name=="UpFile_Photo2")
    19{
    20
    if(imgwidth!=257||imgheight!=351)
    21{
    22alert(
    "中圖的尺寸應(yīng)該是257x351");
    23}
    24}
    25
    if(p.name=="UpFile_Photo3")
    26{
    27
    if(imgwidth!=800||imgheight!=800)
    28{
    29alert(
    "大圖的尺寸應(yīng)該是800x800");
    30}
    31}
    32//判斷圖片類型
    33if(!/\.(gif|jpg|jpeg|bmp)$/.test(f))
    34{
    35alert(
    "圖片類型必須是.gif,jpeg,jpg,bmp中的一種")
    36
    return false;
    37}
    38
    return true;
    39}


    1<input type="file" id="UpFile_Photo1" runat="server" name="UpFile_Photo1" 
    2size
    ="35" onpropertychange="CheckFile(this.value,this)">小圖<br />
    3
    <input type="file" id="UpFile_Photo2" runat="server" name="UpFile_Photo2" 
    4size
    ="35" onpropertychange="CheckFile(this.value,this)">中圖<br />
    5
    <input type="file" id="UpFile_Photo3" runat="server" name="UpFile_Photo3" 
    6size
    ="35" onpropertychange="CheckFile(this.value,this)">大圖<br />


    轉(zhuǎn)自  http://www.cnblogs.com/lixx/archive/2008/06/12/1218599.html
    posted @ 2008-08-25 11:04 勒緊皮帶向前沖 閱讀(224) | 評(píng)論 (0)編輯 收藏
     
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=??????">
    <script language="javascript">
    <!--
    function imgSel()
    {
    var img = new Image();
    img.src = document.imageForm.file.value;
    document.imageForm.width.value = img.width;
    document.imageForm.height.value = img.height;
    document.imageForm.size.value = img.fileSize;
    document.images['image'].src = img.src;
    }
    -->
    </script>
    </head>
    <body>
    <form name="imageForm">
    寬: <input name="width" type="text" size="6"> 高: <input name="height" type="text" size="6"> 大小: <input name="size" type="text" size="6"><br>
    <input name="file" type="file" onChange="imgSel()"><br>
    <img src="" name="image">
    </form>
    </body>
    </html>

    轉(zhuǎn)自 http://info.codepub.com/2006/10/info-7912.html
    posted @ 2008-08-25 10:47 勒緊皮帶向前沖 閱讀(1122) | 評(píng)論 (0)編輯 收藏
     
    轉(zhuǎn)自    http://www.gold98.net/blog/article.asp?id=125
    不能刪除包含主鍵的行,該主鍵被用做另一個(gè)表的外鍵

    Error: orA-02292: integrity constraint <constraint name> violated - child record found 
    Cause: You tried to Delete a record from a parent table (as referenced by a foreign key), but a record in the child table exists. 
    Action: The options to resolve this oracle error are: 
    This error commonly occurs when you have a parent-child relationship established between two tables through a foreign key. You then have tried to delete a value into the parent table, but the corresponding value exists in the child table. 
    To correct this problem, you need to update or delete the value into the child table first and then you can delete the corresponding value into the parent table.



    For example, if you had created the following foreign key (parent-child relationship).

    Create TABLE supplier 
    ( supplier_id numeric(10) not null, 
     supplier_name varchar2(50) not null, 
     contact_name varchar2(50),  
     CONSTRAINT supplier_pk PRIMARY KEY (supplier_id) 
    ); 

    Create TABLE products 
    ( product_id numeric(10) not null, 
     supplier_id numeric(10) not null, 
     CONSTRAINT fk_supplier 
       FOREIGN KEY (supplier_id) 
       REFERENCES supplier (supplier_id) 
    ); 



    Then you try inserting into the products table as follows:

    Insert INTO supplier
    (supplier_id, supplier_name, contact_name)
    VALUES (1000, 'Microsoft', 'Bill Gates');

    Insert INTO products
    (product_id, supplier_id)
    VALUES (50000, 1000);



    Then you tried to delete the record from the supplier table as follows:

    Delete from supplier
    Where supplier_id = 1000;



    You would receive the following error message:




    Since the supplier_id value of 100 exists in the products,  you need to first delete the record from the products table as follows:

    Delete from products
    Where supplier_id = 1000;

    Then you can delete from the supplier table:

    Delete from supplier
    Where supplier_id = 1000;


    不能刪除包含主鍵的行,該主鍵被用做另一個(gè)表的外鍵

    完整性約束錯(cuò)誤

    如果你嘗試刪除一條記錄,該記錄中的值依賴一個(gè)完整性約束,一個(gè)錯(cuò)誤被返回。

    某例子試圖從DEPARTMENTS表中刪除部門(mén)號(hào)60,但執(zhí)行該語(yǔ)句將返回一個(gè)錯(cuò)誤,因?yàn)椴块T(mén)號(hào)在EMPLOYEES表中被用做外鍵。如果你試圖刪除的父記錄有子記錄,那么,你將收到child record found violation orA-02292。
    下面的語(yǔ)句可以正常工作,因?yàn)樵诓块T(mén)70中沒(méi)有雇員:
    Delete FROM departments
    Where department_id = 70;
    1 row deleted.

    注釋

    如果使用了引用完整性約束,當(dāng)你試圖刪除一行時(shí),你可能收到一個(gè)Oracle服務(wù)器錯(cuò)誤信息。但是,如果引用完整性約束包含了ON Delete CASCADE選項(xiàng),那么,可以刪除行,并且所有相關(guān)的子表記錄都被刪除。


    posted @ 2008-08-20 11:51 勒緊皮帶向前沖 閱讀(2329) | 評(píng)論 (0)編輯 收藏
     
    這段時(shí)間老總要我修改公司原先的人做的項(xiàng)目,是采用spring+struts+hibernate+ajax做得,要求將數(shù)據(jù)庫(kù)改為oracle(以前的是mysql)。我對(duì)hibernate,無(wú)賴?yán)峡傄?,只得邊學(xué)邊改。通過(guò)使用myeclipse來(lái)生成的映射文件,能按照數(shù)據(jù)庫(kù)表來(lái)生成映射文件。但這樣生成的映射文件確保一定能用。
    如,有以下映射文件
    <hibernate-mapping>
        
    <class name="com.hibernate.temp.News" table="NEWS" schema="PIRATESTUDIO">
            
    <id name="id" type="java.lang.Long">
                
    <column name="ID" precision="10" scale="0" />
                
    <generator class="assigned" />
            
    </id>
            
    <property name="NType" type="java.lang.String">
                
    <column name="N_TYPE" length="10" not-null="true" />
            
    </property>
            
    <property name="NTitle" type="java.lang.String">
                
    <column name="N_TITLE" length="50" not-null="true" />
            
    </property>
            
    <property name="NContent" type="java.lang.String">
                
    <column name="N_CONTENT" not-null="true" />
            
    </property>
            
    <property name="NIp" type="java.lang.String">
                
    <column name="N_IP" length="20" not-null="true" />
            
    </property>
            
    <property name="NTime" type="java.util.Date">
                
    <column name="N_TIME" length="7" not-null="true" />
            
    </property>
            
    <property name="NRRate" type="java.lang.Long">
                
    <column name="N_R_RATE" precision="10" scale="0" not-null="true" />
            
    </property>
            
    <property name="NTypeT" type="java.lang.Long">
                
    <column name="N_TYPE_T" precision="10" scale="0" not-null="true" />
            
    </property>
            
    <property name="NComm" type="java.lang.Long">
                
    <column name="N_COMM" precision="10" scale="0" not-null="true" />
            
    </property>
            
    <property name="NIsedit" type="java.lang.Long">
                
    <column name="N_ISEDIT" precision="10" scale="0" not-null="true" />
            
    </property>
        
    </class>
    當(dāng)我在使用hibernate的getHiberbnateTemplate().getDelete(entity)時(shí),就會(huì)報(bào)以下錯(cuò)誤
    javax.servlet.ServletException: org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: com.GameServer.Entity.News.NTitle; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: com.GameServer.Entity.News.xxxx(xxxx是映射未見(jiàn)中的column的name)
    這是因?yàn)槲以谟成湮募惺褂胣ot-null="true" 這使用delete()方法是系統(tǒng)會(huì)根據(jù)not-null來(lái)檢查相應(yīng)的值。而我的entity中只用id是不為null,其余是null。因此報(bào)錯(cuò)。
    通過(guò)這個(gè)可以得出,hiberbnate的映射文件最好自己來(lái)寫(xiě),這樣才能達(dá)到靈活性。

    posted @ 2008-08-19 09:54 勒緊皮帶向前沖 閱讀(1329) | 評(píng)論 (0)編輯 收藏
     

    Hibernate映射類型分為兩種:內(nèi)置映射類型和客戶化映射類型。內(nèi)置映射類型負(fù)責(zé)把一些常見(jiàn)的Java類型映射到相應(yīng)的SQL類型;此外,Hibernate還允許用戶實(shí)現(xiàn)UserTypeCompositeUserType接口,來(lái)靈活地定制客戶化映射類型??蛻艋愋湍軌虬延脩舳x的Java類型映射到數(shù)據(jù)庫(kù)表的相應(yīng)字段。

     

    一、Hibernate的內(nèi)置映射類型

    1、Java基本類型的Hibernate映射類型

    Hibernate映射類型

    Java類型

    標(biāo)準(zhǔn)SQL類型

    大小和取值范圍

    integer或者int

    int或者java.lang.Integer

    INTEGER

    4字節(jié)

    long

    long Long

    BIGINT

    8字節(jié)

    short

    short Short

    SMALLINT

    2字節(jié)

    byte

    byte Byte

    TINYINT

    1字節(jié)

    float

    float Float

    FLOAT

    4字節(jié)

    double

    double Double

    DOUBLE

    8字節(jié)

    big_decimal

    java.math.BigDecimal

    NUMERIC

    NUMERIC(8,2)8

    character

    char Character String

    CHAR(1)

    定長(zhǎng)字符

    string

    String

    VARCHAR

    變長(zhǎng)字符串

    boolean

    boolean Boolean

    BIT

    布爾類型

    yes_no

    boolean Boolean

    CHAR(1) (Y-N)

    布爾類型

    true_false

    boolean Boolean

    CHAR(1) (T-F)

    布爾類型

     

    2、Java時(shí)間和日期類型的Hibernate映射

    映射類型

    Java類型

    標(biāo)準(zhǔn)SQL類型

    描述

    date

    util.Date或者sql.Date

    DATE

    YYYY-MM-DD

    time

    Date    Time

    TIME

    HH:MM:SS

    timestamp

    Date   Timestamp

    TIMESTAMP

    YYYYMMDDHHMMSS

    calendar

    calendar

    TIMESTAMP

    YYYYMMDDHHMMSS

    calendar_date

    calendar

    DATE

    YYYY-MM-DD

     

    3Java大對(duì)象類型的Hibernate映射類型

    映射類型

    Java類型

    標(biāo)準(zhǔn)SQL類型

    MySQL類型

    Oracle類型

    binary

    byte[]

    VARBINARY(BLOB)

    BLOB

    BLOB

    text

    String

    CLOB

    TEXT

    CLOB

    serializable

    Serializable接口任意實(shí)現(xiàn)類

    VARBINARY(BLOB)

    BLOB

    BLOB

    clob

    java.sql.Clob

    CLOB

    TEXT

    CLOB

    blob

    java.sql.Blob

    BLOB

    BLOB

    BLOB

     

           在程序中通過(guò)Hibernate來(lái)保存java.sql.Clob或者java.sql.Blob實(shí)例時(shí),必須包含兩個(gè)步驟:

    l         在一個(gè)數(shù)據(jù)庫(kù)事務(wù)中先保存一個(gè)空的BlobClob實(shí)例。

    l         接著鎖定這條記錄,更新上面保存的BlobClob實(shí)例,把二進(jìn)制數(shù)據(jù)或文本數(shù)據(jù)寫(xiě)到BlobClob實(shí)例中。

     

    4、JDK自帶的個(gè)別Java類的Hibernate映射類型(略)

     

    5、使用Hibernate內(nèi)置映射類型

      

    二、客戶化映射類型(略)

    結(jié)束!

    http://aumy2008.blogbus.com/logs/13732626.html  轉(zhuǎn)自小于

    posted @ 2008-08-16 11:35 勒緊皮帶向前沖 閱讀(6744) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共14頁(yè): First 上一頁(yè) 6 7 8 9 10 11 12 13 14 下一頁(yè) 
     
    主站蜘蛛池模板: 亚洲A∨无码无在线观看| 日本免费精品一区二区三区| 8x网站免费入口在线观看| 亚洲午夜日韩高清一区| 精品国产亚洲AV麻豆| 色窝窝免费一区二区三区| 亚洲国产一区国产亚洲| 在线人成免费视频69国产| 久久精品亚洲乱码伦伦中文| 青娱乐在线免费观看视频| 国产精品极品美女自在线观看免费 | 99久久99这里只有免费费精品| 亚洲一区二区电影| 日本免费久久久久久久网站| 亚洲日韩中文无码久久| AAAAA级少妇高潮大片免费看| 亚洲国产综合精品中文字幕| 国产成人综合亚洲绿色| 国产乱色精品成人免费视频 | 亚洲一级片免费看| 亚洲精品国产精品乱码不卡| 男女猛烈无遮掩视频免费软件| 国产麻豆免费观看91| 久久水蜜桃亚洲AV无码精品| 日韩免费a级在线观看| 亚洲av成人无码网站…| 国产成人免费一区二区三区| 在线视频亚洲一区| 亚洲成人影院在线观看| 一区二区免费电影| 国产亚洲AV手机在线观看| 99久久婷婷免费国产综合精品| 亚洲国产精品无码久久久蜜芽| 精品成人免费自拍视频| 亚洲成人动漫在线| 182tv免费视视频线路一二三| 亚洲熟妇av一区二区三区下载| 最近高清中文字幕无吗免费看| 亚洲自国产拍揄拍| 白白国产永久免费视频| 美女被羞羞网站免费下载|