亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 14. struts1.x note.txt

?? 在達(dá)內(nèi)培訓(xùn)java筆記
?? TXT
?? 第 1 頁 / 共 4 頁
字號(hào):
    <form-validation>    <formset>        <form name="enrollForm">            <field property="name" depends="required">                <arg key="register.name"/>            </field>            <field property="age" depends="required, integer">                <arg key="register.age"/>            </field>            <field property="city" depends="required">                <arg key="register.city"/>            </field>            <field property="gender" depends="required">                <arg key="register.gender"/>            </field>            <field property="email" depends="required,email">                <arg key="register.email"/>            </field>            <field property="birthday" depends="required, date">                <arg key="register.birthday"/>                <var>                    <var-name>datePattern</var-name>                    <var-value>yyyy-MM-dd</var-value>                </var>            </field>        </form>    </formset></form-validation>    注意:如果是使用1.3.x以上的版本,只需要引入:        <plug-in className="org.apache.struts.validator.ValidatorPlugIn">            <set-property property="pathnames"                        value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validation.xml"/>          </plug-in>          validation.xml為:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE form-validation PUBLIC        "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"        "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"><form-validation>    <formset>        <form name="enrollForm">            <field property="name" depends="required">                <arg key="register.name"/>            </field>            <field property="age" depends="required, integer">                <arg key="register.age"/>            </field>            <field property="city" depends="required">                <arg key="register.city"/>            </field>            <field property="gender" depends="required">                <arg key="register.gender"/>            </field>            <field property="email" depends="required,email">                <arg key="register.email"/>            </field>            <field property="birthday" depends="required, date">                <arg key="register.birthday"/>                <var>                    <var-name>datePattern</var-name>                    <var-value>yyyy-MM-dd</var-value>                </var>            </field>        </form>    </formset></form-validation>    3)develop ur ActionForm (服務(wù)器端驗(yàn)證需要遵循的規(guī)范)       (1) 自定義ActionForm 要繼承 ValidatorForm           最好不要重寫validate方法!如果重寫validate方法,則必須顯式調(diào)用 return super.validate(...)方法      (2) 動(dòng)態(tài)form要使用org.apache.struts.validator.DynaValidatorForm     4)(服務(wù)器端驗(yàn)證需要遵循的規(guī)范)         <action ..... validate="true"  input="假如出錯(cuò)的頁面" >    5)copy validation rules to ApplicationResources.properties
     register.title=Super Boy Register Form    register.name=Name:    register.gender=Gender:    register.age=Age:    register.city=City:    register.email=Email:    register.birthday=Birthday:    errors.required={0} is required.    errors.integer={0} must be an integer.    errors.date={0} is not a date.    errors.email={0} is an invalid e-mail address.    6)active javaScript in Jsp page.(采用客戶端驗(yàn)證才需要這一步)      <html:javascript formName="enrollForm"/>     <html:form action="/enroll" onsubmit="return validateEnrollForm(this)" method="post">建議:(1) 客戶端能做的驗(yàn)證,一般不要在服務(wù)器端驗(yàn)證。         一般輸入格式等方面的驗(yàn)證     (2) 客戶端實(shí)在沒有能力進(jìn)行驗(yàn)證的情況,發(fā)到服務(wù)器端做驗(yàn)證。

禁止表單重復(fù)提交:

1.客戶端方案(Java Script) 
使用js來實(shí)現(xiàn)禁止表單重復(fù)提交的方法很多,大體有如下幾種:

1)提交時(shí),使提交按鈕不可用(disable),或者隱藏按鈕,使用進(jìn)度條
參考實(shí)現(xiàn):


/*
函數(shù)名稱:disableButtons
函數(shù)功能:提交前,將所有表單中的button,reset,submit禁用disabled;
          如果是submit按鈕,則添加與之相同隱藏文本框hidden對(duì)象,讓提交的信息無一漏網(wǎng)
*/
function disableBtns() 
{
    for(k=0;k<document.all.length;k++ ) 
    {
        //當(dāng)前節(jié)點(diǎn)對(duì)象
        var obj = document.all(k) 
        if( obj.type=='button' || obj.type=='submit' || obj.type=='reset') 
        {
            obj.disabled = true
            if (obj.type=='submit') 
            {
                //添加隱藏節(jié)點(diǎn)
                var oNewNode = document.createElement("input");
                oNewNode.type = "hidden"
                oNewNode.name = obj.name
                oNewNode.value = obj.value
                obj.insertAdjacentElement("afterEnd",oNewNode);
            }        
        }
    }
}


