华师大WEB讲解第10章课件_第1页
华师大WEB讲解第10章课件_第2页
华师大WEB讲解第10章课件_第3页
华师大WEB讲解第10章课件_第4页
华师大WEB讲解第10章课件_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华师大WEB讲解第10章华师大WEB讲解第10章华师大WEB讲解第10章JSP与JavaBean什么是Javabean编写Javabean和使用Javabean获取和修改bean的属性bean的辅助类JSP与bean结合的简单例子JSP与JavaBean什么是Javabean编写Javabean和使用Javabean获取和修改bean的属性bean的辅助类JSP与bean结合的简单例子什么是JavaBeanJavaBean是一个可重复使用的软件组件,是遵循一定标准、用Java语言编写的一个类,该类的一个实例称为一个JavaBean,简称bean.由于Javabean是基于Java语言的,因此Javabean不依赖平台,且具有以下特点:可以实现代码的重复使用易编写、易维护、易使用可以在任何安装了Java运行环境的平台上使用,而不需要重新编译什么是JavaBeanJSP页面可以将数据的处理过程指派给一个或几个bean来完成,只需在JSP页面中调用该bean即可。这样可以有效地分离静态工作部分和动态工作部分。编写Javabean和使用Javabean编写JavabeaJavabean分为可视组件和非可视组件编写Javabean就是编写一个Java的类,类的方法命名上遵守以下规则:1.如果类的成员变量的名字是xxx,那么为了获取或更改成员变量的值,即获取或更改属性,类中必须提供两个方法:getXxx() 用来获取属性xxxsetXxx()用来修改属性xxx即方法的名字用get或set为前缀,后缀是将成员变量名字的首字母大写的字符序列。编写Javabean和使用Javabean编写Javabean类的方法命名规则:2.对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用“is”代替上面的“get”和“set”。3.类中声明的方法的访问属性都必须是public的。4.类中声明的构造方法必须是public、无参数的。例子注意:如果使用Tomcat5.x服务器,创建bean的类必须带有包名使用package语句给类起一个包名包名可以是一个合法的标识符,也可以是若干个标识符加“.”分隔而成编写Javabean和使用Javabean以下是用来创建bean的Java源文件Circle.javapackagetom.jiafeiimportjava.io.*;publicclassCircle{intradius;publicCircle(){radius=1;}publicintgetRadius(){returnradius;}publicvoidsetRadius(intnewRadius){radius=newRadius;}publicdoublecircleArea(){returnMath.PI*radius*radius;}publicdoublecirclLength(){return2.0*Math.PI*radius;}}编写Javabean和使用Javabean编写Javabean将上述Java文件保存为Circle.java,并编译通过,得到字节码文件Circle.class编写Javabean和使用Javabean保存bean的字节码为了使JSP页面使用bean,Tomcat服务器必须使用相应的字节码创建一个对象,即创建一个bean为了让Tomcat服务器能找到字节码,字节码必须保存在特定的目录中在当前Web服务目录下建立如下目录结构:Web服务目录\WEB-INF\classes根据类的包名,在目录classes下建立相应的子目录.比如:Web服务目录\WEB-INF\classes\tom\jiafei编写Javabean和使用Javabean创建与使用bean在使用bean的JSP页面中,首先必须有相应的import指令,如:<%pageimport=“tom.jiafei.*”%>然后在JSP页面中再使用JSP动作标记useBean来加载使用bean编写Javabean和使用Javabean创建与使用bean<Jsp:useBean>的作用是定义生成和使用Bean的环境。即如果使用<Jsp:useBean>,就可以定义Bean的名称、类型、以及使用期限等内容。useBean标记的格式:<jsp:useBeanid="给bean起的名字"class="创建bean的类"scope="bean有效范围"></jsp:useBean>或<jsp:useBeanid="给bean起的名字"class="创建bean的类"scope="bean有效范围"/>需要注意的是:其中“创建beans的类”要带有包名编写Javabean和使用Javabean创建与使用bean创建bean的过程当服务器上某个含有useBean动作标记的JSP页面被加载执行时,JSP引擎将首先根据ID名字,在一个同步块中,查找JSP引擎内置pageContent对象中是否含有名字和作用域scope的对象如果这个对象存在,JSP引擎就分配一个这样的对象给客户,客户就获得了一个作用域是scope,名字是ID的bean如果在pageContent中没有查到指定作用域、名字是ID的对象,就根据class指定的字节码创建一个名字是ID的bean,添加到pageContent内置对象中,并指定该bean的作用域是scope,同时JSP引擎分配给客户一个作用域是scope、名字是ID的bean编写Javabean和使用Javabean创建与使用bean下面介绍useBean标签中scope取值的不同情况scope取值pageJSP引擎分配给每个JSP页面的bean是互不相同的,尽管每个JSP页面的bean的功能相同,但它们占有不同的内存空间该bean的有效范围是当前页面,当客户离开这个页面时,JSP引擎取消分配的bean,即释放bean所占有的内存空间不同用户的scope取值是page的bean也是互不相同的,也就是说,当两个客户同时访问一个JSP页面时,一个用户对自己bean属性的改变,不会影响到另一个用户编写Javabean和使用Javabean创建与使用bean下面介绍useBean标签中scope取值的不同情况scope取值session此时bean的有效范围是客户的会话期间,也就是说,如果客户在某个web服务目录多个页面中相互连接,每个页面都含有一个useBean标签,而且各个页面的useBean标签中的值相同、scope的值都是session,那么,该客户在这些页面得到的bean是相同的一个(占有相同的内存空间)如果客户在某个页面更改了这个bean的属性,其他页面的这个bean的属性也将发生同样的变化当客户的会话消失,JSP引擎取消分配的bean,即释放bean所占有的空间不同用户的scope取值是session的bean是互不相同的(占有不同的内存空间),也就是说,当两个客户同时访问一个JSP页面时,一个用户对自己bean的属性的改变,不会影响到另一个用户编写Javabean和使用Javabean创建与使用bean下面介绍useBean标签中scope取值的不同情况scope取值request此时bean的有效范围是request期间。客户在网站的访问期间可能请求过多个页面,如果这些页面含有scope取值是request的useBean标签,那么在每个页面分配的bean也是互不相同的不同用户的scope取值是request的bean是互不相同的,也就是说,当两个客户同时请求一个JSP页面时,一个用户对自己bean的属性的改变,不会影响到另一个用户编写Javabean和使用Javabean创建与使用bean下面介绍useBean标签中scope取值的不同情况scope取值applicationJSP引擎为Web服务目录下所有的JSP页面分配一个共享的bean,不同用户的scope取值是application的bean也都是相同的一个,也就是说,当多个客户同时访问一个JSP页面时,任何一个用户对自己的bean的属性的改变,都会影响到其他的用户不同用户的scope取值是request的bean是互不相同的,也就是说,当两个客户同时请求一个JSP页面时,一个用户对自己bean属性的改变,不会影响到另一个用户编写Javabean和使用Javabean例1useBean.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="tom.jiafei.Circle"%><HTML><BODYbgcolor=cyan><Fontsize=3><jsp:useBeanid="circle"class="tom.jiafei.Circle"scope="page"/><%--通过上述JSP标记,客户获得了一个作用域是page,名字是circle的bean--%><%circle.setRadius(888);%><P>圆的半径是:<%=circle.getRadius()%><P>圆的周长是:<%=circle.circlLength()%><P>圆的面积是:<%=circle.circleArea()%></BODY></HTML>编写Javabean和使用Javabean例2在例2中,将bean的scope的值设为session,创建bean的名字是girl,创建该bean的类文件仍然是上述的Circle.class。在bean1.jsp页面中,girl的半径radius的值是1,然后连接到bean2.jsp页面,显示半径radius的值,然后将girl的半径radiu的值更改为400,当再刷新bean1.jsp时会发现radius的值已经变成了400bean1.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="tom.jiafei.Circle"%><HTML><BODYbgcolor=cyan><Fontsize=3><jsp:useBeanid="girl"class="tom.jiafei.Circle"scope="session"/><P>圆的半径是:<%=girl.getRadius()%><Ahref="bean2.jsp"><BR>bean2.jsp</A></BODY></HTML>bean2.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="tom.jiafei.Circle"%><HTML><BODYbgcolor=cyan><Fontsize=3><jsp:useBeanid="girl"class="tom.jiafei.Circle"scope="session"/><P>圆的半径是:<%=girl.getRadius()%><%girl.setRadius(400);%><P>修改后的圆的半径是:<%=girl.getRadius()%><Ahref="bean1.jsp"><BR>bean1.jsp</A></BODY></HTML>编写Javabean和使用Javabean例3例3将bean的scope的值设为application.当第一个客户访问这个页面时,显示bean的radius的值,然后把radius的值修改为1000.当其他客户访问这个页面时,看到的radius的值都是1000编写Javabean和使用Javabeanappbean.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="tom.jiafei.*"%><HTML><BODY><jsp:useBeanid="girl"class="tom.jiafei.Circle"scope="application"></jsp:useBean><P>圆的初始半径是:<%=girl.getRadius()%><%girl.setRadius(1000);%><P>修改后的圆的半径是:<%=girl.getRadius()%></BODY></HTML>获取和修改bean的属性当使用useBean动作标记获得一个bean后,在Java程序片中这个bean就可以调用方法产生行为,比如修改属性,使用类中的方法等获取或修改beans的属性还可以使用动作标记getProperty、setProperty当JSP使用getProperty、setProperty标记,可以减少Java程序片,使得JSP页面的编写者只需知道bean有哪些属性即可,不必知道getXXX和setXXX方法的细节获取和修改bean的属性getProperty动作标记使用该标记可以获得bean的属性值,并将这个值用串的形式发送给客户的浏览器,使用getProperty动作标记之前,必须使用uesBean动作标记获得相应的bean格式如下:<jsp:getPropertyname="bean的名字"property="bean的属性"/>或<jsp:getPropertyname="bean的名字"property="bean的属性"/></jsp:getProperty>获取和修改bean的属性getProperty动作标记将Circle类文件进行改进,增加circleArea和circleLength两个属性NewCircle.javapackagetom.jiafei;importjava.io.*;publicclassNewCircle{doubleradius=1,circleArea,circleLength;publicdoublegetRadius(){returnradius;}publicvoidsetRadius(doublenewRadius){radius=newRadius;}publicdoublegetCircleArea(){circleArea=Math.PI*radius*radius;returncircleArea;}publicdoublegetCircleLength(){circleLength=2.0*Math.PI*radius;returncircleLength;}}获取和修改bean的属性getProperty动作标记例4中,JSP页面使用useBean标记用NewCircle类创建一个名字是apple的bean,并使用getProperty获取apple的各个属性的值获取和修改bean的属性beanGetProperty.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="tom.jiafei.NewCircle"%><HTML><BODYbgcolor=cyan><Fontsize=3><jsp:useBeanid="apple"class="tom.jiafei.NewCircle"scope="request"/><%apple.setRadius(100);%>圆的半径是:<jsp:getPropertyname="apple"property="radius"/><BR>圆的面积是:<jsp:getPropertyname="apple"property="circleArea"/><BR>圆的周长是:<jsp:getPropertyname="apple"property="circleLength"/></BODY></HTML>获取和修改bean的属性setProperty动作标记使用setProperty动作标记可以设置bean的属性值。使用这个标记之前,必须使用useBean标记得到一个可操作的bean获取和修改bean的属性setProperty动作标记setProperty动作标记可以通过两种方式设置bean属性的值1.将bean属性的值设置为一个表达式的值或者字符串设置bean的属性为一个表达式的值的格式如下:<jsp:setPropertyname="bean的名字"property="bean的属性"value="<%=expression%>"/>bean属性的值设置为一个字符串的语法格式为:<jsp:setPropertyname="bean的名字"property="bean的属性"value=字符串/>如果将表达式的值设置为bean属性的值,表达式值的类型必须和bean的属性的类型一致;如果将字符串设置为bean的属性的值,这个字符串会自动被转化为bean的属性的类型获取和修改bean的属性setProperty动作标记例5中,编写一个描述学生的bean,在一个JSP页面中获得一个这样的bean,其有效范围是page,在JSP页面中使用动作标记设置、获取该bean的属性值publicclassStudent{Stringname=null;longnumber;doubleheight,weight;publicStringgetName(){returnname;}publicvoidsetName(StringnewName){name=newName;}publiclonggetNumber(){returnnumber;}publicvoidsetNumber(longnewNumber){number=newNumber;}publicdoublegetHeight(){returnheight;}publicvoidsetHeight(doublenewHeight){height=newHeight;}publicdoublegetWeight(){returnweight;}publicvoidsetWeight(doublenewWeight){weight=newWeight;}}student.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="tom.jiafei.Student"%><HTML><BODYbgcolor=cyan><Fontsize=3><jsp:useBeanid="zhang"class="tom.jiafei.Student"scope="page"/><jsp:setPropertyname="zhang"property="name"value="张三"/>名字是:<jsp:getPropertyname="zhang"property="name"/><jsp:setPropertyname="zhang"property="number"value="2008001"/><BR>学号是:<jsp:getPropertyname="zhang"property="number"/><jsp:setPropertyname="zhang"property="height"value="<%=1.78%>"/><BR>身高是:<jsp:getPropertyname="zhang"property="height"/>米<jsp:setPropertyname="zhang"property="weight"value="67.65"/><BR>体重是:<jsp:getPropertyname="zhang"property="weight"/>公斤</FONT></BODY></HTML>获取和修改bean的属性setProperty动作标记setProperty动作标记可以通过两种方式设置bean属性的值2.通过HTTP表单的参数的值来设置bean的相应属性的值这种方法要求beans属性的名字必须在表单中有相应参数名字相对应,JSP引擎会自动将参数的字符串值转换为bean相对应的属性的值通过HTTP表单的参数的值来设置bean的相应属性的值:<jsp:setPropertyname="bean的名字"property="*"/>该标记不用再具体指定beans属性的值将对应表单中哪个参数指定的值,系统会自动根据名字进行对应的匹配如果需要明确bean的某个属性设置为表单中的对应的参数值,需如下使用setProperty标记:<jsp:setPropertyname="bean的名字"property="属性名"param="参数名"/>获取和修改bean的属性setProperty动作标记例6创建bean的Java源文件Goods.java,该类描述商品的基本信息。goods.jsp页面通过表单来指定bean的属性值,使用了setProperty标记。Goods.javapackagetom.jiafei;publicclassGoods{Stringname,goodsNumber;doubleprice;publicStringgetName(){returnname;}publicvoidsetName(StringnewName){name=newName;}publicStringgetGoodsNumber(){returngoodsNumber;}publicvoidsetGoodsNumber(Strings){goodsNumber=s;}publicdoublegetPrice(){returnprice;}publicvoidsetPrice(doublenewPrice){price=newPrice;}}goods.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="tom.jiafei.*"%><jsp:useBeanid="goods"class="tom.jiafei.Goods"scope="page"/><HTML><BODYbgcolor=yellow><Fontsize=3><FORMaction=""Method="post">

