


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、javaweb期末復(fù)習(xí)知識(shí)點(diǎn)整理1、 Web應(yīng)用概述 1. URL與URIURL: 統(tǒng)一資源定位器URI:統(tǒng)一資源定位符2. 常見HTML標(biāo)簽 3. 表單的處理 4. 靜態(tài)文檔與動(dòng)態(tài)文檔的概念:靜態(tài)文檔是一種以文件的形式存放在服務(wù)器端的文檔,客戶發(fā)出對(duì)該文檔的請(qǐng)求,服務(wù)器返回這個(gè)文檔。動(dòng)態(tài)文檔是指文檔的內(nèi)容可根據(jù)需要?jiǎng)討B(tài)生成,又可分為服務(wù)器端動(dòng)態(tài)文檔和客戶端動(dòng)態(tài)文檔技術(shù)。5. Servlet概念:服務(wù)器端小程序,是使用ServletAPI以及相關(guān)類編寫的java程序,主要用來(lái)擴(kuò)展web服務(wù)器的功能。6. 處理404錯(cuò)誤:查看給定的路徑名是否正確,查看Servlet類文件是否在classes目錄
2、下,查看文件內(nèi)容是否正確,查看tomcat是否啟動(dòng)2、 Servlet技術(shù)模型 1. Servlet的API:包,包v Servlet接口及方法 :1) public void init(ServletConfig config):完成Servlet初始化并準(zhǔn)備提供服務(wù)。容器傳給該方法一個(gè)ServletConfig類型的參數(shù)。2) public void service(ServletRequest req,ServletResponse res)throw ServletException,IOException:對(duì)每個(gè)客戶請(qǐng)求容器調(diào)用一次該方法,它允許Servlet為請(qǐng)求提供響應(yīng)。3) p
3、ublic void destroy()該方法由容器調(diào)用,指示Servlet清除本身,釋放請(qǐng)求的資源并準(zhǔn)備結(jié)束服務(wù)。4) public ServletConfig getServletConfig()返回關(guān)于Servlet的配置信息,如傳遞給init()方法的參數(shù)。5) public String getServletInfo()返回關(guān)于Servlet的信息,如作者,版本及版權(quán)信息。v ServleConfig接口作用及方法 v HttpServlet類 :新的service方法,doGet,doPostv HttpServletRequest接口及常用方法 v HttpServletResp
4、onse接口及常用方法2. Servlet的開發(fā)步驟 v 編寫一個(gè)Servlet類 v 編譯 v 部署 (1)在tomcat的虛擬目錄下,創(chuàng)建Web目錄(2)將編譯好的.class文件復(fù)制到Web目錄的WEB-INFclasses目錄(3)修改配置文件WEB-INF(4)啟動(dòng)tomcat v 運(yùn)行3. Servlet的執(zhí)行過(guò)程 1) 用戶通過(guò)單擊超鏈接或提交表單向容器請(qǐng)求訪問(wèn)Servlet,容器分析這個(gè)請(qǐng)求,創(chuàng)建request和response兩個(gè)對(duì)象 2) 容器根據(jù)請(qǐng)求的URL找到正確的Servlet,為這個(gè)請(qǐng)求創(chuàng)建一個(gè)線程對(duì)象(每次請(qǐng)求都創(chuàng)建一個(gè)線程) 3) 容器調(diào)用Servlet的ser
5、vice方法,把請(qǐng)求和響應(yīng)對(duì)象作為參數(shù)傳遞給該方法 4) 調(diào)用Servlet的doGet()或doPost()方法 5) 向客戶發(fā)送響應(yīng):Servlet使用相應(yīng)對(duì)象獲得輸出流對(duì)象,調(diào)用有關(guān)方法將響應(yīng)寫給客戶,響應(yīng)通過(guò)容器發(fā)送給瀏覽器。4. Servlet的生命周期加載實(shí)例化Servlet初始化Servlet(init)為客戶提供服務(wù)(service)銷毀Servlet(destroy)5. 分析請(qǐng)求 http請(qǐng)求結(jié)構(gòu):請(qǐng)求行請(qǐng)求頭空行數(shù)據(jù)get方法與post方法的對(duì)比public String getParameter(String name)public String getParamete
6、rValues(String name)public Enumeration getParameterNames()6. 請(qǐng)求轉(zhuǎn)發(fā)RequestDispatcher dispatcher=(location);Dispatcher. forward(request, response)7. 發(fā)送響應(yīng)響應(yīng)結(jié)構(gòu):狀態(tài)行響應(yīng)頭空行響應(yīng)數(shù)據(jù)(“text/html;charset=gb2312”);PrintWriter out=();響應(yīng)重定向:(“URL”); return;響應(yīng)重定向與請(qǐng)求轉(zhuǎn)發(fā)的比較:forward()方法轉(zhuǎn)發(fā)請(qǐng)求是服務(wù)器端控制權(quán)的轉(zhuǎn)向,客戶端地址欄中不顯示轉(zhuǎn)發(fā)后的資源地址。sen
7、dRedirect()方法是服務(wù)器向?yàn)g覽器發(fā)送一個(gè)特殊的響應(yīng),它使瀏覽器連接到新的位置,瀏覽器地址欄可看到地址的變化。使用重定向,資源不能位于WEB-INF目錄下。頁(yè)面錯(cuò)誤:200表示請(qǐng)求成功,404表示頁(yè)面沒有找到,500表示服務(wù)器內(nèi)部錯(cuò)誤3、 Servlet容器模型 1. Web應(yīng)用程序的部署(1)在tomcat的虛擬目錄下,創(chuàng)建Web目錄(2)將編譯好的.class文件復(fù)制到Web目錄的WEB-INFclasses目錄(3)修改配置文件WEB-INF(4)啟動(dòng)tomcat 2. 理解Web應(yīng)用程序的部署描述文件下面的代碼展示了在部署描述文件中<servlet>元素的一個(gè)典型的
8、使用:<servlet> <servlet-name>helloServlet</servlet-name> 定義Servlet名稱 <servlet-class> 指定Servlet類的完整名稱 </servlet-class> <init-param>向Servlet傳遞的初始化參數(shù),可以定義多個(gè) <param-name>email</param-name></param-value> </init-param> <servlet-mapping> 定義一個(gè)映
9、射 <servlet-name>HelloServlet</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> <load-on-startup>2</load-on-startup> </servlet>3. ServletConfig得到ServletConfig接口對(duì)象的方法 :ServletConfig config = getServletConfig();覆蓋Servlet的init方法。ServletCo
10、nfig接口共定義了下面4個(gè)方法: public String getInitParameter(String name):返回指定名稱的初始化參數(shù)值(是從DD文件中取出)public Enumeration getInitParameterNames ()public String getServletName() :返回DD文件中<servlet-name>的名稱public ServletContext getServletContext():返回Servlet所在上下文對(duì)象4. ServletContext接口§ 使用RequestDispatcher實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)
11、 § ServletRequest的getRequestDispatcher()方法,可以傳遞一個(gè)相對(duì)路徑,§ ServletContext的getRequestDispatcher()方法只能傳遞以“/”開頭的路徑。 § 通過(guò)ServletContext對(duì)象共享數(shù)據(jù)4、 會(huì)話管理 1. 會(huì)話管理 v 理解會(huì)話的基本思想和管理機(jī)制 v 了解會(huì)話對(duì)象HttpSession及常見方法 調(diào)用獲取HttpSession對(duì)象:HttpSession session = (true);將信息存入會(huì)話public void setAttribute (String name,
12、Object value)查找與會(huì)話相關(guān)聯(lián)的信息 public Object getAttribute(String name) public Enumeration getAttributeNames() public void removeAttribute(String name)v 使用HttpSession對(duì)象通常需要三步:(1)為客戶創(chuàng)建或獲得與請(qǐng)求關(guān)聯(lián)的會(huì)話對(duì)象;(2)在會(huì)話對(duì)象中添加或刪除名/值對(duì)屬性;(3)如果需要可使會(huì)話失效。2. 通過(guò)Cookie(一小段文字信息)支持會(huì)話 v Cookie類的常用方法: getName、 getValue、setValue、setMaxA
13、ge和getMaxAge; v 向客戶端發(fā)送Cookie § 創(chuàng)建Cookie對(duì)象 Cookie c = new Cookie("username", "hacker"); § 將Cookie放入到HTTP響應(yīng)中 (c) 從客戶端讀取Cookie Cookie cookies = (); if (cookies!=null) for(int i = 0;i<i+) Cookie cookie = cookiesi; if().equals(cookieName) cookieValue = (); 3. URL重寫與
14、隱藏表單域重寫正在重定向的URL調(diào)用encodeRedirectURL( )方法 ( 在HTML頁(yè)面中,可以使用下面代碼實(shí)現(xiàn)隱藏的表單域: <input type="hidden" name="session" value="a1234">5、 JSP技術(shù)模型 1. JSP基本語(yǔ)法 <% %> JSP 指令:page指令、include指令和taglib指令<%! %> JSP 聲明:理解<%! int count = 0; %>和<% int count = 0; %>的區(qū)
15、別 <% %> JSP小腳本<%= %> JSP表達(dá)式<jsp: > JSP 動(dòng)作:jsp標(biāo)準(zhǔn)動(dòng)作、JSTL中的動(dòng)作、用戶自定義動(dòng)作 jsp標(biāo)準(zhǔn)動(dòng)作包括<jsp:forward>、<jsp:include>、<jsp:plugin>、<jsp:useBean> 、<jsp:getProperty>、<jsp:setProperty> <%- -%> JSP注釋2. JSP頁(yè)面生命周期 v 理解JSP的執(zhí)行過(guò)程 瀏覽器訪問(wèn)一個(gè)jsp頁(yè)面,服務(wù)器端的web容器將jsp轉(zhuǎn)換為ser
16、vlet,并處理執(zhí)行此servlet中的相關(guān)內(nèi)容,產(chǎn)生響應(yīng)結(jié)果,然后再由web容器將響應(yīng)結(jié)果返回客戶端瀏覽器。v 理解JSP頁(yè)面轉(zhuǎn)換 v 理解JSP頁(yè)面的生命周期頁(yè)面轉(zhuǎn)換頁(yè)面編譯加載類創(chuàng)建實(shí)例調(diào)用jspInit()方法調(diào)用_jspService()方法調(diào)用jspDestroy()方法3. 理解page指令屬性 v page指令用于告訴容器關(guān)于JSP頁(yè)面的全局屬性,該指令適用于整個(gè)轉(zhuǎn)換單元而不僅僅是它所聲明的頁(yè)面。 v 語(yǔ)法格式如下: <% page language="java" extends=""合法的實(shí)現(xiàn)了接口的java類 import=&q
17、uot; | package.*,." 導(dǎo)入在jsp中使用的java類和接口 contentType="mimeType ;charset=characterSet" | "text/html; charset=ISO-8859-1" 指定輸出類型 session="true | false" 指定jsp是否參加http會(huì)話 buffer="none | 8kb | sizekb" 指定輸出緩沖區(qū)的大小 autoFlush="true | false" isThreadSafe=&qu
18、ot;true | false" info="text" errorPage="relativeURL" 用相對(duì)URL指定另一個(gè)jsp頁(yè)面來(lái)處理錯(cuò)誤 isErrorPage="true | false" 指定是否要用另一個(gè)jsp頁(yè)面來(lái)處理錯(cuò)誤%> 4. JSP隱含變量(內(nèi)置對(duì)象)v JSP 有以下九種內(nèi)置對(duì)象,包括:§ request,請(qǐng)求對(duì)象(是HttpServletRequest的隱含變量)§ session,會(huì)話對(duì)象(是HttpSession的隱含變量)§ applic
19、ation,應(yīng)用程序?qū)ο螅ㄊ荢ervletContext的隱含變量)§ page,頁(yè)面對(duì)象§ response,響應(yīng)對(duì)象§ pageContext,頁(yè)面上下文對(duì)象§ out,輸出對(duì)象§ config,配置對(duì)象§ exception,例外對(duì)象 5. 作用域?qū)ο?應(yīng)用作用域application: ServletContext :在整個(gè)web應(yīng)用程序有效會(huì)話作用域session:HttpSession :在一個(gè)用戶會(huì)話范圍內(nèi)有效請(qǐng)求作用域request: ServletRequest :在用戶的請(qǐng)求和轉(zhuǎn)發(fā)的請(qǐng)求內(nèi)有效頁(yè)面作用域page:
20、PageContext :只在當(dāng)前頁(yè)面內(nèi)有效6、 Web組件重用與JavaBeans1. 靜態(tài)包含和動(dòng)態(tài)包含 v 靜態(tài)包含是在JSP頁(yè)面轉(zhuǎn)換階段將另一個(gè)文件的內(nèi)容包含到當(dāng)前JSP文件中產(chǎn)生一個(gè)servlet。靜態(tài)包含使用include指令,語(yǔ)法: <% include file="relativeURL" %> 包含的文件在當(dāng)前Web應(yīng)用程序下,可以是任何基于文本的文件,如HTML、JSP、XML文件,甚至是簡(jiǎn)單的.txt文件。 v 動(dòng)態(tài)包含是通過(guò)JSP標(biāo)準(zhǔn)動(dòng)作< jsp:include>實(shí)現(xiàn)的,它是在請(qǐng)求時(shí)將另一個(gè)頁(yè)面的輸出包含到主頁(yè)面的輸出中。
21、動(dòng)態(tài)包含使用jsp:include標(biāo)準(zhǔn)動(dòng)作,其語(yǔ)法如下所示:<jsp:include page="relativeURL" flush="true" /><%cincludefile=” ”%> <jsp:include page=” ” flush=”true”/> 修改了被包含的文件后,需更新源文件修改了被包含的文件后,不需更新源文件包含外部頁(yè)面的過(guò)程在原JSP頁(yè)面被編譯成Servlet時(shí)進(jìn)行包含外部頁(yè)面的過(guò)程在運(yùn)行時(shí)進(jìn)行使用<jsp:forward>動(dòng)作把請(qǐng)求轉(zhuǎn)發(fā)到其他組件,然后由轉(zhuǎn)發(fā)到的組件把響應(yīng)發(fā)
22、送給客戶v 該動(dòng)作的格式為: <jsp:forward page="relativeURL" />v page屬性的值為轉(zhuǎn)發(fā)到的組件的相對(duì)URL,它可以使用請(qǐng)求時(shí)屬性表達(dá)式。v 它與<jsp:include>動(dòng)作的不同之處在于,當(dāng)轉(zhuǎn)發(fā)到的頁(yè)面處理完輸出后,并不將控制轉(zhuǎn)回主頁(yè)面。v 使用<jsp:forward>動(dòng)作,主頁(yè)面也不能包含任何輸出。2. JavaBeans及序列化 v JavaBean就是使用Java語(yǔ)言定義的類,而這種類的設(shè)計(jì)需要遵循Sun制定的JavaBean規(guī)范文檔中描述的有關(guān)約定。v 在Java模型中,通過(guò)JavaBea
23、n可以無(wú)限擴(kuò)充Java程序的功能。v JavaBean的最大好處是可以實(shí)現(xiàn)代碼的重復(fù)利用,另外在JSP頁(yè)面中使用JavaBean可使代碼更簡(jiǎn)潔,也易維護(hù),也可充分利用面向?qū)ο笳Z(yǔ)言的特性。 v 在JSP程序中常用JavaBean來(lái)封裝業(yè)務(wù)邏輯、數(shù)據(jù)庫(kù)操作等等,可以很好地實(shí)現(xiàn)業(yè)務(wù)邏輯和表示邏輯的分離。3. Javabeans規(guī)范遵循下面3個(gè)規(guī)范的Java類作為JavaBean § 類必須是public的;類必須具有無(wú)參數(shù)的public構(gòu)造方法,§ JavaBeans類的成員變量一般稱為屬性(property)。對(duì)每個(gè)屬性訪問(wèn)權(quán)限一般定義為private或protected,而不
24、是定義為public的。注意:屬性名必須以小寫字母開頭。 § 對(duì)每個(gè)屬性,一般定義兩個(gè)public方法,它們分別稱為訪問(wèn)方法(getXxx)和修改方法(setXxx),允許容器訪問(wèn)和修改bean的屬性。 JavaBean的主要特性 § 是一個(gè)Java類§ 有一個(gè)無(wú)參數(shù)的構(gòu)造函數(shù)§ 不應(yīng)該有公開的實(shí)例變量§ 對(duì)值的獲取采用getXxx和setXxx方法來(lái)訪問(wèn)§ boolean型屬性,允許用is代替get和set 4. 在Servlet中使用JavaBeans通過(guò)JavaBeans共享數(shù)據(jù) etRequestDispatcher(&quo
25、t;/").forward(request,response); 5. 在JSP中使用JavaBeansv 使用<jsp:useBean>§ <jsp:useBean>動(dòng)作通過(guò)五個(gè)屬性來(lái)定制該動(dòng)作的行為: id 、scope 、class 、type 、beanName § <jsp:useBean id=”customer” class=” scope="session" /> v 使用<jsp:setProperty>§ <% page import=""
26、%>§ <jsp:useBean id="customer" class="" />§ <jsp:setProperty name="customer" property="custName" value=“zxm" /> v 使用<jsp:getProperty><jsp:getProperty name="customer" property="email" />6. 理解MVC設(shè)計(jì)模式及
27、其開發(fā)步驟v 理解MVC設(shè)計(jì)模式 v Model代表了數(shù)據(jù)對(duì)象,用JavaBeans實(shí)現(xiàn)v View用來(lái)在屏幕上顯示數(shù)據(jù)對(duì)象的當(dāng)前狀態(tài),是應(yīng)用程序的外觀,用JSP頁(yè)面實(shí)現(xiàn)v Controller定義了用戶接口對(duì)用戶輸入反應(yīng)的方式,它處理數(shù)據(jù)對(duì)象,用Servlet實(shí)現(xiàn) v 開發(fā)步驟 v 1. 定義JavaBeans表示數(shù)據(jù)v 2. 使用Servlet處理請(qǐng)求v 3.調(diào)用業(yè)務(wù)邏輯完成相應(yīng)功能,填寫JavaBeans對(duì)象數(shù)據(jù) v 4.結(jié)果的存儲(chǔ)v 5. 轉(zhuǎn)發(fā)請(qǐng)求到JSP頁(yè)面 v 6. 從JavaBeans對(duì)象中提取數(shù)據(jù)7、 JDBC數(shù)據(jù)庫(kù)訪問(wèn) 1. JDBC數(shù)據(jù)庫(kù)訪問(wèn)的一般步驟 1)加載驅(qū)動(dòng)程序:使
28、用Class類的forName()靜態(tài)方法,如(""); 2) 建立連接對(duì)象:使用DriverManager類的getConnection() ,如 String dburl = jdbc: conn = (dburl, "root", "111111"); 3) 創(chuàng)建語(yǔ)句對(duì)象:使用Connection接口的不同方法創(chuàng)建,如 Statement stmt = ();4) 獲得SQL語(yǔ)句的執(zhí)行結(jié)果:對(duì)于查詢語(yǔ)句,調(diào)用executeQuery(String sql)方法,如:String sql = "SELECT * FROM
29、 books" ;ResultSet rst = (sql) ;while() (1)+"t") ; 對(duì)于語(yǔ)句如CREATE、ALTER、DROP、INSERT、UPDATE、DELETE等須executeUpdate(String sql)方法。5) 關(guān)閉建立的對(duì)象: close()方法釋放資源 2. JDBC API:Connection接口、Statement接口、ResultSet接口 3. 理解DAO設(shè)計(jì)模式v DAO(Data Access Object)稱為數(shù)據(jù)訪問(wèn)對(duì)象。v DAO設(shè)計(jì)模式可以在使用數(shù)據(jù)庫(kù)的應(yīng)用程序中實(shí)現(xiàn)業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)邏輯分離,從
30、而使應(yīng)用的維護(hù)變得簡(jiǎn)單。v 它通過(guò)將數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)(通常使用JDBC技術(shù))封裝在DAO類中,提高應(yīng)用程序的靈活性。 8、 自定義標(biāo)簽 1. 自定義標(biāo)簽的開發(fā)步驟 創(chuàng)建標(biāo)簽處理類(tag handler);創(chuàng)建標(biāo)簽庫(kù)描述文件(TLD);在JSP文件中導(dǎo)入標(biāo)簽庫(kù)和使用標(biāo)簽。2. 理解TLD文件 <?xml version="" encoding="UTF-8" > <taglib version=""> <tlib-version></tlib-version> <uri>
31、60; <tag><name>hello2</name><tag-class></tag-class><body-content>empty</body-content><description>Prints Hello user! </description><attribute><name>user</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib> 3. 空標(biāo)簽、帶屬性標(biāo)簽和帶標(biāo)簽體的開發(fā)在JSP頁(yè)面要使用自定義標(biāo)簽,需要通過(guò)<taglib>指令聲明自定義標(biāo)簽的前綴和標(biāo)簽庫(kù)的URI,格式如下所示:<% taglib prefix= "test" uri=""%>的代碼如下: <% pag
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年信息處理考試深化試題及答案
- 高考語(yǔ)文復(fù)習(xí)突破口及試題與答案2023
- 行政管理的道德困境與試題答案解析
- 高考數(shù)學(xué)集中訓(xùn)練模塊試題及答案
- 倉(cāng)庫(kù)出現(xiàn)火災(zāi)應(yīng)急預(yù)案(3篇)
- 高考數(shù)學(xué)解題效率提升分享試題及答案
- 通信公司火災(zāi)應(yīng)急預(yù)案(3篇)
- 采油樹火災(zāi)應(yīng)急預(yù)案(3篇)
- 銀行火災(zāi)應(yīng)急疏散預(yù)案(3篇)
- VB編程問(wèn)答環(huán)節(jié)的試題與答案
- 河南省青桐鳴大聯(lián)考普通高中2024-2025學(xué)年高三考前適應(yīng)性考試地理試題及答案
- 管道勞務(wù)分包協(xié)議書
- 2025年中考理化生實(shí)驗(yàn)操作考試考務(wù)培訓(xùn)大綱
- 拆遷服務(wù)方案
- 成人經(jīng)鼻胃管喂養(yǎng)臨床實(shí)踐指南
- 完整版混凝土結(jié)構(gòu)設(shè)計(jì)原理課程設(shè)計(jì)——單向板肋梁樓蓋設(shè)計(jì)計(jì)算書
- 尾礦庫(kù)基礎(chǔ)知識(shí)(金屬非金屬礦山尾礦庫(kù)安全技術(shù)中心)
- LED燈具絕緣和耐壓測(cè)試說(shuō)明
- 第八章食品包裝材料的安全監(jiān)督與管理 ppt課件
- 《市場(chǎng)調(diào)查與預(yù)測(cè)》說(shuō)課
- 李家沱大橋健康監(jiān)測(cè)實(shí)施方案
評(píng)論
0/150
提交評(píng)論