Java Web 開(kāi)發(fā)從入門(mén)到實(shí)踐課件 第7章 - 過(guò)濾器和監(jiān)聽(tīng)器_第1頁(yè)
Java Web 開(kāi)發(fā)從入門(mén)到實(shí)踐課件 第7章 - 過(guò)濾器和監(jiān)聽(tīng)器_第2頁(yè)
Java Web 開(kāi)發(fā)從入門(mén)到實(shí)踐課件 第7章 - 過(guò)濾器和監(jiān)聽(tīng)器_第3頁(yè)
Java Web 開(kāi)發(fā)從入門(mén)到實(shí)踐課件 第7章 - 過(guò)濾器和監(jiān)聽(tīng)器_第4頁(yè)
Java Web 開(kāi)發(fā)從入門(mén)到實(shí)踐課件 第7章 - 過(guò)濾器和監(jiān)聽(tīng)器_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)踐JavaWebDevelopmentFromIntroductiontoPractice過(guò)濾器和監(jiān)聽(tīng)器Chap07提綱過(guò)濾器和監(jiān)聽(tīng)器過(guò)濾器和監(jiān)聽(tīng)器分別用于處理用戶輸入的事件和動(dòng)態(tài)監(jiān)控應(yīng)用程序的狀態(tài)變化。7.1過(guò)濾器7.2監(jiān)聽(tīng)器7.3本章小結(jié)7.1過(guò)濾器7.1.1過(guò)濾器的概念7.1.2配置過(guò)濾器7.1.3過(guò)濾器的生命周期7.1.4過(guò)濾器的鏈及執(zhí)行順序7.1.5過(guò)濾器的應(yīng)用7.1.1過(guò)濾器的概念過(guò)濾器(Filter)的作用就是把瀏覽器對(duì)資源的請(qǐng)求攔截下來(lái)。圖

7-1

過(guò)濾器的工作原理7.1.1過(guò)濾器的概念過(guò)濾器需要實(shí)現(xiàn)jakarta.servlet.Filter接口publicvoidinit(FilterConfigfilterConfig)throwsServletException{}

publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{}

publicvoiddestroy(){}init()方法該方法用來(lái)初始化過(guò)濾器對(duì)象doFilter()方法該方法是主要實(shí)現(xiàn)過(guò)濾的方法destroy()方法該方法的作用是釋放過(guò)濾器中使用的資源,是在關(guān)閉Web服務(wù)器時(shí)執(zhí)行

7.1.2配置過(guò)濾器配置過(guò)濾器有兩種方法一是在web.xml中配置二是通過(guò)注解配置<filter>

<filter-name>myFilter</filter-name>

<filter-class>com.swxy.filter.MyFilter</filter-class></filter>

<filter-mapping>

<filter-name>myFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>@WebFilter(filterName="myFilter",

//指定Filter的name屬性,等價(jià)于<filter-name>標(biāo)簽 urlPatterns="/*",

//指定Filter的URL匹配模式

initParams={

//設(shè)置過(guò)濾器的初始參數(shù)

@WebInitParam(name="username",value="Charles")})

publicclassMyFilterimplementsFilter{//省略}7.1.3過(guò)濾器的生命周期過(guò)濾器的生命周期是:實(shí)例化→初始化→過(guò)濾→銷毀。圖

7-2

過(guò)濾器和Servlet的生命周期7.1.3過(guò)濾器的生命周期案例:過(guò)濾器、Servlet的生命周期示例MyFilter.java@WebFilter("/*")

publicclassMyFilterimplementsFilter{

publicMyFilter(){

System.out.println("Filter構(gòu)造方法");

}

@Override

publicvoidinit(FilterConfigfilterConfig)throwsServletException{

System.out.println("Filter初始化");

}

7.1.3過(guò)濾器的生命周期@Override

publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{

System.out.println("過(guò)濾前");

filterChain.doFilter(servletRequest,servletResponse);//放行

System.out.println("過(guò)濾后");

}

@Override

publicvoiddestroy(){

System.out.println("Filter銷毀方法");

}

}7.1.3過(guò)濾器的生命周期@WebServlet("/myServlet") publicclassMyServletextendsHttpServlet{ publicMyServlet(){System.out.println("Servlet構(gòu)造方法");} @Override publicvoidinit()throwsServletException{ System.out.println("Servlet初始化方法"); } @Override protectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{ System.out.println("Servlet的service()方法"); } @Override publicvoiddestroy(){ System.out.println("Servlet銷毀方法"); } }MyServlet.java7.1.3過(guò)濾器的生命周期查看測(cè)試結(jié)果Filter構(gòu)造方法Filter初始化Servlet構(gòu)造方法Servlet初始化方法過(guò)濾前Servlet的service()方法過(guò)濾后Servlet銷毀方法Filter銷毀方法7.1.4過(guò)濾器的鏈及執(zhí)行順序過(guò)濾器鏈?zhǔn)侵冈谝粋€(gè)Web應(yīng)用,可以配置多個(gè)過(guò)濾器,這些過(guò)濾器稱為過(guò)濾器鏈。圖