/*
函數(shù)名稱:disButtons2
函數(shù)功能:提交前,將所有表單中的button,reset,submit禁用disabled;
          如果是submit按鈕,則添加與之相同隱藏文本框hidden對(duì)象,讓提交的信息無一漏網(wǎng)

函數(shù)說明:與上面的函數(shù)功能一樣,但適用瀏覽器范圍更廣,推薦使用此函數(shù)。
*/
function disableBtns() 
{
    for(k=0;k<document.forms.length;k++ ) 
    {
        //獲取當(dāng)前表單
        var frm = document.forms[k]
        for(i=0;i<frm.length;i++) 
        {
            var obj = frm.elements[i]
            if ( obj.type=='button' || obj.type=='submit' || obj.type=='reset' ) 
            {
                obj.disabled = true
                if (obj.type=='submit') 
                {
                    var oNewNode = document.createElement("input");
                    oNewNode.type = "hidden"
                    oNewNode.name = obj.name
                    oNewNode.value = obj.value
                    //frm.insertAdjacentElement("beforeEnd",oNewNode);
                    obj.insertAdjacentElement("afterEnd",oNewNode);
                }
            }
        }
    }
}


/*
函數(shù)名稱:hiddenForm
函數(shù)功能:提交時(shí)讓表單自動(dòng)隱藏,而不影響數(shù)據(jù)的提交
*/
function hideForm(form) 
{
    //waitStr 提交過程中出現(xiàn)的提示,可以自行設(shè)置
    var waiting = "<center><img src='progress.jpg'>數(shù)據(jù)正在提交中,請(qǐng)等候</center>";
    form.innerHTML = "<div style='display:none;'>"+form.innerHTML+"</div>"+waiting;
}




2)使用標(biāo)識(shí)來實(shí)現(xiàn)控制客戶端多次點(diǎn)擊

<script type="text/javascript">
    //控制標(biāo)志
    var submitted = false;
    function checkSubmit() {
        if(submitted == true) {
            alert("submitted == true");
            return false;
        }
        submitted = true;
        return true;
    }
    
    //控制頁面雙擊行為
    document.ondblclick = function docOnDblClick() {
        window.event.returnValue = false;
    }
    
    //控制頁面單擊行為
    document.onclick = function docOnClick() {
        if(submitted) {
            window.event.returnValue = false;
        }
    }
</script>



<html:form action="/logon" method="post" onsubmit="return checkSubmit();">
    <html:text property="name"></html:text>
    <html:submit value="login">
    </html:submit>
</html:form>



2.服務(wù)器端方案
原理:使用transaction token
1)jsp版









Day4:一、 文件上傳
	步驟:
	1)定義表單
	 <html:form action="/fileupload" enctype="multipart/form-data">
      <table>
          <tr>
        <td><b>請(qǐng)選擇上傳的文件:</b></td>
        <td><html:file property="file"></html:file></td>
          </tr>
          <tr></tr>
          <tr>
          <td colspan=2 align=center>
              <html:submit>上傳</html:submit>
          </td>
          </tr>
      </table>
	 </html:form>
	2)配置stuts-config.xml
      *定義Form
      *定制Action

      a)form
      public class FileUploadForm extends ActionForm {
        private FormFile file;
        public FormFile getFile() { return file; }
        public void setFile(FormFile file) { this.file = file; }
      }
      
      b)action
      //處理文件
      FormFile file = fileUploadForm.getFile();
      InputStream is = file.getInputStream();
      OutputStream os = new FileOutputStream(path + filename);
      輸出文件





二、Struts Tiles----強(qiáng)大的頁面模板與頁面布局技術(shù)

1.作用:Tiles框架提供模板機(jī)制,完成頁面布局和內(nèi)容展示邏輯的解耦
    -------分離變與不變的元素:布局是不變的,而內(nèi)容是變化的

2.如何使用tiles框架
步驟:
1) 在struts-config.xml配置tiles插件
    <plug-in className="org.apache.struts.tiles.TilesPlugin">
        <set-property property="definitions-config"
                  value="/WEB-INF/tiles-define.xml"/>
    </plug-in>

