版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Struts2 輸入驗(yàn)證,本次課的主要內(nèi)容,輸入校驗(yàn),3,4,2.,本章主要內(nèi)容,簡(jiǎn)介 用validate方法進(jìn)行輸入校驗(yàn) validate()方法輸入校驗(yàn)、validateXxx()方法輸入校驗(yàn) 基于框架的輸入校驗(yàn) 使用字段校驗(yàn)的輸入校驗(yàn)、使用非字段校驗(yàn)的輸入校驗(yàn),簡(jiǎn)介,Web技術(shù)的發(fā)展給用戶帶來(lái)了方便,使用瀏覽器就可以完成某些工作。在方便使用的同時(shí),也將系統(tǒng)輸入界面暴露給用戶,面臨大量惡意破壞性輸入的考驗(yàn)。例如金額的輸入框中輸入字母漢字,日期的輸入框輸入不正確的格式或不可能存在的日期等。這些都需要我們通過(guò)輸入校驗(yàn)來(lái)解決。輸入校驗(yàn)直接影響了系統(tǒng)的抗破壞性能和穩(wěn)定性。 實(shí)際上,輸入校驗(yàn)往往同類
2、型轉(zhuǎn)換聯(lián)系在一起,都是對(duì)用戶輸入數(shù)據(jù)的規(guī)范化檢查和處理,我們可以通過(guò)JavaScript來(lái)實(shí)現(xiàn)客戶端校驗(yàn),但一般都只是完成初步的檢查和過(guò)濾,但對(duì)于需要與服務(wù)器交互的邏輯性校驗(yàn)就無(wú)能為力了,雖然提高了相應(yīng)速度,但是功能有很大局限性,代碼維護(hù)性也不好。我們不來(lái)講解JavaScript的客戶端校驗(yàn),只是來(lái)看看Struts2為我們提供的輸入校驗(yàn)方法。,Struts 2輸入校驗(yàn),輸入校驗(yàn)分為客戶端校驗(yàn)和服務(wù)器端校驗(yàn)。 客戶端校驗(yàn)可以過(guò)濾掉用戶的錯(cuò)誤操作,是第一道防線,一般使用JavaScript代碼實(shí)現(xiàn)。僅有客戶端驗(yàn)證還是不夠的。攻擊者還可以繞過(guò)客戶端校驗(yàn)直接進(jìn)行非法輸入,這樣可能會(huì)引起系統(tǒng)的異常,所以
3、必須加上服務(wù)器端的驗(yàn)證。但僅有服務(wù)器端驗(yàn)證也是不行的,客戶的錯(cuò)誤操作總是提交到服務(wù)器,由服務(wù)器端進(jìn)行驗(yàn)證返回錯(cuò)誤信息,這樣會(huì)加重服務(wù)器的負(fù)擔(dān)。 所以客戶端驗(yàn)證和服務(wù)器端驗(yàn)證缺一不可,兩者結(jié)合起來(lái)才可以構(gòu)建健壯的系統(tǒng)。,什么是輸入校驗(yàn),輸入校驗(yàn),從字面上來(lái)看好像是指對(duì)如輸入的密碼或者用戶名輸入錯(cuò)誤的校驗(yàn)。其實(shí)這個(gè)不算輸入校驗(yàn),這個(gè)算是業(yè)務(wù)邏輯的判斷了。輸入校驗(yàn)是對(duì)輸入的用戶名長(zhǎng)度、密碼長(zhǎng)度、年齡信息等的判斷。為了給大家一個(gè)感官上的認(rèn)識(shí),現(xiàn)在打開(kāi)163郵箱的注冊(cè)頁(yè)面,如圖所示。,為什么要進(jìn)行輸入校驗(yàn),那為什么要進(jìn)行輸入校驗(yàn)?zāi)??使用它有什么好處呢?為了更好地說(shuō)明,來(lái)看下面這個(gè)注冊(cè)頁(yè)面,如圖所示。 現(xiàn)
4、在按常規(guī)輸入用戶注冊(cè)信息,單擊“注冊(cè)”按鈕進(jìn)行注冊(cè)。頁(yè)面跳轉(zhuǎn)到注冊(cè)信息顯示頁(yè),如圖所示。,輸入校驗(yàn),Struts2的輸入校驗(yàn)步驟,對(duì)請(qǐng)求參數(shù)執(zhí)行類型轉(zhuǎn)換,轉(zhuǎn)換是否出錯(cuò),將錯(cuò)誤提示保存到ActionContext,內(nèi)建驗(yàn)證器進(jìn)行驗(yàn)證,conversionError負(fù)責(zé)將其轉(zhuǎn)換成fieldError,執(zhí)行validateXxx()方法,執(zhí)行validate()方法,包含fieldError嗎,調(diào)用Action的處理方法,呈現(xiàn)視圖資源,是,否,是,跳過(guò)Action處理邏輯,返回input視圖,否,輸入校驗(yàn),手動(dòng)完成輸入校驗(yàn) 重寫(xiě)validate()方法 繼承ActionSupport類,重寫(xiě)vali
5、date()方法 實(shí)例:OverrideValidate 重寫(xiě)validateXxx()方法 對(duì)于多個(gè)處理邏輯的校驗(yàn),會(huì)有多個(gè)validateXxx()方法,重寫(xiě)這多個(gè)方法,可以實(shí)現(xiàn)對(duì)不同處理邏輯的獨(dú)立校驗(yàn)處理。 實(shí)例:ValidateXxx,手工編寫(xiě)代碼實(shí)現(xiàn)輸入校驗(yàn),通過(guò)重寫(xiě)validate()或validateXxx()方法實(shí)現(xiàn), validate()方法會(huì)校驗(yàn)action中所有與execute方法簽名相同的方法。 validateXxx()只會(huì)校驗(yàn)action中方法名為Xxx的方法。其中Xxx的第一個(gè)字母要大寫(xiě)。當(dāng)某個(gè)數(shù)據(jù)校驗(yàn)失敗時(shí),我們應(yīng)該調(diào)用addFieldError()方法往系統(tǒng)的
6、fieldErrors添加校驗(yàn)失敗信息(為了使用addFieldError()方法,action可以繼承ActionSupport ),如果系統(tǒng)的fieldErrors包含失敗信息,struts2會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到名為input的result。在input視圖中可以通過(guò)顯示失敗信息。 validate()使用例子: Override public void validate() if(username=null 驗(yàn)證失敗后,請(qǐng)求轉(zhuǎn)發(fā)至input視圖: /WEB-INF/page/addUser.jsp 在addUser.jsp頁(yè)面中使用顯示失敗信息。,輸入校驗(yàn)的流程,1。類型轉(zhuǎn)換器對(duì)請(qǐng)求參數(shù)執(zhí)行類
7、型轉(zhuǎn)換,并把轉(zhuǎn)換后的值賦給action中的屬性。 2。如果在執(zhí)行類型轉(zhuǎn)換的過(guò)程中出現(xiàn)異常,系統(tǒng)會(huì)將異常信息保存到ActionContext,conversionError攔截器將異常信息封裝到fieldErrors里,然后執(zhí)行第3步。如果類型轉(zhuǎn)換沒(méi)有出現(xiàn)異常,則直接進(jìn)入第3步。 3。系統(tǒng)通過(guò)反射技術(shù)調(diào)用action中的validateXxx()方法,Xxx為方法名。 4。調(diào)用action中的validate()方法。 5。經(jīng)過(guò)上面4步,如果系統(tǒng)中的fieldErrors存在錯(cuò)誤信息(即存放錯(cuò)誤信息的集合的size大于0),系統(tǒng)自動(dòng)將請(qǐng)求轉(zhuǎn)發(fā)至名稱為input的視圖。如果系統(tǒng)中的fieldErr
8、ors沒(méi)有任何錯(cuò)誤信息,系統(tǒng)將執(zhí)行action中的處理方法。,用validate方法進(jìn)行輸入校驗(yàn),1 validate()方法輸入校驗(yàn) 我們先來(lái)學(xué)習(xí)validate()方法進(jìn)行校驗(yàn)。創(chuàng)建“com.ntc.sample.sshvalidate”的package包。并在其下邊建立ValidateAction類,關(guān)鍵代碼如下所示。校驗(yàn)邏輯如代碼注釋,對(duì)于用戶名,必須輸入,對(duì)于密碼必須長(zhǎng)度在6-10。,注意:使用validate()方法必須繼承ActionSupport類,用validate方法進(jìn)行輸入校驗(yàn),validate()方法輸入校驗(yàn) 接著創(chuàng)建validate.jsp,用來(lái)輸入用戶名和密碼。代碼
9、如下所示,,用validate方法進(jìn)行輸入校驗(yàn),.1 validate()方法輸入校驗(yàn) 然后創(chuàng)建校驗(yàn)成功后的頁(yè)面detail.jsp,代碼如下所示。,用validate方法進(jìn)行輸入校驗(yàn),.1 validate()方法輸入校驗(yàn) 在src目錄下建立配置文件struts.xml,如下所示。,用validate方法進(jìn)行輸入校驗(yàn),.1 validate()方法輸入校驗(yàn) 初始化的頁(yè)面如下圖所示 。,用validate方法進(jìn)行輸入校驗(yàn),.1 validate()方法輸入校驗(yàn) 點(diǎn)擊確認(rèn)后,我們的校驗(yàn)執(zhí)行了,這里,每個(gè)輸入域都會(huì)出現(xiàn)對(duì)應(yīng)的錯(cuò)誤信息,效果圖如下。,用validate方法進(jìn)行輸入校驗(yàn),.1 vali
10、date()方法輸入校驗(yàn) 當(dāng)我們輸入符合條件的數(shù)據(jù)但不是admin和password時(shí),例如輸入admi和1234567時(shí),返回輸入頁(yè)面但是沒(méi)有出錯(cuò)信息,說(shuō)明校驗(yàn)是正常通過(guò)的只是邏輯不正確。,用validate方法進(jìn)行輸入校驗(yàn),.1 validate()方法輸入校驗(yàn) 我們?cè)賮?lái)輸入admin和password,將遷移到detail.jsp,表示校驗(yàn)正常,邏輯也正確。,用validate方法進(jìn)行輸入校驗(yàn),.1 validate()方法輸入校驗(yàn) 我們還可以在validate.jsp中加入如下代碼,這樣可以把所有的異常信息顯示出來(lái)。 我們把它放在了上邊,出錯(cuò)的時(shí)候,錯(cuò)誤信息除了在每個(gè)輸入框處顯示外,在
11、頁(yè)面最下端也會(huì)把所有的錯(cuò)誤顯示出來(lái)。 效果圖。,用validate方法進(jìn)行輸入校驗(yàn),.2 validateXxx()方法輸入校驗(yàn) 對(duì)于使用validate()方法校驗(yàn),我們?cè)贏ction中所有的處理方法都會(huì)進(jìn)行數(shù)據(jù)校驗(yàn),可以把所有要驗(yàn)證的邏輯代碼都寫(xiě)入其中,但是卻不利于維護(hù),而validateXXX可以將某邏輯的校驗(yàn)代碼從validate分離出來(lái)。 validateXxx()方法則是對(duì)不同的業(yè)務(wù)方法進(jìn)行數(shù)據(jù)校驗(yàn)。 例如,我們有一個(gè)login()方法,我們使用validateLogin()方法來(lái)處理數(shù)據(jù)輸入校驗(yàn)。 我們來(lái)看一個(gè)例子里面的ValidateXxxAction類,里邊定義一個(gè)login
12、方法,并建立validateLogin方法 注意:由于validate()方法對(duì)Action類中所有方法進(jìn)行校驗(yàn),所以,在使用validateXxx()方式時(shí),最好去掉validate()方法的代碼,或者檢查兩者不需要重復(fù)校驗(yàn)。,用validate方法進(jìn)行輸入校驗(yàn),.2 validateXxx()方法輸入校驗(yàn) 以下是校驗(yàn)類的校驗(yàn)方法的主要代碼。,注意:使用validateXxx()方法必須繼承ActionSupport類,用validate方法進(jìn)行輸入校驗(yàn),.2 validateXxx()方法輸入校驗(yàn) 我們?cè)賮?lái)看validatexxx.jsp,只是form的action改成了validatex
13、xx,其他的也沒(méi)有變化,主要代碼如下。,用validate方法進(jìn)行輸入校驗(yàn),.2 validateXxx()方法輸入校驗(yàn) Struts.xml關(guān)鍵代碼如下。,當(dāng)validate()和validateXXX都存在時(shí),validateXXX方法校驗(yàn)得到的錯(cuò)誤信息先顯示出來(lái),然后才是validate方法校驗(yàn)的字段錯(cuò)誤信息 validate方法在validateXXX方法被調(diào)用后,依然會(huì)被調(diào)用 錯(cuò)誤信息均保留在ArrayList中,誰(shuí)先運(yùn)行,誰(shuí)的結(jié)果就排在前面,Struts的輸入校驗(yàn)流程,客戶端提交數(shù)據(jù)后,Struts2進(jìn)行類型轉(zhuǎn)換 類型轉(zhuǎn)換成功后,調(diào)用validateXXX方法 調(diào)用完validat
14、eXXX方法后,繼續(xù)調(diào)用validate方法 如果沒(méi)有字段錯(cuò)誤,則調(diào)用Action處理方法;有錯(cuò)誤,則返回input Action處理結(jié)束后,返回結(jié)果,轉(zhuǎn)入相應(yīng)的web頁(yè),基于框架的輸入校驗(yàn),我們上節(jié)用validate()和validateXxx()方法進(jìn)行了校驗(yàn),這種方式的校驗(yàn)的弊端就是寫(xiě)在了Action實(shí)現(xiàn)類中,使Action變得復(fù)雜臃腫,同時(shí)提高了Action同輸入校驗(yàn)之間的耦合度。 Struts2框架提供了一種基于框架文件的輸入校驗(yàn)方式,將校驗(yàn)規(guī)則保存在特定的框架文件中,這樣,輸入校驗(yàn)和Action實(shí)現(xiàn)了分離,提高了系統(tǒng)的維護(hù)性。 基于框架的校驗(yàn)有兩種編寫(xiě)校驗(yàn)規(guī)則文件的寫(xiě)法, 一種是使
15、用字段校驗(yàn)的寫(xiě)法, 一種是使用非字段校驗(yàn)的寫(xiě)法。,輸入校驗(yàn),編寫(xiě)校驗(yàn)規(guī)則文件 Struts2提供了基于驗(yàn)證框架的輸入校驗(yàn),只需編寫(xiě)簡(jiǎn)單的配置文件,Struts2的驗(yàn)證框架將會(huì)負(fù)責(zé)進(jìn)行服務(wù)器校驗(yàn)和客戶校驗(yàn)。 可以利用配置文件,實(shí)現(xiàn)校驗(yàn)信息的國(guó)際化提示 實(shí)例:ValidateDemo 使用客戶端校驗(yàn) 將輸入頁(yè)面的表單元素改為使用struts2標(biāo)簽實(shí)現(xiàn) 為元素增加validate=“true”屬性 將頁(yè)面移動(dòng)到WEB-INF/content目錄下,使核心filter起作用。 實(shí)例:ClientValidate,應(yīng)用Struts2校驗(yàn)框架(1),校驗(yàn)框架以聲明的方式來(lái)實(shí)現(xiàn)輸入校驗(yàn),將檢驗(yàn)代碼從Acti
16、on代碼中轉(zhuǎn)移到XML配置文件中,從而可以實(shí)現(xiàn)Action代碼的簡(jiǎn)化。 Struts2將一些常用的校驗(yàn)功能進(jìn)行了封裝,以校驗(yàn)器形式存在,當(dāng)需要實(shí)現(xiàn)校驗(yàn)功能的時(shí)候,只需在XML配置文件中進(jìn)行配置即可。,Validation框架校驗(yàn),在配置文件中配置需要校驗(yàn)的字段和校驗(yàn)規(guī)則,即可以對(duì)相應(yīng)的字段進(jìn)行校驗(yàn) 配置文件命名為xxxx-validation.xml,validation框架校驗(yàn)的DTD, 直接拷貝即可,validators、field、field-validator,validators將需進(jìn)行校驗(yàn)的所有內(nèi)容進(jìn)行封裝 field標(biāo)簽封裝某特定字段 field-validator表明校驗(yàn)類型,
17、只校驗(yàn)field字段,基于框架的輸入校驗(yàn),.1 使用字段校驗(yàn)的輸入校驗(yàn) ValidateByFieldXmlAction-validation.xml的關(guān)鍵代碼如下:,type指定校驗(yàn)類型,常用校驗(yàn)類型如下: required:必填字段校驗(yàn) requiredstring:非空String檢查 int:Int類型范圍校驗(yàn) double:Double類型范圍校驗(yàn) date:日期校驗(yàn) Expression:使用OGNL表達(dá)式的校驗(yàn) fieldexpression:針對(duì)一個(gè)字段使用OGNL表達(dá)式的校驗(yàn) email:Email校驗(yàn) url:URL校驗(yàn) regex:正則表達(dá)式校驗(yàn) stringlength
18、:字符產(chǎn)長(zhǎng)度校驗(yàn),應(yīng)用Struts2校驗(yàn)框架(2),Struts2提供的常用功能的校驗(yàn)器放在comopensymphonyxwork2validatorvalidatorsdefault.xml文件中。,輸入校驗(yàn),字段校驗(yàn)器配置風(fēng)格 元素是校驗(yàn)規(guī)則文件的基本組成單位 true 非字段校驗(yàn)器配置風(fēng)格 元素是校驗(yàn)規(guī)則文件的基本組成單位 name true 短路校驗(yàn)器 為或指定一個(gè)short-circuit=“true”屬性,將某些校驗(yàn)提示信息屏蔽。 true ,字段校驗(yàn)器與非字段校驗(yàn)器,前例中的校驗(yàn)器以字段為中心,封裝在中,然后通過(guò)子標(biāo)簽的type屬性指定校驗(yàn)器類型,此種校驗(yàn)器被稱為字段校驗(yàn)器 實(shí)
19、際上是一種校驗(yàn)類型 只校驗(yàn)父標(biāo)簽所指向字段 Struts提供以校驗(yàn)規(guī)則位中心的使用標(biāo)簽的另外一種非字段校驗(yàn)器 寫(xiě)法不同 其中 為校驗(yàn)器類型 其中 為校驗(yàn)字段,寫(xiě)法總是一樣的,param的值又是在哪里找到的呢? param中的name值在上述類中被定義為屬性。譬如說(shuō)在類 com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator中(也就是 stringLength對(duì)應(yīng)的處理類),就定義了 boolean trim; int minLength,maxLength; 及它們的get/set方法。,message的注
20、意事項(xiàng) (1)每個(gè)field都必須擁有一個(gè)message;message錯(cuò)誤信息最后是以addFieldError實(shí)現(xiàn)的,也就是說(shuō)是 field一級(jí)的錯(cuò)誤。 (2)message中可以引用param變量,引用格式為$param1,如上面的例子中對(duì)password驗(yàn)證失敗的報(bào)錯(cuò) 信息。 (3)message的內(nèi)容可以放到全局i18n屬性文件中,并在message中以key屬性值指定,比如上面例子中 對(duì)username驗(yàn)證失敗的報(bào)錯(cuò)信息。,輸入校驗(yàn),校驗(yàn)文件的搜索規(guī)則 當(dāng)一個(gè)Action包含多個(gè)處理邏輯或者兩個(gè)Action有繼承關(guān)系,此時(shí)需要為校驗(yàn)規(guī)則文件增加校驗(yàn)規(guī)則別名文件的方式來(lái)實(shí)現(xiàn)校驗(yàn)的處理
21、邏輯。 總的校驗(yàn)規(guī)則是多個(gè)校驗(yàn)規(guī)則文件的規(guī)則總和 實(shí)例:overrideRule 基于Annotation的輸入校驗(yàn) 使用Annotation來(lái)定義每個(gè)字段應(yīng)該滿足的規(guī)則 使用驗(yàn)證器Annotation修飾Action里各屬性對(duì)應(yīng)的setter方法 實(shí)例:annotation,輸入校驗(yàn),內(nèi)建校驗(yàn)器 必填校驗(yàn)器 必填字符串校驗(yàn)器 整數(shù)校驗(yàn)器 日期校驗(yàn)器 表達(dá)式校驗(yàn)器 字段表達(dá)式校驗(yàn)器 郵件地址校驗(yàn)器 網(wǎng)址校驗(yàn)器 Vistor校驗(yàn)器 轉(zhuǎn)換校驗(yàn)器 字符串長(zhǎng)度校驗(yàn)器 正則表達(dá)式校驗(yàn)器 實(shí)例:validatorDemo,Struts 2數(shù)據(jù)驗(yàn)證及驗(yàn)證框架的應(yīng)用,2. Struts 2驗(yàn)證框架的應(yīng)用 St
22、ruts 2提供了校驗(yàn)框架,只需要增加一個(gè)校驗(yàn)配置文件,就可以完成對(duì)數(shù)據(jù)的校驗(yàn)。Struts 2提供了大量的數(shù)據(jù)校驗(yàn)器,包括表單域校驗(yàn)器和非表單域校驗(yàn)器兩種。 (1)必填字符串校驗(yàn)器 其校驗(yàn)規(guī)則定義文件如下:, true 姓名是必需的! ,Struts 2數(shù)據(jù)驗(yàn)證及驗(yàn)證框架的應(yīng)用,(2)必填校驗(yàn)器 該校驗(yàn)器的名字是required,也就是屬性中的type=required,該校驗(yàn)器要求指定的字段必須有值,與必填字符串校驗(yàn)器最大的區(qū)別就是可以有空字符串。如果把上例改為必填校驗(yàn)器,其代碼應(yīng)為:, 姓名是必需的! ,Struts 2數(shù)據(jù)驗(yàn)證及驗(yàn)證框架的應(yīng)用,(3)整數(shù)校驗(yàn)器 該校驗(yàn)器的名字是int,該校驗(yàn)器要求字段的整數(shù)值必須在指定范圍內(nèi),故其有min和max參數(shù)。如果有個(gè)age輸入框,要求其必須是整數(shù),且輸入值必
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年河北省滄州市單招職業(yè)適應(yīng)性考試模擬測(cè)試卷附答案
- 2026年曹妃甸職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)附答案
- 2026年南開(kāi)大學(xué)濱海學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試模擬測(cè)試卷及答案1套
- 2026浙江寧波市余姚市托育綜合服務(wù)中心(余姚市托育園)第一次編外招聘7人筆試參考題庫(kù)及答案解析
- 2026安徽淮南市壽縣職業(yè)中專學(xué)校機(jī)電專業(yè)職教高考教師招聘2人筆試模擬試題及答案解析
- 2025年12月廣東深圳大學(xué)選聘高層次人才4人考試備考題庫(kù)附答案
- 2025江蘇徐州徐工液壓件有限公司招聘55人考前自測(cè)高頻考點(diǎn)模擬試題附答案
- 2026年中煤陜西能源化工集團(tuán)有限公司招聘(54人)筆試備考試題及答案解析
- 2025年度春季建信基金管理有限責(zé)任公司校園招聘6人備考題庫(kù)附答案
- 2025江蘇蘇州市常熟市交通產(chǎn)業(yè)投資集團(tuán)有限公司(系統(tǒng))招聘26人(公共基礎(chǔ)知識(shí))測(cè)試題附答案
- 中國(guó)馬克思主義與當(dāng)代2024版教材課后思考題答案
- 2026年日歷表(每月一頁(yè)、可編輯、可備注)
- 2023-2024學(xué)年四川省自貢市小學(xué)語(yǔ)文五年級(jí)期末高分測(cè)試題詳細(xì)參考答案解析
- 電力工程課程設(shè)計(jì)-某機(jī)床廠變電所設(shè)計(jì)
- Unit 2 Reading and Thinking教學(xué)課件(英語(yǔ)選擇性必修第一冊(cè)人教版)
- 兒童常用補(bǔ)液
- 期貨基礎(chǔ)知識(shí)(期貨入門(mén))
- GB/T 22085.2-2008電子束及激光焊接接頭缺欠質(zhì)量分級(jí)指南第2部分:鋁及鋁合金
- GB/T 10454-2000集裝袋
- 全球山藥產(chǎn)業(yè)發(fā)展現(xiàn)狀分析
- 工業(yè)管道施工與驗(yàn)收規(guī)范
評(píng)論
0/150
提交評(píng)論