7-3

過(guò)濾器鏈過(guò)濾器鏈7.1.4過(guò)濾器的鏈及執(zhí)行順序執(zhí)行過(guò)濾器1的放行前邏輯代碼執(zhí)行過(guò)濾器1的放行代碼執(zhí)行過(guò)濾器2的放行前邏輯代碼執(zhí)行過(guò)濾器2的放行代碼執(zhí)行過(guò)濾器3的放行前邏輯代碼執(zhí)行過(guò)濾器3的放行代碼訪問(wèn)Web資源執(zhí)行過(guò)濾器3的放行后邏輯代碼執(zhí)行過(guò)濾器2的放行后邏輯代碼執(zhí)行過(guò)濾器1的放行后邏輯代碼7.1.4過(guò)濾器的鏈及執(zhí)行順序過(guò)濾器的執(zhí)行順序過(guò)濾器的攔截路徑相同時(shí):首先按照<filter-mapping>標(biāo)記在web.xml中出現(xiàn)的先后順序執(zhí)行過(guò)濾器然后接照過(guò)濾器類名的字典順序執(zhí)行注解的過(guò)濾器。7.1.5過(guò)濾器的應(yīng)用JavaWeb過(guò)濾器是一種用于攔截、處理和修改請(qǐng)求和響應(yīng)的組件,用于實(shí)現(xiàn)一些通用的功能字符編碼轉(zhuǎn)換過(guò)濾器1、EncodingFilter.java@WebFilter(urlPatterns="/*", initParams={@WebInitParam(name="encoding",value="UTF-8")})

publicclassEncodingFilterimplementsFilter{

privateStringencoding="";

@Override

publicvoidinit(FilterConfigfilterConfig)throwsServletException{

this.encoding=filterConfig.getInitParameter("encoding");

}

7.1.5過(guò)濾器的應(yīng)用@Override

publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{

HttpServletRequestrequest=(HttpServletRequest)servletRequest;

//轉(zhuǎn)子接口

HttpServletResponseresponse=(HttpServletResponse)servletResponse;//轉(zhuǎn)子接口

Stringmethod=request.getMethod();//獲取請(qǐng)求方式(如GET、POST等)

if("POST".equals(method)){//請(qǐng)求方式為POST時(shí),中文亂碼的處理

request.setCharacterEncoding(encoding);

}else{//請(qǐng)求方式為GET時(shí),中文亂碼的處理

Enumeration<String>parameterNames=request.getParameterNames();

while(parameterNames.hasMoreElements()){

Stringelement=parameterNames.nextElement();

Stringvalue=request.getParameter(element);

if(value!=null&&!"".equals(value)){

value=newString(value.trim().getBytes("ISO-8859-1"),encoding);

}

}

}filterChain.doFilter(servletRequest,servletResponse);//過(guò)濾器放行

}

7.1.5過(guò)濾器的應(yīng)用 @Override

publicvoiddestroy(){

Filter.super.destroy();

}

}2、EncodingFilter.java@WebServlet("/encodingServlet")

publicclassEncodingServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