输入商品的名称:<Inputtype=textname="name"><BR>输入商品的代号:<Inputtype=textname="goodsNumber"><BR>输入商品的价格:<Inputtype=textname="price"><Inputtype=submitvalue="提交"></FORM><P>提交表单才能设置商品的信息<jsp:setPropertyname="goods"property="*"/><BR>商品的名称:<jsp:getPropertyname="goods"property="name"/><BR>商品的代号:<jsp:getPropertyname="goods"property="goodsNumber"/><BR>商品的价格:<jsp:getPropertyname="goods"property="price"/></FONT></BODY></HTML>Bean的辅助类有时在写一个bean的时候,可能还需要自己编写的其他类,那么只要将这些类和创建bean的类写在一个Java源中即可,但必须按将源文件编译后产生的全部字节码文件复制到相应的目录中Bean的辅助类例7中,使用一个bean列出的JSP页面所在目录中特定扩展名的文件。在写bean的类文件ListFile时,需要一个实现FilenameFilter接口的辅助类FileName,该类可以帮助我们的bean列出指定扩展名的文件Bean的辅助类ListFile.javapackagetom.jiafei;importjava.io.*;classFileNameimplementsFilenameFilter{Stringstr=null;FileName(Strings){str="."+s;}publicbooleanaccept(Filedir,Stringname){returnname.endsWith(str);}}ListFile.java(续)publicclassListFile{StringextendsName=null;StringBufferallFileName;publicvoidsetExtendsName(Strings){extendsName=s;}publicStringgetExtendsName(){returnextendsName;}publicStringBuffergetFileName(){Filedir=newFile("d:/2000");FileNamehelp=newFileName(extendsName);Stringfile_name[]=dir.list(help);for(inti=0;i<file_name.length;i++){allFileName.append(file_name[i]+"");}returnallFileName;}}file.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="tom.jiafei.*"%><jsp:useBeanid="file"class="tom.jiafei.ListFile"scope="page"/><HTML><BODYbgcolor=cyan><Fontsize=2><FORMaction=""Method="post">

