版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、用戶注冊系統(tǒng)struts2+jsp+mysql5.5五個實驗實驗五有本系統(tǒng)的核心代碼界面V r管理工件平臺r Oi C n> - Eli V手右 T C 3用戶名稱:關聽芻 |11# 1矍錄密碼:驗證碼;essiIBS:13網(wǎng)砧名片 :-lonlhmt個人召層i._拽才李三BPS Bis-T .岳準業(yè)進袁1莫斷力Ljts術論壇 衆(zhòng)出弓疸 圖召度1 SO養(yǎng)理菜單mimneiLJ當前登錄由戶:湘竹隼美伊客用戶甬色;管理員tr “ Il*管理人員基亦信息列表.管'理菜單.-m-J n-EHU當前用戶r1湘竹集美伊客用戶名小強qqqq男21豐機號i4B424Email*修改信息_當前登靈
2、用戶:湘竹吏美伊當 用戶角色:營理貢當前頁:2總頁數(shù)I孑總記錄,1512個人信息IDebug 實驗報告(一)院系:信息學院課程名稱:信息系統(tǒng)設計與開發(fā)(上)日期:班級信 A1022姓名專業(yè)信息管理與信息系統(tǒng)學號29實驗室701實驗名 稱Web技術成績評定教師簽名實驗目 的1、掌握servlet的配置方法2、掌握請求過濾器用法3、掌握lister 用法實驗內(nèi) 容Servlet 配置常用對象 過濾器的用法實 驗 過 程、結 果 及 分 析1、請通過java編與一個客戶端,能夠把指疋網(wǎng)站,指疋網(wǎng)頁中的所有超級連接打印出來import java.io.BufferedReader;import jav
3、a.i o.ln putStreamReader;import java .n et.URL;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Uris private Stri ng startUrl; /開始采集網(wǎng)址String urlC ontent;String Conten tArea;private Stri ng strAreaBegi n, strAreaE nd; /采集區(qū)域開始采集字符串和結束采集字符串private String stringlnUrl, stringNot
4、InUrl;Stri ng strCo nte nt;獲得的采集內(nèi)容Stri ng allUrls; /采集到的所有網(wǎng)址private Stri ng regex; /采集規(guī)則UrlA ndTitle urlAn dTitle = new UrlA ndTitle(); /存儲網(wǎng)址和標題public static void main(String args)Urls myurl = new Urls("<body", "/body");myurl.getStartUrl("");myurl.getUrIC onten t();m
5、yurl.getC onten tArea();myurl.getStri ngl nU rl("");myurl.getStri ngNotl nU rl("google"); myurl.Urls();/ 初始化構造函數(shù) strAreaBegin和strAreaEndpublic Urls(Stri ng strAreaBegi n. String strAreaE nd) this.strAreaBegin = strAreaBegi n;this.strAreaE nd = strAreaE nd;/public void Urls()int i
6、 = 0;/ Stri ng regex ="<a/href="?'?http:/a-zA-Z0-9+.a-zA-Z0-9+.a-zA-Z+/?.?S|s+a>$" final Stri ng regex = "<a.*?/a>"/ String regex ="http:/.*?>"final Pattern pt = Ppile(regex);final Matcher mt = pt.matcher(C onten tArea);while (mt.fi nd() System.o
7、ut.pri ntln( mt.group();i+;/獲取標題final Matcher title = Ppile(">.*?</a>").matcher(mt.group();while (title.fi nd() (”標題:"+ title.group().replaceAII(">|</a>","");/獲取網(wǎng)址final Matcher myurl = Ppile("href=.*?>").matcher(mt.group(); while (myu
8、rl.fi nd() (”網(wǎng)址:"+ myurl.group().replaceAII("href=|>", "");System.out.pri ntl n();(”共有"+ i + "個符合結果");/獲得開始采集網(wǎng)址public void getStartUrl(Stri ng startUrl)this.startUrl = startUrl;/獲得網(wǎng)址所在內(nèi)容;public void getUrlC onten t()Stri ngBuffer is = new Stri ngBuffer();tr
9、y URL myUrl = new URL(startUrl);BufferedReader br = new BufferedReader( new In putStreamReader(myUrl.ope nStream();String s;while (s = br.readL in e() != n ull) is.appe nd(s);urlC on te nt = is.toStri ng(); catch (Excepti on e)System.out.pri ntl n(”網(wǎng)址文件未能輸出”);e.pri ntStackTrace();/獲得網(wǎng)址所在的匹配區(qū)域部分publi
10、c void getC onten tArea()int posl = 0, pos2 = 0;posl = urIC onten t. in dexOf(strAreaBegi n) + strAreaBegi n.len gth();pos2 = urlC onten t.i ndexOf(strAreaE nd, pos1);Conten tArea = urlC onten t.substri ng(pos1, pos2);/以下兩個函數(shù)獲得網(wǎng)址應該要包含的關鍵字及不能包含的關鍵字/這里只做初步的實驗。后期,保護的關鍵字及不能包含的關鍵字應該是不只一個的。public void get
11、StringlnUrl(String stringlnUrl)this.stri nglnUrl = stri nglnUrl;public void getStri ngNotl nUrl(Stri ng stri ngNotI nUrl)this.stri ngNotl nUrl = stri ngNotl nUrl;/獲取采集規(guī)則/獲取url網(wǎng)址public void getUrl()public String getRegex()return regex;class UrlA ndTitle Stri ng myURL;Stri ng title;2、請建立一個servlet類用于顯示
12、當前的系統(tǒng)時間public class ss exte nds HttpServlet public void doGet(HttpServletRequest request, HttpServletResponseresponse)throws ServletExcepti on, I OExcepti on this.dopost(request, resp on se);public void doPost(HttpServletRequest request, HttpServletResponseresponse)throws ServletExcepti on, I OExcep
13、ti on Date date=new Date();resp on se.setC onten tType("text/html");Prin tWriter out = resp on se.getWriter();out.pri ntl n("<!DOCTYPE HTML PUBLIC /"-/W3C/DTD HTML 4.01Tran sitio nal/EN/">");out.pri ntln ("<HTML>");out.pri ntl n(”<HEAD><TI
14、TLE>A Servlet</TITLE></HEAD>");out.pri ntln (”<BODY>");out.pri nt("This is ");out.pri nt(this.getClass();out.println(”,using the GET method"+date);out.pri ntln (”</BODY>");out.pri ntln ("</HTML>");out.flush();out.close();實 驗 過
15、程、結 果 及 分 析3當用戶進入 web應用沒有登入時,要求用戶必須登入。Sessi onF ilter.java package n et.pms.web.filter;import java.i o.IO Excepti on;import javax.servlet.Filter;import javax.servlet.FilterChai n;import javax.servlet.FilterC on fig; import javax.servlet.ServletExceptio n;import javax.servlet.ServletRequest; import j
16、avax.servlet.ServletResp on se;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResp on se; import javax.servlet.http.HttpServletResp on seWrapper;*/public class Sessi onF ilter impleme nts Filter public static boolea n isC on tain s(Stri ng container. Strin g regx)
17、boolea n result = false;for (int i = 0; i < regx .len gth; i+) if (contain er.i ndexOf(regx) != -1) return true;return result;public FilterC onfig con fig;public void setFilterC on fig(FilterC onfig con fig) this.c onfig = con fig;public FilterConfig getFilterConfig() retur n con fig;public void
18、doFilter(ServletRequest request, ServletResp onse resp on se, FilterChain chain) throws lOException, ServletExcepti on HttpServletRequest httpreq = (HttpServletRequest) request; HttpServletResp onse httpres = (HttpServletResp on se) resp on se;HttpServletResp on seWrapper wrapper = newHttpServletRes
19、p on seWrapper(HttpServletResp on se) resp on se); Stringlogo nStri ngs= con fig.get In itParameter("logo nStri ngs");String includeStrings =con fig.getI nitParameter("i ncludeStri ngs");Stri ng redirectPath = httpreq.getC on textPath()+con fig.getI nitParameter("redirectPat
20、h");String disabletestfilter =con fig.getI nitParameter("disabletestfilter");if (disabletestfilter.toUpperCase().equals("Y") cha in. doFilter(request, resp on se);return;Strin g logo nList = logo nStri ngs.split("");Strin g in cludeList = in cludeStri ngs.split(&qu
21、ot;");Object user = httpreq.getSessi on( ).getAttribute("useri nfo");if (user = nu II) if (!this.isCo nta in s(httpreq.getRequestURI(),in cludeList) cha in. doFilter(request, resp on se); return;if (this.isCo ntai ns(httpreq.getRequestURI(),logo nList) cha in. doFilter(request, resp o
22、n se); return;wrapper.se ndRedirect(redirectPath); else cha in. doFilter(request, resp on se);public void destroy() this.c onfig = n ull;public void in it(FilterC onfig filterC on fig) throws ServletExceptio n this.c onfig = filterC on fig;4.配置Servlet 過濾器在 web.xml 中:<filter><filter- name>
23、;Sessi onF ilter</filter- name<filter-class >n et.pms.web.filter.Sessi onF ilter</filter-class> <in it-param><param-n ame>log on Stri ngs</param-n ame> <param-value>logi n.jsp</param-value></in it-param><in it-param><param-n ame> in clud
24、eStri ngs</param-n ame> <param-value>.jsp;.html</param-value></in it-param><in it-param><param-n ame>redirectPath</param-n ame> <param-value>/logi n.jsp</param-value></in it-param><in it-param><param-n ame>disabletestfilter</
25、param-n ame> <param-value>N</param-value></in it-param></filter><filter-mapp ing><filter- name>Sessi onF ilter</filter- name<url-patter n> /*</url-patter n></filter-mappi ng>4、請設計一種機制進行網(wǎng)站訪問者統(tǒng)計package com.wjl;import java.io .IO Exception;imp
26、ort java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;實 驗 過 程、結 果 及 分 析public class Count extends HttpServletpublic void doGe
27、t(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException/得到當前web應用程序的上下文ServletContext context=this.getServletContext();/取岀當前保存的屬性/如果此頁面是第一次被訪問,那些count為空,我們幫他初始化為1 /如果不是第一次被訪問,那么就加1Integer count=(lnteger)context.getAttribute("count");if(count=null)coun
28、t=new Integer(1);elsecount=new Integer(Value()+1);/設置編碼,不然中文會變成亂碼response.setContentType("text/html;charset=GB2312");/得到輸岀流對象PrintWriter out=response.getWriter();out.println("vhtml><head>vtitle>");out.println(”頁面訪問統(tǒng)計");out.println("v/title>v/head
29、>vbody>");out.println(”當前頁面被訪問了 ");out.println("vfont color=red size=20>"+count+"v/font>次");/設置屬性,將count保存到當前的上下文中/context.setAttribute("count",count);session.setAttribute("count",count);session.setAttribute("ip",getRemortlP(req
30、uest);out.close();這種方式是用上下文進行記錄的,缺點是每次刷新都會增加一,下面看防止刷新的。每個客戶端 只記錄一次。package com.wjl;import java.io .IO Exception;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRes
31、ponse;import javax.servlet.http.HttpSession;public class Count extends HttpServletpublic void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException/*/得到當前web應用程序的上下文ServletContext context=this.getServletContext();/取岀當前保存的屬性/如果此頁面是第一次被訪問,那些count為空,我們幫他初始化為
32、1/如果不是第一次被訪問,那么就加1Integer count=(Integer)context.getAttribute("count");if(count=null)count=new Integer(1);elsecount=new lnteger(Value()+1);*/上面的方式是放到了 context中,我可以放到 session中HttpSession session=request.getSession();Integer count = (lnteger)session.getAttribute("count");i
33、f(count=null)count = 1;elseif(session.getAttribute("ip")!=null&& !session.getAttribute("ip").equals(getRemortlP(request)count = new Integer(Value()+1;/設置編碼,不然中文會變成亂碼response.setContentType("text/html;charset=GB2312");/得到輸岀流對象PrintWriter out=response.get
34、Writer();out.println("vhtml><head>vtitle>");out.println(”頁面訪問統(tǒng)計");out.println("</title>v/head><body>");out.println(”當前頁面被訪問了 ");out.println("<font color=red size=20>"+count+"</font>次");/設置屬性,將count保存到當前的上下文中/con
35、text.setAttribute("count",count);session.setAttribute("count",count);session.setAttribute("ip",getRemortIP(request);out.close();/*獲得客戶端ip* param request* return*/public String getRemortlP(HttpServletRequest request) if (request.getHeader("x-forwarded-for") = n
36、ull) return request.getRemoteAddr();return request.getHeader("x-forwarded-for");實驗報告(二)院系:信息學院課程名稱:信息系統(tǒng)設計與開發(fā)(上)日期:班級信 A1022姓名專業(yè)信息管理與信息系統(tǒng)學號29實驗室701實 驗 名 稱Struts框架的結構成績評定教師簽名實 驗 目 的1、掌握struts 框架的基本jar包2、掌握struts應用的基本流程3、掌握 web.xml 和 struts.xml 及 action 類的與法4 、掌握MVC莫式的系統(tǒng)設計思路實 驗 內(nèi) 容Struts應用的寫法
37、一、創(chuàng)建一個struts技術的用戶登入系統(tǒng),當用戶輸入用戶名是張三、密碼是 12345,就進入歡迎頁面。否則繼續(xù)輸入1、strtus 應用需要的那些jar包? ( 10分)3、用戶登入界面的設計(20分)實 驗 過 程、結 果 及 分 析Logi n.jsp</ h2>method ="post"<s:formaction="Logi nActi on"n amespace="/logi n"><s:textfieldn ame = "nameL label ="登錄名稱"s
38、ize ="15"/><s:passwordn ame = "pwd"label ="登錄密碼"size ="15"/><s:submitvalue ="登錄”/>vbody style ="backgro un d-image: url('images/bg-0414.gif')">vcen ter ><br ><h2 >用戶登錄</ s:form ></ center ><
39、;/ body >3、web.xml 配置 20 分)<?xml versio n="1.0" en codi ng="UTF-8"?> vweb-app versi on="2.5"xmln s=""xml ns:xsi二"" xsi:schemaLocati on=""><welcome-><welcome-</welcome-file>v/welcome->vfilter>vfilter- name>
40、;struts2</filter- name> vfilter-class>org.apache.struts2.dispatcher. ng.filter.StrutsPrepareA ndExecuteFilter</filter-class></filter>vfilter-mapp ing><filter- name>struts2</filter- name> <url-pattern>/*</url-pattern> v/filter-mapp in g></web-app&
41、gt;5、登錄action的業(yè)務類設計(30分)package com;import java.util.Map;import com.ope nsymph on y.xwork2.Actio nSupport;import com.ope nsymph ony .xwork2.Acti onCon text; SuppressWar nin gs("serial")public class Log inAction exte nds Action Supportprivate String name;private String pwd;public String get
42、Name() return n ame;public void setName(Stri ng n ame) 實 驗 過 程、結 果 及 分 析this. name = n ame;public Stri ng getPwd() return pwd;public void setPwd(Stri ng pwd) this.pwd = pwd;SuppressWar nin gs(" un checked") public String checkLogi n()System.out.pri ntln("* name="+name);/ 獲得把登錄名稱放
43、入把登錄名稱放入ActionCon textac=Acti onCon text.getC on text();Acti onCon textSuppressWar nin gs(" unu sed")Map app=ac.getApplicati on();ac.getSessi on( ).put("logi n", this .n ame);/session 中ac.getApplicati on( ).put("logi n", this .n ame); / applicati on 中return SUCCESS;實驗報告
44、(三)院系:信息學院課程名稱:信息系統(tǒng)設計與開發(fā)(上)日期:班級姓名專業(yè)信息管理與信息系統(tǒng)學號29實驗室701實驗名稱OGNL成績評定教師簽名實驗目的1掌握OGN的應用場景2、掌握ognl訪冋屬性、訪冋方法、訪冋數(shù)組、訪冋集合等方法實驗內(nèi)容常用的標簽的使用OGNL表達式的使用實 驗 過 程、結 果 及 分 析已知OgnlAction類的結構如下:public class OgnlAction exte nds Acti on Support private Cat cat;private MapvString, Dog> dogMap = newHashMapvString, Dog&g
45、t;();private Set<Dog> dogs = new HashSet<Dog>();private String password;private User user;private String user name;private List<User> users = new ArrayList<User>();public Ogn lActio n() users.add( new User(1);users.add( new User(2);users.add( new User(3);dogs.add(new Dog(&quo
46、t;dog1");dogs.add( new Dog("dog2");dogs.add( new Dog("dog3");實 驗 過 程、結 果 及 分 析dogMap.put("dog100", new Dog("dog100");dogMap.put("dog101", new Dog("dog101");dogMap.put("dog102", new Dog("dog102");dog類定義如下:public clas
47、s Dog private String name;public Dog() public Dog(Stri ng n ame) super();this. name = n ame;public Stri ng getName() return n ame;public void setName(Stri ng n ame) this. name = n ame;Overridepublic String toString() retur n "dog: " + n ame;該OgnIAction的配置如下:<action name="ognl"
48、 class="com.bjsxt.struts2.ognl.OgnlAction"><result>/og nl.jsp</result></act ion>現(xiàn)在請設計ognl.jsp將OgnlAction類中的所有對象全部顯示出來實 驗 過 程、結 果 及 分 析實驗報告(四)院系:信息學院課程名稱:信息系統(tǒng)設計與開發(fā)(上)日期:班級姓名專業(yè)信息管理與信息系統(tǒng)學號29實驗室701實驗名稱攔截器成績評定教師簽名實驗目的掌握攔截器的用法實驗內(nèi)容Strusts攔截器的定義與使用;自定義攔截器;攔截器執(zhí)行過程;攔截結果監(jiān)聽器實 驗 過
49、程、結 果 及 分 析1、請設計一個攔截器用來計算action類的響應時間package tmq.acti on;importcom.ope nsymph on y.xwork2.Actio nSupport;public class TimerI nterceptorActi onexte ndsActi on SupportpublicStr ing execute()try /模擬系統(tǒng)運行時消耗的時間Thread. sleep (1000); catch (Exception e)e.pr in tStackTrace(); returnthis . SUCCESS配置文件中的配置如下&
50、lt;!-耗時攔截器配置->< actio nn ame = "timeri nterceptor"class ="tmq.actio n.Timerl nterceptorActio n"><resultname = "success" >/success.jsp</ result >vin terceptor-refn ame ="timer"/></ action >實 驗 過 程、結 果 及 分 析2、方法攔截器的使用,已知存在一個public c
51、lass MethodActi on exte nds Action Support public String m1() throws Exception return SUCCESS;public String m2() throws Excepti on return SUCCESS;public String m3() throws Excepti on return SUCCESS;public String m4() throws Excepti on return SUCCESS;請疋義一個方法攔截器用來攔截m1 m2方法配置文件配置如下:<!-方法過濾攔截器配置->
52、vin terceptorn ame ="method In terceptor"class ="tmq.i nterceptor.Methodl nterceptor"/><!-方法過濾配置Action ,默認執(zhí)行方法execute-vacti onn ame ="method"class ="tmq.actio n. MethodActio n">vresultname="success" >/login.jsp</ result >vresultname
53、="login">/login.jsp</ result ><!-使用方法過濾攔截器->vin terceptor-refn ame = "method In terceptor"><!- 指疋execute 方法不被攔截-> vparam name = "includeMethods">m1v/ param >vparamname = "includeMethods">m2v/ param >v/ interceptor-ref>v!-
54、引用系統(tǒng)默認攔截器->vinterceptor-ref28 / 56 name = "defaultStack"/>v/ action >實驗報告(五)院系:信息學院課程名稱:信息系統(tǒng)設計與開發(fā)(上)日期:班級姓名專業(yè)信息管理與信息系統(tǒng)學號29實驗室701實 驗 名 稱成績評定實例開發(fā)教師簽名實驗 目熟悉并掌握java web框架設計的實驗 內(nèi)用戶注冊系統(tǒng)容登錄模塊:In dex.jsp<%page language ="java"import ="java.util.*"pageEncoding="
55、UTF-8" %><%aglibprefix ="s" uri ="/struts-tags"%>實 驗 過 程、<%String path = request.getContextPath();String basePath =request.getScheme()+":/"+request.getServerName()+":" +request.getServerPort()+path+%>"/"結 果 及 分 析<! DOCTYPE HTML
56、 PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html ><head ><meta http-equiv= "Content-Type"content ="text/html; charset=utf-8"/><title > Skiyo后臺管理工作平臺 by Jessica</ title><link rel ="stylesheet"type ="text/css"href
57、="css/style.css"/><scripttype ="text/javascript"src ="js/js.js"></ script ></ head ><body ><div id ="top" > </ div ><imgsrc="images/dl.gif"width="57"onclick="form submit。" > </div>
58、; -><div id ="center_submit"><div class ="button" ><imgsrc="images/dl.gif"width="57"height="20"onclick ="form_submit()" ></ div><div class ="button" ><imgsrc="images/cz.gif"width= &quo
59、t;57"height="20"onclick ="form reset() " > </div ></ div >height="20"<form id ="login" name="login" action ="Login.action"method ="post" ><div id="center"><divid = "center_.left&qu
60、ot;></ div ><divid = "center_middle"><!-<s:textfield name="name" label="登錄名稱 ” size="15" id="user" /><input type="text"name="user" id="user" /><s:password name="pwd" label="登錄密碼
61、"size="15" id="user"/>密碼:<label><inputtype="password" name="pwd" id="pwd" /></label><s:submit value=" 登錄"/>><div class ="user" ><s:textfield</ div ><s:password</ div >name="username"<div class ="user"namepassword"key ="username">label ="登錄密碼"size ="15" id ="user
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度大型運動會安防系統(tǒng)合同
- 2024年度大數(shù)據(jù)分析服務合同標的明細
- 2024年專用:租賃合同保證金條款匯編
- 2024年度居民住宅鋁合金門窗安裝工程合同
- 2024年廢舊物資回收協(xié)議
- 2024工程合規(guī)審查中的黑白合同問題探討
- 04版智能硬件研發(fā)與制造分包合同
- 2024年國際貨運代理及倉儲物流合作合同
- 2024年度5G基站建設與運營合作協(xié)議
- 2024年一年級數(shù)學老師家長會
- 模擬法庭案例腳本:校園欺凌侵權案 社會法治
- 05 03 第五章第三節(jié) 投身崇德向善的道德實踐
- 安徽省合肥市第四十五中學2022-2023學年九年級上學期數(shù)學期中考試卷
- 樁基礎工程施工組織方案
- 供水運營管理實施方案(4篇)
- 水土保持工程質(zhì)量評定表
- 水電站基本構造原理與類型ppt版(共67)
- 秦朝統(tǒng)一PPT課件教學
- 《民族團結》- 完整版課件
- 醫(yī)院 交班站位圖
- 第七章 森林植被恢復與重建理論
評論
0/150
提交評論