Stringusername=req.getParameter("username");System.out.println(username);

}

}7.1.5過(guò)濾器的應(yīng)用臟字過(guò)濾器1、準(zhǔn)備屬性文件perties。在項(xiàng)目src下新建文件夾“resource”,在該文件夾下創(chuàng)建文件perties狗屁=***廢物=***該文件經(jīng)過(guò)native2ascii編碼后才能使用,命令語(yǔ)法如下:native2ascii-encodingutf-8源文件轉(zhuǎn)換后文件7.1.5過(guò)濾器的應(yīng)用2、定義響應(yīng)器包裝類publicclassReplaceWrapperextendsHttpServletResponseWrapper{

privateCharArrayWritercharWriter=newCharArrayWriter();

publicReplaceWrapper(HttpServletResponseresponse){

super(response);//必須調(diào)用父類構(gòu)造方法

}

publicPrintWritergetWriter()throwsIOException{

returnnewPrintWriter(charWriter);//字符數(shù)組緩存輸出內(nèi)容

}

publicCharArrayWritergetCharWriter(){

returncharWriter;

}

}7.1.5過(guò)濾器的應(yīng)用3、定義用來(lái)替換臟字的過(guò)濾器@WebFilter(urlPatterns="/*",initParams={@WebInitParam(name="path",value="resource/perties")})publicclassReplaceFilterimplementsFilter{ privatePropertiesproperties=newProperties(); @Override publicvoidinit(FilterConfigfilterConfig)throwsServletException{

Stringpath=filterConfig.getInitParameter("path");//獲取初始化參數(shù)(文件名) try{ //加載資源文件 properties.load(ReplaceFilter.class.getClassLoader().getResourceAsStream(path)); }catch(Exceptione){ e.printStackTrace(); }

}

7.1.5過(guò)濾器的應(yīng)用 @Override publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{

HttpServletResponseresponse=(HttpServletResponse)servletResponse; ReplaceWrapperresp=newReplaceWrapper(response);//實(shí)例化響應(yīng)器包裝類 filterChain.doFilter(servletRequest,resp); Stringstr=resp.getCharWriter().toString();//緩存輸出字符 for(Objecto:properties.keySet()){//循環(huán)文件(如:perties)中的key Stringkey=(String)o;

str=str.replace(key,properties.getProperty(key));//替換非法字符 } PrintWriterout=response.getWriter();//使用原來(lái)的HttpServletResponse輸出字符 out.write(str); }}7.1.5過(guò)濾器的應(yīng)用@WebServlet("/replaceFilterServlet")publicclassReplaceFilterServletextendsHttpServlet{ @Override protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{ resp.setContentType("text/html;charset=UTF-8"); PrintWriterout=resp.getWriter(); out.println("<!DOCTYPEhtml>"); out.println("<HTML>"); out.println("<HEAD><TITLE>臟字過(guò)濾器的使用</TITLE></HEAD>"); out.println("helloeveryone!大家好<br/>狗屁<br/>廢物"); out.println("</HTML>"); out.flush(); out.close(); }}4、編寫(xiě)一個(gè)Servlet用來(lái)測(cè)試臟字過(guò)濾器7.1.5過(guò)濾器的應(yīng)用5、測(cè)試結(jié)果圖

7-5

測(cè)試臟字過(guò)濾器7.2監(jiān)聽(tīng)器7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器7.2.2監(jiān)聽(tīng)對(duì)象屬性的監(jiān)聽(tīng)器7.2.3監(jiān)聽(tīng)Session對(duì)象狀態(tài)變化的監(jiān)聽(tīng)器7.2監(jiān)聽(tīng)器表

7-1

監(jiān)聽(tīng)器接口和方法類別監(jiān)聽(tīng)接口方法生命周期監(jiān)聽(tīng)器ServletContextListenervoidcontextInitialized(ServletContextEventsce)voidcontextDestroyed(ServletContextEventsce)HttpSessionListenervoidsessionCreated(HttpSessionEventse)voidsessionDestroyed(HttpSessionEventse)ServletRequestListenervoidrequestDestroyed(ServletRequestEventsre)voidrequestInitialized(ServletRequestEventsre)對(duì)象屬性監(jiān)聽(tīng)器ServletContextAttributeListenervoidattributeAdded(ServletContextAttributeEventscae)voidattributeRemoved(ServletContextAttributeEventscae)voidattributeReplaced(ServletContextAttributeEventscae)HttpSessionAttributeListenervoidattributeAdded(HttpSessionBindingEventse)voidattributeRemoved(HttpSessionBindingEventse)voidattributeReplaced(HttpSessionBindingEventse)ServletRequestAttributeListenervoidattributeAdded(ServletRequestAttributeEventsrae)voidattributeRemoved(ServletRequestAttributeEventsrae)voidattributeReplaced(ServletRequestAttributeEventsrae)Session對(duì)象狀態(tài)變化監(jiān)聽(tīng)器HttpSessionBindingListenervoidvalueBound(HttpSessionBindingEventevent)voidvalueUnbound(HttpSessionBindingEventevent)HttpSessionActivationListenervoidsessionWillPassivate(HttpSessionEventse)voidsessionDidActivate(HttpSessionEventse)在Web應(yīng)用中,監(jiān)聽(tīng)器是指應(yīng)用通過(guò)監(jiān)聽(tīng)事件來(lái)監(jiān)聽(tīng)請(qǐng)求中的行為而創(chuàng)建的一組類。7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器有三個(gè):ServletContextListener、HttpSessionListener和ServletRequestListener。ServletContextListener用于監(jiān)聽(tīng)?wèi)?yīng)用啟動(dòng)和停止事件,提供了兩個(gè)抽象方法publicvoidcontextInitialized(ServletContextEventsce){}//已完成加載Web應(yīng)用和初始化參數(shù)publicvoidcontextDestroyed(ServletContextEventsce){}//Web應(yīng)用即將關(guān)閉7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器案例:ServletContextListener的使用1、MyServletContextListener類,實(shí)現(xiàn)ServletContextListener接口publicclassMyServletContextListenerimplementsServletContextListener{