输入文件的扩展名:<Inputtype=textname="extendsName"><Inputtype=submitvalue="提交"></FORM><jsp:setPropertyname="file"property="extendsName"param="extendsName"/><P>扩展名是<jsp:getPropertyname="file"property="extendsName"/>的文件有:

<BR><jsp:getPropertyname="file"property="allFileName"/></BODY></HTML>JSP与bean结合的简单例子三角形bean编写一个JSP页面,该页面提供一个表单,用户可以通过表单将三角形三边的长度提交给该页面。用户提交表单后,JSP页面将计算三角形面积的任务交给一个bean去完成Triangle.javapackagered.star;publicclassTriangle{doublesideA=-1,sideB=-1,sideC=-1,area=-1;booleantriangle;publicvoidsetSideA(doublea){sideA=a;}publicdoublegetSideA(){returnsideA;}publicvoidsetSideB(doubleb){sideB=b;}publicdoublegetSideB(){returnsideB;}publicvoidsetSideC(doublec){sideC=c;}publicdoublegetSideC(){returnsideC;}

Triangle.java(续)publicdoublegetArea(){doublep=(sideA+sideB+sideC)/2.0;if(triangle)area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));returnarea;}publicbooleanisTriangle(){if(sideA<sideB+sideC&&sideB<sideA+sideC&&sideC<sideA+sideB)triangle=true;elsetriangle=false;returntriangle;}}triangle.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="red.star.Triangle"%><jsp:useBeanid="tri"class="red.star.Triangle"scope="page"/><HTML><BODYbgcolor=yellow><Fontsize=3><FORMaction=""Method="post">

