版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JSP教程-JSP語(yǔ)法JSP是一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù),用于創(chuàng)建交互式Web應(yīng)用程序。它是JavaServerPages的縮寫,它允許在HTML頁(yè)面中嵌入Java代碼,以生成動(dòng)態(tài)內(nèi)容。JSP的基本概念動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)JSP(JavaServerPages)是Java語(yǔ)言的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)。它將Java代碼嵌入到HTML頁(yè)面中,實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容生成。服務(wù)器端執(zhí)行JSP代碼在服務(wù)器端執(zhí)行,然后將生成的HTML代碼發(fā)送到客戶端瀏覽器顯示。這意味著用戶看到的網(wǎng)頁(yè)內(nèi)容是動(dòng)態(tài)生成的。JSP與HTML的區(qū)別靜態(tài)頁(yè)面HTML用于創(chuàng)建靜態(tài)網(wǎng)頁(yè),內(nèi)容固定。動(dòng)態(tài)頁(yè)面JSP用于創(chuàng)建動(dòng)態(tài)網(wǎng)頁(yè),內(nèi)容可變。服務(wù)器端JSP在服務(wù)器端執(zhí)行,生成動(dòng)態(tài)HTML。數(shù)據(jù)交互JSP可以與數(shù)據(jù)庫(kù)交互,動(dòng)態(tài)顯示數(shù)據(jù)。JSP生命周期翻譯階段JSP引擎將JSP頁(yè)面轉(zhuǎn)換為Servlet代碼。編譯階段編譯器將Servlet代碼編譯為字節(jié)碼文件。加載階段Servlet容器加載編譯后的Servlet類。初始化階段Servlet容器調(diào)用Servlet的init()方法進(jìn)行初始化。服務(wù)階段Servlet容器調(diào)用Servlet的service()方法來(lái)處理客戶端請(qǐng)求。銷毀階段Servlet容器調(diào)用Servlet的destroy()方法釋放資源。JSP腳本元素聲明腳本使用<%!%>標(biāo)記,定義變量或方法,在整個(gè)JSP頁(yè)面中有效,可供其他腳本元素訪問(wèn)。表達(dá)式腳本使用<%=%>標(biāo)記,用于輸出表達(dá)式結(jié)果,通常用于展示數(shù)據(jù)。代碼腳本使用<%%>標(biāo)記,用于嵌入Java代碼,實(shí)現(xiàn)復(fù)雜邏輯,與Servlet代碼類似。JSP聲明腳本語(yǔ)法聲明腳本使用<%!和標(biāo)記包圍。聲明腳本定義在JSP頁(yè)面中,用于聲明變量、方法、類或接口。作用域聲明腳本的變量和方法在整個(gè)JSP頁(yè)面范圍內(nèi)有效,可以在其他腳本元素中訪問(wèn)和使用。示例例如,聲明一個(gè)變量名為myVar的變量,其類型為String,并將值設(shè)置為"HelloWorld"。注意事項(xiàng)聲明腳本中的代碼在JSP頁(yè)面被編譯成Servlet時(shí)執(zhí)行,而不是在頁(yè)面被請(qǐng)求時(shí)執(zhí)行。表達(dá)式腳本1語(yǔ)法表達(dá)式腳本用于在JSP頁(yè)面中輸出Java表達(dá)式的值。表達(dá)式腳本以<%=%>開頭和結(jié)尾,包含一個(gè)合法的Java表達(dá)式,例如變量、方法調(diào)用等。JSP引擎會(huì)將表達(dá)式計(jì)算結(jié)果轉(zhuǎn)換成字符串并輸出到頁(yè)面。2示例例如,<%="Hello,World!"%>將輸出"Hello,World!"到頁(yè)面。<%=newDate()%>會(huì)輸出當(dāng)前日期和時(shí)間。3應(yīng)用表達(dá)式腳本主要用于動(dòng)態(tài)生成頁(yè)面內(nèi)容,例如根據(jù)數(shù)據(jù)庫(kù)存儲(chǔ)的用戶名或日期動(dòng)態(tài)顯示信息,增強(qiáng)頁(yè)面的交互性和靈活性。代碼腳本執(zhí)行Java代碼代碼腳本使用<%%>標(biāo)簽包圍,用于在JSP頁(yè)面中執(zhí)行Java代碼。邏輯控制通過(guò)代碼腳本,可以實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯處理,例如數(shù)據(jù)操作、條件判斷、循環(huán)等。動(dòng)態(tài)內(nèi)容生成代碼腳本可以動(dòng)態(tài)生成HTML內(nèi)容,例如根據(jù)數(shù)據(jù)生成表格、列表、表單等。JSP內(nèi)置對(duì)象11.request提供客戶端發(fā)送請(qǐng)求的信息,例如請(qǐng)求參數(shù)、請(qǐng)求方法、請(qǐng)求頭等。22.response用于響應(yīng)客戶端的請(qǐng)求,設(shè)置響應(yīng)頭、響應(yīng)狀態(tài)碼、響應(yīng)內(nèi)容等。33.session用于保存用戶會(huì)話信息,例如用戶名、購(gòu)物車內(nèi)容等,在同一個(gè)會(huì)話中共享。44.application用于保存應(yīng)用程序級(jí)別的信息,例如數(shù)據(jù)庫(kù)連接信息,在整個(gè)應(yīng)用程序生命周期中共享。JSP內(nèi)置對(duì)象-requestrequest對(duì)象request對(duì)象代表客戶端的請(qǐng)求信息。通過(guò)request對(duì)象,可以訪問(wèn)客戶端發(fā)送的請(qǐng)求參數(shù)、請(qǐng)求頭信息、請(qǐng)求方法、請(qǐng)求路徑等信息。常用方法getRequestURI():獲取請(qǐng)求的URLgetParameter():獲取請(qǐng)求參數(shù)getMethod():獲取請(qǐng)求方法(GET或POST)getHeader():獲取請(qǐng)求頭信息JSP內(nèi)置對(duì)象-response響應(yīng)對(duì)象response對(duì)象代表了JSP頁(yè)面發(fā)送給客戶端的HTTP響應(yīng)。操作響應(yīng)內(nèi)容可以設(shè)置響應(yīng)頭、狀態(tài)碼,并向客戶端發(fā)送數(shù)據(jù)流。設(shè)置字符集使用response.setCharacterEncoding("UTF-8")設(shè)置響應(yīng)字符集,防止亂碼。重定向使用response.sendRedirect()方法可以將客戶端重定向到另一個(gè)URL。session會(huì)話跟蹤session對(duì)象用于跟蹤單個(gè)用戶在網(wǎng)站上的活動(dòng),并存儲(chǔ)用戶的相關(guān)信息,例如用戶名、購(gòu)物車商品等。會(huì)話管理session對(duì)象可以幫助網(wǎng)站管理員管理用戶的會(huì)話,例如控制會(huì)話超時(shí)時(shí)間、清除會(huì)話數(shù)據(jù)等。跨頁(yè)面數(shù)據(jù)共享session對(duì)象允許在不同的頁(yè)面之間共享用戶的會(huì)話數(shù)據(jù),實(shí)現(xiàn)用戶個(gè)性化體驗(yàn)。application全局應(yīng)用程序application對(duì)象表示整個(gè)Web應(yīng)用程序的范圍,用于存儲(chǔ)共享數(shù)據(jù)和信息。服務(wù)器范圍application對(duì)象的生命周期與Web應(yīng)用程序的啟動(dòng)和停止同步,涵蓋整個(gè)應(yīng)用程序運(yùn)行期間。數(shù)據(jù)存儲(chǔ)application對(duì)象提供了一個(gè)集中式位置來(lái)存儲(chǔ)共享資源,例如應(yīng)用程序配置參數(shù)、數(shù)據(jù)庫(kù)連接池等。JSP內(nèi)置對(duì)象-out輸出對(duì)象out對(duì)象用于將數(shù)據(jù)輸出到客戶端瀏覽器。out對(duì)象是JspWriter類的實(shí)例,用于將文本寫入響應(yīng),允許以多種方式輸出數(shù)據(jù),包括HTML、文本和其他類型。out對(duì)象是緩沖型的,這意味著它在寫入響應(yīng)時(shí)不會(huì)立即發(fā)送數(shù)據(jù),而是先將其存儲(chǔ)在緩沖區(qū)中,直到緩沖區(qū)已滿或調(diào)用flush()方法時(shí)才會(huì)發(fā)送數(shù)據(jù)。pageContext頁(yè)面上下文PageContext是JSP頁(yè)面中非常重要的一個(gè)內(nèi)置對(duì)象,它提供了訪問(wèn)JSP頁(yè)面相關(guān)信息的接口,例如頁(yè)面屬性,請(qǐng)求和響應(yīng)對(duì)象,會(huì)話對(duì)象等。作用域PageContext對(duì)象的作用域是頁(yè)面級(jí),它只在當(dāng)前頁(yè)面有效,當(dāng)頁(yè)面跳轉(zhuǎn)或刷新后,PageContext對(duì)象將失效。常用方法getAttribute(Stringname):獲取指定名稱的屬性值setAttribute(Stringname,Objectvalue):設(shè)置指定名稱的屬性值getRequest():獲取當(dāng)前請(qǐng)求對(duì)象getResponse():獲取當(dāng)前響應(yīng)對(duì)象getSession():獲取當(dāng)前會(huì)話對(duì)象getServletContext():獲取當(dāng)前應(yīng)用程序上下文對(duì)象JSP內(nèi)置對(duì)象-configservlet配置對(duì)象config對(duì)象包含servlet的配置信息,如servlet的名字、初始化參數(shù)等。獲取servlet配置開發(fā)者可以使用config對(duì)象獲取servlet的配置信息,例如servlet的初始化參數(shù)。獲取servlet上下文config對(duì)象可以獲取servlet上下文,它提供了訪問(wèn)服務(wù)器環(huán)境和資源的方法。JSP內(nèi)置對(duì)象-exception11.異常處理對(duì)象exception對(duì)象表示一個(gè)JSP頁(yè)面中出現(xiàn)的異常。22.錯(cuò)誤信息獲取它允許您獲取異常的詳細(xì)信息,包括錯(cuò)誤消息、堆棧跟蹤等。33.錯(cuò)誤頁(yè)面的跳轉(zhuǎn)通過(guò)exception對(duì)象,您可以將用戶重定向到一個(gè)錯(cuò)誤頁(yè)面,提供友好的錯(cuò)誤提示。JSP指令指令的作用JSP指令用于為JSP頁(yè)面提供全局信息。指令語(yǔ)法指令使用<%@指令名稱屬性="值"%>的語(yǔ)法格式。指令類型JSP指令主要包括page、include和taglib三種。JSP指令-page指令page指令用于設(shè)置JSP頁(yè)面的相關(guān)屬性。import屬性導(dǎo)入所需的Java類或包,類似于Java中的import語(yǔ)句。language屬性指定JSP頁(yè)面使用的腳本語(yǔ)言,默認(rèn)值為Java。errorPage屬性指定當(dāng)JSP頁(yè)面出現(xiàn)錯(cuò)誤時(shí)跳轉(zhuǎn)的頁(yè)面。include指令1動(dòng)態(tài)包含在編譯時(shí)將其他JSP頁(yè)面動(dòng)態(tài)地包含到當(dāng)前JSP頁(yè)面中。2代碼復(fù)用使用include指令可以減少代碼重復(fù),提高代碼復(fù)用率。3語(yǔ)法<%@includefile="path/to/file.jsp"%>4應(yīng)用場(chǎng)景常用于包含頁(yè)眉、頁(yè)腳等公共部分。JSP指令-taglib指令taglib指令用于聲明自定義標(biāo)簽庫(kù)。自定義標(biāo)簽庫(kù)可以提供可重用的代碼塊,簡(jiǎn)化JSP開發(fā)。前綴URItaglib指令的語(yǔ)法:<%@taglibprefix="c"uri="/jsp/jstl/core"%>此示例聲明了JSTL核心庫(kù),并使用"c"作為前綴。JSP動(dòng)作元素JSP動(dòng)作元素概述JSP動(dòng)作元素用于在JSP頁(yè)面中執(zhí)行特定操作,如包含其他頁(yè)面、轉(zhuǎn)發(fā)請(qǐng)求或創(chuàng)建JavaBean對(duì)象。常用動(dòng)作元素JSP動(dòng)作元素可以分為包含、轉(zhuǎn)發(fā)、參數(shù)傳遞、Bean操作、屬性設(shè)置等幾類。語(yǔ)法格式JSP動(dòng)作元素通常使用``格式,例如``、``等。動(dòng)作元素11.靜態(tài)包含在JSP頁(yè)面編譯時(shí)將被包含的頁(yè)面代碼嵌入到當(dāng)前JSP頁(yè)面中。22.動(dòng)態(tài)包含在JSP頁(yè)面運(yùn)行時(shí)才將被包含的頁(yè)面代碼包含進(jìn)來(lái)。33.參數(shù)傳遞可使用元素向被包含頁(yè)面?zhèn)鬟f參數(shù)。44.頁(yè)面刷新當(dāng)包含的頁(yè)面內(nèi)容發(fā)生變化時(shí),需要重新編譯JSP頁(yè)面才能看到更新。頁(yè)面重定向當(dāng)執(zhí)行動(dòng)作元素時(shí),JSP容器會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到指定的另一個(gè)資源,如JSP頁(yè)面或Servlet。轉(zhuǎn)發(fā)操作發(fā)生在服務(wù)器端,用戶瀏覽器地址欄不會(huì)改變,并保留請(qǐng)求參數(shù)。代碼示例<jsp:forwardpage="welcome.jsp"/>以上代碼將請(qǐng)求轉(zhuǎn)發(fā)到名為welcome.jsp的頁(yè)面。動(dòng)作元素傳遞參數(shù)用于向其他JSP頁(yè)面、Servlet或其他資源傳遞參數(shù)。屬性設(shè)置可以將參數(shù)設(shè)置為JavaBean的屬性。動(dòng)態(tài)內(nèi)容允許在JSP頁(yè)面中動(dòng)態(tài)生成參數(shù)值,提高靈活性。動(dòng)作元素JavaBean實(shí)例化使用JavaBean對(duì)象,實(shí)現(xiàn)代碼復(fù)用屬性賦值通過(guò)設(shè)置JavaBean屬性屬性獲取使用獲取JavaBean屬性動(dòng)作元素設(shè)置JavaBean屬性使用設(shè)置JavaBean屬性值。該元素允許從請(qǐng)求參數(shù)、表單數(shù)據(jù)或其他來(lái)源設(shè)置屬性。指定屬性名稱使用name屬性指定要設(shè)置的JavaBean屬性。設(shè)置屬性值使用value屬性或param屬性從請(qǐng)求中獲取屬性值。您可以使用表達(dá)式或靜態(tài)值。動(dòng)作元素從JavaBean中獲取屬性值。用于訪問(wèn)JavaBean中的屬性,并將其顯示在JSP頁(yè)面上。語(yǔ)法<jsp:getPropertyname="beanName"property="propertyName"/>name屬性:指定要訪問(wèn)的JavaBean的名稱。property屬性:指定要獲取的屬性名稱。JSP頁(yè)面的制作流程1設(shè)計(jì)JSP頁(yè)面首先,使用文本編輯器或IDE編寫JSP代碼,包含HTML結(jié)構(gòu)、JSP腳本元素和指令,并使用JSP標(biāo)簽庫(kù)增強(qiáng)功能。2配置Web服務(wù)器在Web服務(wù)器上配置JSP引擎,并確保服務(wù)器支持JSP規(guī)范,例如Tomcat、JBoss或GlassFish等。3部署和運(yùn)行將JSP頁(yè)面部署到Web服務(wù)器,并將應(yīng)用程序部署到服務(wù)器,確保所有依賴項(xiàng)已正確配置,最后啟動(dòng)服務(wù)器并訪問(wèn)JSP頁(yè)面進(jìn)行測(cè)試。JSP編譯和執(zhí)行過(guò)程1JSP頁(yè)面JSP頁(yè)面被請(qǐng)求2JSP引擎將JSP頁(yè)面轉(zhuǎn)換為Servlet代碼3Servlet代碼編譯為字節(jié)碼文件4字節(jié)碼文件加載到JVM執(zhí)行5執(zhí)行結(jié)果生成動(dòng)態(tài)網(wǎng)頁(yè)JSP引擎解析JSP頁(yè)面,將JSP代碼轉(zhuǎn)換為JavaServlet代碼,再由Java編譯器編譯成字節(jié)碼文件。該字節(jié)碼文件被加載到JVM中執(zhí)行,并生成動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容。JSP資源導(dǎo)入導(dǎo)入Java包使用`import`語(yǔ)句導(dǎo)入所需的Java包,例如`java.util.*`或`javax.servlet.*`。導(dǎo)入Java類使用`import`語(yǔ)句導(dǎo)入特定Java類,例如`java.util.Date`或`javax.servlet.http.HttpServletRequest`。導(dǎo)入Java包引入外部類通過(guò)import語(yǔ)句,可以將其他Java包中的類引入當(dāng)前JSP頁(yè)面。使用引入的類引入的類可以像其他Java類一樣在JSP頁(yè)面中被訪問(wèn)和使用。導(dǎo)入Java類導(dǎo)入類使用import關(guān)鍵字導(dǎo)入Java類,方便在JSP頁(yè)面中使用該類。指定包名import語(yǔ)句需要指定要導(dǎo)入的Java類的完整包名,以便JSP頁(yè)面找到該類。使用類導(dǎo)入Java類后,可以在JSP頁(yè)面中使用該類的屬性和方法。JSP異常處理1錯(cuò)誤類型JSP異常處理機(jī)制可以捕獲多種錯(cuò)誤,例如語(yǔ)法錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤和數(shù)據(jù)庫(kù)連接錯(cuò)誤。2錯(cuò)誤頁(yè)面JSP頁(yè)面可以通過(guò)配置錯(cuò)誤頁(yè)面,在發(fā)生異常時(shí),用戶將被重定向到指定的錯(cuò)誤頁(yè)面。3異常處理方法使用try-catch語(yǔ)句塊捕獲和處理異常,確保應(yīng)用程序穩(wěn)定運(yùn)行。4錯(cuò)誤日志記錄將異常信息記錄到日志文件中,方便調(diào)試和排查問(wèn)題。JSP文件上傳上傳文件JSP頁(yè)面可以通過(guò)HTML表單元素允許用戶上傳文件,例如圖片、文檔或其他類型文件。處理請(qǐng)求JSP頁(yè)面需要接收上傳的請(qǐng)求,并使用Servlet或其他Java類來(lái)處理上傳文件。文件存儲(chǔ)上傳的文件可以存儲(chǔ)到服務(wù)器的特定目錄或數(shù)據(jù)庫(kù),并根據(jù)需要進(jìn)行進(jìn)一步處理。安全考慮需要實(shí)施安全措施,例如文件大小限制、文件類型驗(yàn)證和跨站點(diǎn)腳本攻擊防御,以確保安全上傳。JSP文件下載11.設(shè)置響應(yīng)頭使用response對(duì)象設(shè)置響應(yīng)頭,指定文件類型和文件名。22.輸出文件內(nèi)容讀取本地文件內(nèi)容,并寫入響應(yīng)輸出流。33.關(guān)閉資源關(guān)閉輸入流和輸出流,釋放資源。JSP與JavaBean的集成JavaBeanJavaBean是可重用、可移植的Java組件。JSPJSP頁(yè)面可以通過(guò)JavaBean訪問(wèn)數(shù)據(jù)和邏輯。集成JSP與JavaBean的集成簡(jiǎn)化了Web應(yīng)用開發(fā)。JSP與JDBC的集成數(shù)據(jù)庫(kù)連接JSP頁(yè)面可以使用JDBC連接數(shù)據(jù)庫(kù),訪問(wèn)和操作數(shù)據(jù)。數(shù)據(jù)庫(kù)操作JSP代碼可以使用JDBCAPI執(zhí)行SQL語(yǔ)句,實(shí)現(xiàn)數(shù)據(jù)查詢、插入、更新和刪除。數(shù)據(jù)展示JSP頁(yè)面可以將查詢到的數(shù)據(jù)以各種格式展示給用戶,例如表格、列表或圖表。JSP與Servlet的集成Servlet處理請(qǐng)求Servlet是負(fù)責(zé)接收HTTP請(qǐng)求,處理業(yè)務(wù)邏輯,并生成HTTP響應(yīng)的組件。Servlet負(fù)責(zé)數(shù)據(jù)處理和業(yè)務(wù)邏輯,而JSP負(fù)責(zé)頁(yè)面的展示。JSP提供動(dòng)態(tài)內(nèi)容JSP可以訪問(wèn)Servlet中的數(shù)據(jù),并使用這些數(shù)據(jù)生成動(dòng)態(tài)頁(yè)面。Servlet將數(shù)據(jù)傳遞給
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年超市季節(jié)性促銷員勞動(dòng)合同3篇
- 二零二五版智能家居砌墻裝修承包合同范本2篇
- 二零二五版3海上貨物運(yùn)輸合同-海上貨物運(yùn)輸事故處理及賠償協(xié)議2篇
- 二零二五版綜合性博士后研究人員聘用合同書3篇
- 二零二五版物聯(lián)網(wǎng)技術(shù)培訓(xùn)服務(wù)合同樣本2篇
- 二零二五年度版權(quán)買賣合同(圖書)5篇
- 二零二五版勞動(dòng)合同法下社保購(gòu)買期限及權(quán)益保障協(xié)議3篇
- 二零二五年度餐廳線上線下融合推廣承包合同2篇
- 二零二五年網(wǎng)絡(luò)廣告投放合同封面素材2篇
- 二零二五版電影IP授權(quán)與贊助合同3篇
- 人教版數(shù)學(xué)三年級(jí)下冊(cè)《簡(jiǎn)單的小數(shù)加、減法》說(shuō)課稿(附反思、板書)課件
- 白酒代理合同范本
- 稅前工資反算表模板
- 廣東省深圳市2023年中考英語(yǔ)試題(含答案與解析)
- MOOC 電工學(xué)(電氣工程學(xué)概論)-天津大學(xué) 中國(guó)大學(xué)慕課答案
- 2019級(jí)水電站動(dòng)力設(shè)備專業(yè)三年制人才培養(yǎng)方案
- 室內(nèi)裝飾裝修施工組織設(shè)計(jì)方案
- 洗浴中心活動(dòng)方案
- 送電線路工程施工流程及組織措施
- 韓國(guó)文化特征課件
- 抖音認(rèn)證承諾函
評(píng)論
0/150
提交評(píng)論