@Override

publicvoidcontextInitialized(ServletContextEventsce){

ServletContextservletContext=sce.getServletContext();//獲取ServletContext對(duì)象

Stringusername=servletContext.getInitParameter("username");//獲取初始化值

System.out.println("參數(shù)username:"+username);

}

@Override

publicvoidcontextDestroyed(ServletContextEventsce){

System.out.println("釋放資源");

}

}7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器2、在web.xml中配置監(jiān)聽(tīng)器<context-param> <param-name>username</param-name> <param-value>Charles</param-value></context-param><listener> <listener-class>com.swxy.listener.MyServletContextListener</listener-class></listener>圖

7-6

啟動(dòng)服務(wù)器獲取初始化參數(shù)3、啟動(dòng)服務(wù)器Tomcat7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器HttpSessionListenerHttpSessionListener接口提供了二個(gè)抽象方法voidsessionCreated(HttpSessionEventse){}//創(chuàng)新了新的會(huì)話

voidsessionDestroyed(HttpSessionEventse){}//銷毀了一個(gè)會(huì)話7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器案例:利用HttpSessionListener統(tǒng)計(jì)在線人數(shù)1、創(chuàng)建類MyHttpSessionListener實(shí)現(xiàn)HttpSessionListener接口packagecom.swxy.listener;

//導(dǎo)入包省略

@WebListener