输入三角形三边:边A:<Inputtype=textname="sideA"value=0size=5>

边B:<Inputtype=textname="sideB"value=0size=5>

边C:<Inputtype=textname="sideC"value=0size=5><Inputtype=submitvalue="提交"></FORM><jsp:setPropertyname="tri"property="*"/>

三角形的三边是:边A:<jsp:getPropertyname="tri"property="sideA"/>,

边B:<jsp:getPropertyname="tri"property="sideB"/>,

边C:<jsp:getPropertyname="tri"property="sideC"/>.<BR>这三个边能构成一个三角形吗?<jsp:getPropertyname="tri"property="triangle"/><BR>面积是:<jsp:getPropertyname="tri"property="area"/></FONT></BODY></HTML>JSP与bean结合的简单例子四则运算bean编写一个JSP页面,该页面提供一个表单,用户可以通过表单输入两个数和四则运算符号提交给该页面。用户提交表单后,JSP页面将计算任务交给一个bean去完成JSP与bean结合的简单例子ComputerBean.javapackagered.star;publicclassComputerBean{doublenumberOne,numberTwo,result;Stringoperator="+";publicvoidsetNumberOne(doublen){numberOne=n;}publicdoublegetNumberOne(){returnnumberOne;}publicvoidsetNumberTwo(doublen){numberTwo=n;}publicdoublegetNumberTwo(){returnnumberTwo;}

JSP与bean结合的简单例子ComputerBean.java(续)publicvoidsetOperator(Strings){operator=s.trim();;}publicStringgetOperator(){returnoperator;}publicdoublegetResult(){if(operator.equals("+")){result=numberOne+numberTwo;}elseif(operator.equals("-")){result=numberOne-numberTwo;}elseif(operator.equals("*")){result=numberOne*numberTwo;}elseif(operator.equals("/")){result=numberOne/numberTwo;}returnresult;}}computer.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="red.star.*"%><HTML><BODYbgcolor=yellow><Fontsize=2><jsp:useBeanid="computer"class="red.star.ComputerBean"scope="session"/><jsp:setPropertyname="computer"property="*"/><FORMaction=""method=postname=form><Inputtype=textname="numberOne"value=<jsp:getPropertyname="computer"property="numberOne"/>size=6><Selectname="operator"><Optionvalue="+">+<Optionvalue="-">-<Optionvalue="*">*<Optionvalue="/">/</Select><Inputtype=textname="numberTwo"value=<jsp:getPropertyname="computer"property="numberTwo"/>size=6>=<jsp:getPropertyname="computer"property="result"/><BR><INPUTTYPE="submit"value="提交你的选择"name="submit"></FORM></BODY></HTML>JSP与bean结合的简单例子计数器所谓计数器就是记录某个web服务目录(通常所说的网站)被访问的次数,但需要限制客户通过不断刷新页面或再次访问该web服务目录的其他的页面来增加计数器的计数JSP与bean结合的简单例子CounterCount.javapackagered.star;importjava.io.*;publicclassComputerCount{intnumber=0;booleanisCome=false;Filefile=newFile("count.dat");publicintgetNumber(){if(isCome==false)countPeople();returnnumber;}privatevoidcountPeople(){if(!file.exists()){number++;try{file.createNewFile();FileOutputStreamout=newFileOutputStream(file);DataOutputStreamdataOut=newDataOutputStream(out);dataOut.writeInt(number);out.close();dataOut.close();}catch(IOExceptionee){}}else{try{FileInputStreamin=newFileInputStream(file);DataInputStreamdataIn=newDataInputStream(in);number=dataIn.readInt();number++;in.close();dataIn.close();FileOutputStreamout=newFileOutputStream(file);DataOutputStreamdataOut=newDataOutputStream(out);dataOut.writeInt(number);out.close();dataOut.close();}catch(IOExceptionee){}}isCome=true;}JSP与bean结合的简单例子comeOne.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="red.star.*"%><jsp:useBeanid="count"class="red.star.ComputerCount"scope="session"/><HTML><BODYbgcolor=yellow><Fontsize=3><P>Welcome欢迎您访问本站,这是本网站的comeOne.jsp页面<BR>您是第

<jsp:getPropertyname="count"property="number"/>

个访问本网站的客户。<Ahref="comeTwo.jsp">欢迎去comeTwo.jsp参观</A></BODY></HTML>JSP与bean结合的简单例子comeTwo.jsp<%@pagecontentType="text/html;Charset=GB2312"%><%@pageimport="red.star.*"%><jsp:useBeanid="count"class="red.star.ComputerCount"scope="session"/><HTML><BODYbgcolor=cyan><Fontsize=3><P>Welcome欢迎您访问本站,这是本网站的comeTwo.jsp页面<BR>您是第

<jsp:getPropertyname="count"property="number"/>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论