2) 定義tiles:tiles-define.xml        
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE tiles-definitions PUBLIC
           "-//Apache Software Foundation//DTD Tiles Configuration 1.3//EN"
           "http://struts.apache.org/dtds/tiles-config_1_3.dtd">

    <tiles-definitions>
        <definition name="definition1" page="/layout/baselayout.jsp">
            <put name="title" value="mainspace"></put>
            <put name="header" value="/layout/header.jsp"></put>
            <put name="footer" value="/layout/footer.jsp"></put>
            <put name="body" value="/layout/body.jsp"></put>
            <put name="navigator" value="/layout/navigator.jsp"></put>
        </definition>
        
        <definition name="user" extends="definition1">
            <put name="title" value="another mainspace"></put>
            <put name="body" value="/usermanager/user.jsp"></put>
        </definition>
    </tiles-definitions>

3) 定義布局以及所有的組成部分
    baselayout.jsp
    header.jsp
    footer.sjp
    body.jsp
    navigator.jsp


    變化的內(nèi)容定義為:
    <tiles:getAsString name="title"/>
    <tiles:insert attribute="header">


    baselayout.jsp參考代碼:
    -------------------------------------------------------------------------------------------------------
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

    <html>
      <head>
        <title><tiles:getAsString name="title"/></title>
      </head>
      
      <body>
            <table border="0" width="100%" cellspacing="5">
                <tr><td colspan=2 align=center>
                        <tiles:insert attribute="header"></tiles:insert></td></tr>
                <tr><td width="15%" valign="top">
                        <tiles:insert attribute='navigator'></tiles:insert></td>
                    <td align="left">
                        <tiles:insert attribute='body'></tiles:insert></td></tr>
                <tr><td colspan="2"><hr></td></tr>
                <tr><td colspan=2 align=center>
                        <tiles:insert attribute="footer"></tiles:insert></td></tr>
            </table>
      </body>
    </html>
    -------------------------------------------------------------------------------------------------------


4) 在頁面中引用 tiles:
    <tiles:insert definition="defall"/>
    也可以覆蓋定義的屬性值
    <tiles:insert definition="defall">
        <tiles:put name="title" value="my page"/>
    </tiles:insert>