publicclassMyHttpSessionListenerimplementsHttpSessionListener{

intonline=1;//記錄在線人數(shù)

@Override

publicvoidsessionCreated(HttpSessionEventse){

ServletContextservletContext=se.getSession().getServletContext();//獲取Application對(duì)象

Objectcount=servletContext.getAttribute("count");

if(count!=null){

online=Integer.parseInt(count.toString());

online++;//創(chuàng)建Session時(shí),在線人數(shù)+1

}

servletContext.setAttribute("count",online);//在線人數(shù)存儲(chǔ)到Application作用域中

7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器}@Override

publicvoidsessionDestroyed(HttpSessionEventse){

ServletContextservletContext=se.getSession().getServletContext();

Objectcount=servletContext.getAttribute("count");

if(count!=null){

online=Integer.parseInt(count.toString());

online--;//銷毀Session對(duì)象時(shí),在線人數(shù)-1

}

servletContext.setAttribute("count",online);

}

}7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器2、創(chuàng)建類OnLineServlet繼承HttpServlet@WebServlet("/OnLineServlet")publicclassOnLineServletextendsHttpServlet{ @Override protectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{ resp.setContentType("text/html;charset=UTF-8");//設(shè)置響應(yīng)類型及編碼 HttpSessionsession=req.getSession();//創(chuàng)建Session對(duì)象 Stringlogout=req.getParameter("logout"); if("true".equals(logout)){ session.invalidate(); }

7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器2、創(chuàng)建類OnLineServlet繼承HttpServlet Integercount=(Integer)session.getServletContext().getAttribute("count");//獲取在線人數(shù) PrintWriterout=resp.getWriter(); out.write("<h2>在線人數(shù):"+count+"</h2>"); out.write("<h3><ahref='OnLineServlet?logout=true'>注銷</a></h3>"); }}3、測(cè)試結(jié)果圖

7-7

運(yùn)行結(jié)果圖

7-8

點(diǎn)擊注銷后的運(yùn)行結(jié)果7.2.1監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器ServletRequestListenerServletRequestListener接口提供了二個(gè)抽象方法publicvoidrequestInitialized(ServletRequestEventsre){}//創(chuàng)建了新的Request對(duì)象publicvoidrequestDestroyed(ServletRequestEventsre){}//已經(jīng)銷毀了Request對(duì)象在Web應(yīng)用中,有以下兩種方式配置ServletRequestListener1、在web.xml文件中配置<listener>

<listener-class>com.swxy.listener.MyServletRequestListener</listener-class></listener>2、注解方式@WebListenerpublicclassMyServletRequestListenerimplementsServletRequestListener{}7.2.2監(jiān)聽(tīng)對(duì)象屬性的監(jiān)聽(tīng)器監(jiān)聽(tīng)對(duì)象生命周期的監(jiān)聽(tīng)器有三個(gè):ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener。ServletContextAttributeListenerServletContextAttributeListener接口提供了三個(gè)抽象方法voidattributeAdded(ServletContextAttributeEventscae){}//屬性被添加到Application中時(shí)調(diào)用voidattributeRemoved(ServletContextAttributeEventscae){}//屬性從Application中移除時(shí)調(diào)

voidattributeReplaced(ServletContextAttributeEventscae){}//屬性被修改時(shí)調(diào)用在Web應(yīng)用中,有以下兩種方式配置ServletContextAttributeListener。1、在web.xml文件中配置<listener>

<listener-class>com.swxy.listener.MyServletContextAttributeListener</listener-class></listener>7.2.2監(jiān)聽(tīng)對(duì)象屬性的監(jiān)聽(tīng)器2、注解方式@WebListenerpublicclassMyServletContextAttributeListenerimplementsServletContextAttributeListener{}7.2.2監(jiān)聽(tīng)對(duì)象屬性的監(jiān)聽(tīng)器HttpSessionAttributeListenervoidattributeAdded(HttpSessionBindingEventse){}//屬性被添加到Session中時(shí)調(diào)用voidattributeRemoved(HttpSessionBindingEventse){}//屬性從Session中移除時(shí)調(diào)用voidattributeReplaced(HttpSessionBindingEventse){}//屬性被修改時(shí)調(diào)用HttpSessionAttributeListener接口提供了三個(gè)抽象方法ServletRequestAttributeListenervoidattributeAdded(ServletRequestAttributeEventsrae){}//屬性被添加到Request中時(shí)調(diào)用voidattributeRemoved(ServletRequestAttributeEventsrae){}//屬性從Request中移除時(shí)調(diào)用voidattributeReplaced(ServletRequestAttributeEventsrae){}//屬性被修改時(shí)調(diào)用ServletRequestAttributeListener接口可以用來(lái)監(jiān)聽(tīng)Request對(duì)象加入屬性、移除屬性和替換屬性時(shí)響應(yīng)的動(dòng)作事件,該接口提供了三個(gè)抽象方法在Web應(yīng)用中,配置方式同樣有二種方式:在web.xml中配置和注解,與ServletContextAttributeListener配置類似。7.2.3監(jiān)聽(tīng)Session對(duì)象狀態(tài)變化的監(jiān)聽(tīng)器監(jiān)聽(tīng)Session對(duì)象狀態(tài)變化的監(jiān)聽(tīng)器有二個(gè):HttpSessionBindingListener和HttpSessionActivationListenerHttpSessionBindingListenerHttpSessionBindingListener是“HttpSession對(duì)象綁定監(jiān)聽(tīng)器”,用來(lái)監(jiān)聽(tīng)HttpSession中,設(shè)置成HttpSession屬性或從HttpSession中移除時(shí)得到Session的通知。voidvalueBound(HttpSessionBindingEventevent){}//已經(jīng)綁定一個(gè)Session范圍的對(duì)象或者變量voidvalueUnbound(HttpSessionBindingEventevent){}//已經(jīng)解綁了Session范圍的對(duì)象或者變量HttpSessionActivationListenerHttpSessionActivationListener是“HttpSession對(duì)象轉(zhuǎn)移監(jiān)聽(tīng)器”,HttpSessionActivationListener的實(shí)現(xiàn)類也必須實(shí)現(xiàn)Serializable接口voidsessionWillPassivate(HttpSessionEventse){}//session中的對(duì)象持久化到存儲(chǔ)設(shè)備時(shí)調(diào)用voidsessionDidActivate(HttpSessionEventse){}//對(duì)象被重新加載時(shí)執(zhí)行該方法7.2.3監(jiān)聽(tīng)Session對(duì)象狀態(tài)變化的監(jiān)聽(tīng)器應(yīng)用實(shí)例創(chuàng)建類MyHttpSessionBindingActivationListenerpublicclassMyHttpSessionBindingActivationListenerimplementsHttpSessionBindingListener,

HttpSessionActivationListener,Serializable{

@Override

publicvoidsessionWillPassivate(Ht

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論