jsp笔试题全集.doc_第1页
jsp笔试题全集.doc_第2页
jsp笔试题全集.doc_第3页
jsp笔试题全集.doc_第4页
jsp笔试题全集.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1. HTML简介 HTML(HyperText Mark-up Language)即超文本标记语言1.什么是xml?可扩展标记语言JSP(JavaServer Pages2.JSP中如何设置COOKIE?3.Request对象的主要方法setAttribute(String name,Object):设置名字为name的request的参数值getAttribute(String name):返回由name指定的属性值getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组getCharacterEncoding():返回请求中的字符编码方式getContentLength():返回请求的Body的长度getHeader(String name):获得HTTP协议定义的文件头信息getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例getInputStream():返回请求的输入流,用于获得请求中的数据getMethod():获得客户端向服务器端传送数据的方法getParameter(String name):获得客户端传送给服务器端的有name指定的参数值getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例getParameterValues(String name):获得有name指定的参数的所有值getProtocol():获取客户端向服务器端传送数据所依据的协议名称getQueryString():获得查询字符串getRequestURI():获取发出请求字符串的客户端地址getRemoteAddr():获取客户端的IP地址getRemoteHost():获取客户端的名字getSession(Boolean create):返回和请求相关SessiongetServerName():获取服务器的名字getServletPath():获取客户端所请求的脚本文件的路径getServerPort():获取服务器的端口号removeAttribute(String name):删除请求中的一个属性4.Servlet的生命周期?Servlet的生命 周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和destroy()三个方法。生命周期的具体说明如下:Servlet容器完成加载Servlet类和实例化一个Servlet对象init()方法完成初始化工作,该方法由Servlet容器调用完成service()方法处理客户端请求,并返回响应结果destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源public ServletConfig getServletConfig()public String getServletInfo()public void init(ServletConfig config)public void service(ServletRequest request,ServletResponse response)public void destroy()5.在JSP中如何执行浏览重定向?response.sendRedirect(”/index.html”);也能物理地改变HTTP HEADER属性,如下: 如何中SERVLET或JSP下载一个文件(如:binarytextexecutable)?现提供两个解决方案:A:使用HTTP,B:在Servlet中,通过设置ContentType和使用java.io包的Stream等类可作到.例如:response.setContentType(”application/x-msword”);JSP如何获得客户浏览器的信息?使用request.getHeader(String)即可6.在JSP中如何写文本文件?使用PrintWriter对象,7.pageEncoding和charset有什么区别pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码8.如何避免JSP页面自动生成session对象?为什么要这么做?9.如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中?把如下脚本加入到JSP文件的开始即可:10如何现实servlet的单线程模式11.在JSP中如何删除一个COOKIE?12.在JSP中如何写文本文件?使用PrintWriter对象,如:13.在servlets和JSP之间能共享session对象吗?HttpSession session = request.getSession(true);session.putValue(”variable”,”value”);14.在一个JSP的请求处理中如何停止JSP的执行15.有一个jsp页面,假设名字叫list.jsp,部署在tomcat下,客户端通过浏览器访问这个页面.当客户在浏览器中输入http:/www.list.jsp ,进行访问这个jsp页面,这个过程中浏览器是怎样和tomcat进行通信的?1.首先要知道jsp在Tomcat的加载机制怎么回事,一个jsp页面,当web服务器启动后,web容器都会将jsp转化成Servlet再转化成纯文本的html/htm文件,当浏览器访问,会直接从服务器找到 jsp映射的纯文本文件15.如果这个jsp页面改动了,为什么刷新浏览器就可以重新得到改变后的页面? 这个东西是可以设置的,Tomcat也好,Weblogic也好 默认就是将最新的jsp转成纯文本文件.只要一刷新就是最新的了.但如果为了保证服务器的性能,通常会设置成不刷新. 这样只有重新启动服务器才可以将这个jsp转成纯文本文件.16.有一张表,只有两个字段,比如id,name这个表中如果存有100条数据,1万条数据,100万条数据,怎么样进行数据库访问才能速度更快,比如分页?这要看数据的多少,如果数据少直接用Statement对象就可以了,如果数据很大并且频繁操作的话就应该使用PreparedStatement对象,因为如果查询被访问过一次,后台的数据库就会记录下来,下次访问就会很快!17.有两个页面a.jsp和b.jsp,要从a.jsp传值到b.jsp有几种方法?分别是什么? a:最常用的方法是用form中的text,,然后在b.jsp页面中这样获取 String username=request.getParameter(username); b:直接在Url地址栏里面输入第一个页面的地址,在后加问号,然后把要传的参数及值写在后面,如有多个用&隔开,然后在下一页面用 request.getParameter(参数名)来获取,例如: 在b.jsp中可用这样获取:String username=request.getParameter(username);String username=request.getParameter(password); c:在form中放hidden,如:,获取方法同上 说明:传值的方法有很多种,以上是最常用最简单的几种方式,当然,如果传的值有中文的话,需另做处理 18.有三个页面,a.jsp,b.jsp和c.jsp,流程是:a.jsp-b.jsp-c.jsp,其中a.jsp中提交的数据要在c.jsp中访问,用最简单的方法 怎么做?注意不能放在session里 用隐藏表单域,即在b.jsp页面中用N个hidden把上一页面提交过来的信息保存下来,然后和当前一起提交,再到c.jsp里面获取 19. 事务特性与acid?原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性20. page/request/session/application理解?page范围具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中。在这个范围内的对象,只能在创建对象的页面中访问。可以调用pageContext这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象(pageContext对象还提供了访问其他范围对象的getAttribute方法),pageContext对象本身也属于page范围。当Servlet类的_jspService()方法执行完毕,属于page范围的对象的引用将被丢弃。page范围内的对象,在客户端每次请求JSP页面时创建,在页面向客户端发送回响应或请求被转发(forward)到其他的资源后被删除。request范围具有request范围的对象被绑定到javax.servlet.ServletRequest对象中,可以调用request这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。在调用forward()方法转向的页面或者调用include()方法包含的页面中,都可以访问这个范围内的对象。要注意的是,因为请求对象对于每一个客户请求都是不同的,所以对于每一个新的请求,都要重新创建和删除这个范围内的对象session范围具有session范围的对象被绑定到javax.servlet.http.HttpSession对象中,可以调用session这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。JSP容器为每一次会话,创建一个HttpSession对象,在会话期间,可以访问session范围内的对象。application范围具有application范围的对象被绑定到javax.servlet.ServletContext中,可以调用application这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象21. 了解Threadlocal?ThreadLocal是什么呢?它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。 从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收(除非存在对这些副本的其他引用)。 通过ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM 为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发访问问题提供了一种隔离机制。 ThreadLocal是如何做到为每一个线程维护变量的副本的呢?其实实现的思路很简单,在ThreadLocal类中有一个Map,用于存储每一个线程的变量的副本。 概括起来说,对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。22.事务的边界!要么全成功,要么全失败。事务的作用是确保一个或多个操作是以最小工作单位的形式执行的。如果事务中的其中一个操作失败,则所有操作都将回退,以使应用程序恢复执行操作前的状态。视将业务流程逻辑设计为无状态还是有状态(请参阅生成无状态和有状态业务流程),特定业务流程上下文中相应会有一个或多个事务23.悲观锁与乐观锁?为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做先从悲观锁开始说。在SqlServer等其余很多数据库中,数据的锁定通常采用页级锁的方式,也就是说对一张表内的数据是一种串行化的更新插入机制,在任何时间同一张表只会插1条数据,别的想插入的数据要等到这一条数据插完以后才能依次插入。带来的后果就是性能的降低,在多用户并发访问的时候,当对一张表进行频繁操作时,会发现响应效率很低,数据库经常处于一种假死状态。而Oracle用的是行级锁,只是对想锁定的数据才进行锁定,其余的数据不相干,所以在对Oracle表中并发插数据的时候,基本上不会有任何影响。select * from test where id = 10 for update 通过这条检索语句锁定以后,再开另外一个sql*plus窗口进行操作,再把上面这条sql语句执行一便,你会发现sqlplus好像死在那里了,好像检索不到数据的样子,但是也不返回任何结果,就属于卡在那里的感觉。这个时候是什么原因呢,就是一开始的第一个Session中的select for update语句把数据锁定住了。由于这里锁定的机制是wait的状态(只要不表示nowait那就是wait),所以第二个Session(也就是卡住的那个sql*plus)中当前这个检索就处于等待状态。当第一个session最后commit或者rollback之后,第二个session中的检索结果就是自动跳出来,并且也把数据锁定住。第二种乐观锁的做法就是采用版本戳,这个在Hibernate中得到了使用。采用版本戳的话,首先需要在你有乐观锁的数据库table上建立一个新的column,比如为number型,当你数据每更新一次的时候,版本数就会往上增加1。比如同样有2个session同样对某条数据进行操作。两者都取到当前的数据的版本号为1,当第一个session进行数据更新后,在提交的时候查看到当前数据的版本还为1,和自己一开始取到的版本相同。就正式提交,然后把版本号增加1,这个时候当前数据的版本为2。当第二个session也更新了数据提交的时候,发现数据库中版本为2,和一开始这个session取到的版本号不一致,就知道别人更新过此条数据,这个时候再进行业务处理,比如整个Transaction都Rollback等等操作。在用版本戳的时候,可以在应用程序侧使用版本戳的验证,也可以在数据库侧采用Trigger(触发器)来进行验证。不过数据库的Trigger的性能开销还是比较的大,所以能在应用侧进行验证的话还是推荐不用Trigger。24.了解servletcontextlistener (httpsessionlistener)(访问静态页面不会创那建session)?应用ServletContextListener接口,可以实现在web应用程序初始化时,自动运行一些初始化程序。ServletContextListener接口定义的方法方法名称调用 Void contextInitialized(ServletContextEvent sce) 在Web应用程序的“初始阶段”,Servlet容器会调用ServletContextListener对象的contextInitialized()方法 Void contextDestroyed(ServletContextEvent sce) 在Web应用程序的“结束阶段”,Servlet容器会调用ServletContextListener对象的contextDestoryed()方法 应用此接口时,要在web.xml文件内定义“监听器类”的名称,此时要注意:在Servlet规范中并未限制一个Web应用程序只能对应一个“监听器类”,但是在web.xml内定义元素时得注意下列两点:元素必须出现在任何Context起始参数(由元素所定义)之后。元素必须出现在任何Servlet实体(由元素所定义)之前。HttpSessionListener事件监听器,则会调用HttpSessionListener事件监听器的sessionCreated方法。相反,当这个浏览器访问结束超时的时候,J2EE应用服务器会销毁相应的HttpSession对象,触发HttpSession销毁事件,同时调用所注册HttpSessionListener事件监听器的sessionDestroyed方法。可见,对应于一个用户访问的开始和结束,相应的有sessionCreated方法和sessionDestroyed方法执行。这样,我们只需要在HttpSessionListener实现类的sessionCreated方法中让计数器加1,在sessionDestroyed方法中让计数器减1,就轻松实现了网站在线人数的统计功能。25.用servlet生成验证码?生成随机的字符串并加入到图片中发到客户端?26.url.uri.urn的区别?URI(Uniform Resoure Identifier:统一资源标识符),URL(Uniform Resoure Location:统一资源定位器),URN(Uniform Resource Name统一资源名)27.策略模式?策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。优点:1、 提供了一种替代继承的方法,而且既保持了继承的优点(代码重用)还比继承更灵活(算法独立,可以任意扩展)。2、 避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。3、 遵守大部分GRASP原则和常用设计原则,高内聚、低偶合。缺点:1、 因为每个具体策略类都会产生一个新类,所以会增加系统需要维护的类的数量。28.了解filter对权限的控制session的控制?用Filter防止用户访问一些未被授权的资源,比如一个用户未登录就不允许访问网站的某些页面,并将页面重定向到需要用户登录的页面29.taglib标签?1.标签的配置和使用a)配置i.将涉及到的jar或class拷贝到web项目中ii.将tld(标签库描述文件)文件拷贝到WEB-INF或WEB-INF下的任意目录中b)使用i.采用taglib指令引入标签库ii.通过前缀访问taglib相应的属性30连接池的简单原理,将数据库连接对象储存到集合中,例如:vector对象中,一但数据库建立连接后,不同的数据库访问请求就可以共享这些连接,这样通过复用这些连接,可以避免每次创建数据库连接带来的系统开销31.web services, soap() , axis bugzilla+cvs ?web servicesWeb Services 主要利用 HTTP 和 SOAP 协议使商业数据在 Web 上传输,SOAP通过 HTTP 调用商业对象执行远程功能调用,Web 用户能够使用 SOAP 和 HTTP通过 Web 调用的方法来调用远程对象.基础的 Web Services 平台是 XML + HTTP。HTTP 协议是最常用的因特网协议。XML 提供了一种可用于不同的平台和编程语言之间的语言。Web services 平台的元素:SOAP (简易对象访问协议) 简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP 包括三个部分: SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。 SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。 SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。UDDI (通用描述、发现及整合) Universal Description Discovery and Integration即统一描述、发现和集成协议WSDL (Web services 描述语言) web服务=wsdl+soap用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码。 32.显示树形结构?在数据库中建一个树表,设主键,父结点ID,是否为叶子结点,为几级目录等等Jsp方面 32、forward和redirect的区别答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。33、jsp有哪些内置对象?作用分别是什么?答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config servlet的构架部件 page JSP网页本身 exception 针对错误网页,未捕捉的例外 34、jsp有哪些动作?作用分别是什么?答:JSP共有以下6种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记35、JSP中动态INCLUDE与静态INCLUDE的区别? 答:动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 36、两种跳转方式分别是什么?有什么区别?答:有两种,分别为: 前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。37、JSP的内置对象及方法。答:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie,header,和session数据的有用的方法。response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息applicaton表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。page表示从该页面产生的一个servlet实例 Servlet方面 38、说一说Servlet的生命周期?答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。39、JAVA SERVLET API中forward() 与redirect()的区别?答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。40、Servlet的基本架构答:public class ServletName extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 41、什么情况下调用doGet()和doPost()?答:Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。42、如何现实servlet的单线程模式答:43、页面间对象传递的方法答:request,session,application,cookie等44、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?答:JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是类servlet。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。45、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?答:PublicStringtranslate(Stringstr)StringtempStr=;trytempStr=newString(str.getBytes(ISO-8859-1),GBK);tempStr=tempStr.trim();catch(Exceptione)System.err.println(e.getMessage();returntempStr;46、Servlet执行时一般实现哪几个方法?答:publicvoidinit(ServletConfigconfig)publicServletConfiggetServletConfig()publicStringgetServletInfo()publicvoidservice(ServletRequestrequest,ServletResponseresponse)publicvoiddestroy() 47、说出数据连接池的工作机制是什么?答:J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。Xml方面 48、你在项目中用到了xml技术的哪些方面?如何实现的?答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。49、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?答:a:两种形式dtdschema,b:本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且

温馨提示

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

评论

0/150

提交评论