3.使用tiles-define.xml定義tiles的好處:
    1) tiles可重用(被多個(gè)頁面) 
    2) tiles的定義可以被"繼承"和"覆蓋"
    3) 使用已定義的definition



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产生活片100| 欧美精品一区二区久久婷婷| 91成人免费在线视频| 欧美日韩视频在线一区二区| 51午夜精品国产| 欧美大度的电影原声| 欧洲一区在线电影| 色综合久久中文综合久久97| 色久综合一二码| 这里只有精品99re| 日韩一卡二卡三卡四卡| 久久免费看少妇高潮| 亚洲精品成人少妇| 日韩国产精品久久久| 国产在线看一区| aaa亚洲精品| 在线播放91灌醉迷j高跟美女| 久久综合av免费| 亚洲视频图片小说| 精品一区二区在线观看| 91在线国产福利| 日韩一区二区三区在线观看| 国产精品久久久久一区| 免费成人av在线| 欧洲日韩一区二区三区| 久久久影院官网| 午夜一区二区三区在线观看| 成人黄色国产精品网站大全在线免费观看| av亚洲精华国产精华精华| 亚洲精品一区二区三区福利| 亚洲激情中文1区| 国产成人99久久亚洲综合精品| 欧美精品1区2区| 亚洲一区视频在线观看视频| 日韩和的一区二区| 国产成人免费9x9x人网站视频| 制服丝袜亚洲色图| 亚洲精品视频免费看| 成人免费视频app| 久久伊人蜜桃av一区二区| 久久精品国产第一区二区三区| 欧美亚洲综合另类| 亚洲小少妇裸体bbw| 在线免费不卡视频| 亚洲欧美电影院| 99re热视频精品| 亚洲视频精选在线| 欧美日韩一区 二区 三区 久久精品| 国产精品福利一区二区| 91网站在线播放| 亚洲精选免费视频| 欧美伊人精品成人久久综合97| 亚洲综合一区在线| 在线播放欧美女士性生活| 麻豆91免费观看| 国产日韩欧美精品综合| 成人国产精品视频| 亚洲激情在线激情| 日韩亚洲欧美成人一区| 久久99精品久久久久久动态图 | 国产三级久久久| 亚洲成人av一区二区| 欧美日韩一级视频| 麻豆成人久久精品二区三区红| 久久综合五月天婷婷伊人| 成人亚洲一区二区一| 亚洲va在线va天堂| 国产婷婷色一区二区三区在线| 99国产精品久久久久久久久久| 亚洲成人免费影院| 日本一区二区三区四区在线视频 | 欧美日韩在线电影| 粉嫩aⅴ一区二区三区四区五区| 亚洲人成7777| 国产亚洲一本大道中文在线| 欧美私模裸体表演在线观看| 国产成人在线影院| 日韩激情中文字幕| 一区二区三区四区视频精品免费 | 久久99精品久久久久久国产越南| 精品美女一区二区| 在线免费观看日本一区| 从欧美一区二区三区| 美脚の诱脚舐め脚责91 | 亚洲成av人片在线观看| 日韩精品一区二区三区四区| 国产精品一区二区三区网站| 午夜精品视频一区| 亚洲欧美综合另类在线卡通| 日韩区在线观看| 欧美理论电影在线| 欧美日韩综合在线| 91成人在线观看喷潮| 91老师片黄在线观看| 国产一区二区三区电影在线观看| 日韩精品久久久久久| 天天操天天色综合| 偷拍一区二区三区| 亚洲一区二区三区在线播放| 亚洲精品网站在线观看| 自拍av一区二区三区| 亚洲日本在线天堂| 一区二区在线观看免费| 一卡二卡欧美日韩| 婷婷激情综合网| 狂野欧美性猛交blacked| 蜜臀av国产精品久久久久| 精品一区二区三区香蕉蜜桃| 国产伦精品一区二区三区免费| 久热成人在线视频| 国产麻豆一精品一av一免费| 国产99久久久国产精品| 一本久道久久综合中文字幕| 欧美在线综合视频| 日韩欧美第一区| 国产人妖乱国产精品人妖| 中文字幕中文乱码欧美一区二区| 中文字幕中文字幕中文字幕亚洲无线| 日韩欧美专区在线| 亚洲精品一区二区三区精华液| 国产精品无遮挡| 亚洲一区在线电影| 国产精品亚洲视频| 日本道色综合久久| 日韩欧美二区三区| 亚洲人成人一区二区在线观看| 日本免费在线视频不卡一不卡二 | 久久精品久久99精品久久| 不卡的av电影在线观看| 欧美一区二区美女| 中文字幕欧美一| 久久精品国产一区二区三区免费看| 国产精品99久久久久久似苏梦涵| 欧美伊人久久大香线蕉综合69| 久久一区二区三区国产精品| 午夜伊人狠狠久久| 不卡免费追剧大全电视剧网站| 欧美一卡二卡在线观看| 五月婷婷另类国产| 国产91精品露脸国语对白| 538在线一区二区精品国产| 亚洲欧美激情插| 成人午夜电影小说| 337p日本欧洲亚洲大胆精品 | 国产成人综合自拍| 日韩欧美一区在线| 天天影视涩香欲综合网| 日本久久一区二区| 亚洲女人的天堂| 99精品视频在线播放观看| 欧美国产一区二区| 国产一区二区三区高清播放| 91在线国内视频| 亚洲免费观看视频| 91视频免费播放| 中文字幕日本乱码精品影院| 成人在线视频一区| 国产精品国产三级国产aⅴ原创| 国产成人精品三级麻豆| 国产精品传媒入口麻豆| 99re成人精品视频| 亚洲综合在线五月| 欧美卡1卡2卡| 免费观看成人av| 久久众筹精品私拍模特| 99久久精品免费精品国产| 亚洲综合精品自拍| 欧美精品第1页| 国产一区三区三区| 亚洲欧美在线高清| 欧洲一区二区三区在线| 九九久久精品视频| 最新成人av在线| 91精品国产综合久久蜜臀| 精品在线亚洲视频| 亚洲精品成人精品456| 91精品国产综合久久久久久漫画| 国产麻豆欧美日韩一区| 亚洲美女区一区| 欧美大肚乱孕交hd孕妇| 成人aa视频在线观看| 免费看日韩a级影片| 综合欧美一区二区三区| 欧美刺激午夜性久久久久久久 | 国产色产综合色产在线视频| 在线亚洲免费视频| 成人免费视频网站在线观看| 日韩精彩视频在线观看| 亚洲人成网站在线| 欧美电影在线免费观看| 国产一区二区电影| 婷婷丁香久久五月婷婷| 中文字幕精品一区二区精品绿巨人| 欧美在线啊v一区| av中文字幕在线不卡| 久久精品国产77777蜜臀| 亚洲一区二区三区激情| 自拍偷拍亚洲欧美日韩| 国产精品久久精品日日| 久久一二三国产|