第2章 JSF的基本用法_第1页
第2章 JSF的基本用法_第2页
第2章 JSF的基本用法_第3页
第2章 JSF的基本用法_第4页
第2章 JSF的基本用法_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

经典JavaEE课程段鹏松第2章JSF的基本用法了解什么是JSF掌握JSF的基本用法掌握JSF的配置文件掌握托管bean的创建及用法掌握JSF的导航模型了解JSF的标签用法掌握JSF的运行流程掌握JSF的消息用法课程目标目录MVC和JSF下载、安装JSF及使用入门解读JSF配置托管Bean和表达式语言导航模型使用UI标签创建视图页面JSF的运行流程和生命周期利用JSF的消息MVC概述MVC模型:Model-View-Controller,是一种模型、思想,和具体编程语言无关。Model1模型Model1非MVC模型,JSP作为控制器Model2模型Servlet作为前端控制器,Servlet中调用JavaBean来完成实际的业务逻辑处理。MVC的特点多个视图对应一个模型模型返回的数据与显示逻辑分离三层架构设计,降低了各层之间的耦合控制器的作用非常重要更符合软件工程的思想常见的MVC框架StrutsStruts1.XStruts2.XTapestrySpring内置的MVCJSF其他MVC框架JSF概述JSF规范本身就是JavaEE5的MVC规范,通常作为前端组件使用。提倡以页面组件的方式隐藏传统Web应用开发的细节,允许开发者以传统桌面编程的方式来开发Web应用。JSF的实现有两种方式Sun公司的JSFRI(ReferenceImplementantion)Apache的MyFacesJSF概述JSF既是JavaWeb用户界面标准,又是严格遵循模型-视图-控制器(MVC)设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使JSF应用程序更易于管理。所有与应用程序的用户交互均由一个前端“Facesservlet”(控制器)来处理。JSF的运行原理JSF的优势允许通过拖放组件的方式来快速开发JSP页面允许使用服务器端业务代码来响应客户端事件将页面上的UI组件的值绑定到服务器端的数据模型利用可重用和可扩展的UI组件来构造用户界面跨请求保存和恢复UI状态Sun推出JSF的部分目的:对抗ASP.NETStruts和JSF的区别Struts是基于请求-响应模型,只是提供了更简捷、有效、易用的封装。JSF采用面向对象的事件通讯机制,Web编程中请求-响应模型完全被隐藏起来了。目录MVC和JSF下载、安装JSF及使用入门解读JSF配置托管Bean和表达式语言导航模型使用UI标签创建视图页面JSF的运行流程和生命周期利用JSF的消息下载和安装JSFJSFRI和MyFaces从用法角度无太大区别,本课程以JSFRI为例来学习,本课程所用的JSF版本是JSF1.2_14。JSF的核心Jar包:jsf-api.jar和jsf-impl.jar,对于不同的Web服务器,安装方式不同。(具体参考教材P57)下载和安装JSFJSF需要JSTL标签库的支持NetNeans已经内置了JSF框架的支持在Web应用中安装JSF标签库的方式<%@tagliburi=“/jsf/html”prefix=“h”%><%@tagliburi=“/jsf/core”prefix=“f”%>JSF使用步骤编写前台页面即前台的jsp或jsf页面一般会使用较多的jsf标签开发托管bean类似于Struts中的action+POJO类需要有相应的配置文件定义导航规则定义逻辑视图和物理视图之间的对应关系通过配置文件完成JSF的技术任务1、Model部分:编写JavaBean或EJB和辅助类。2、View部分:用JSF组件的自定义标签编写JSP页面。3、Control部分:将JSF组件的自定义标签UI事件注册到JavaBean或EJB监听器中,如导航过程。4、部署描述部分:Web.xml、faces-config.xml和server-config.wsdd文件的编写。JSF的使用举例以一个用户登录为例来介绍JSF的使用流程。实例操作演示用户登录的JSF例子了解JSF框架的使用步骤<%@tagliburi="/jsf/core"prefix="f"%><%@tagliburi="/jsf/html"prefix="h"%><html><head> <title>第一个JSF程序</title></head><body><f:view><h:form><h3>请输入您的名称</h3>

名称:<h:inputTextvalue="#{}"/><p> <h:commandButtonvalue=“提交"action="login"/> </h:form></f:view></body></html>示例代码目录MVC和JSF下载、安装JSF及使用入门解读JSF配置托管Bean和表达式语言导航模型使用UI标签创建视图页面JSF的运行流程和生命周期利用JSF的消息配置核心控制器在配置web.xml文件中配置FacesServlet类<servlet><servlet-name>FacesServlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>FacesServlet</servlet-name><url-pattern>/faces/*</url-pattern></servlet-mapping>核心配置器的其他参数<!--配置JSF程序状态的保存位置,如果设置成server则保存在session中,如果保存在client中可以保证服务器重启应用状态也不会丢失--><context-param><param-name>javax.faces.STATE_SAVING_METHOD</param-name><!--程序状态保存在客户端--><param-value>client</param-value></context-param><!--指定JSF映射资源时的默认后缀,默认为.jsp--><context-param><param-name>javax.faces.DEFAULT_SUFFIX</param-name><param-value>.jsp</param-value></context-param><!--指定JSF所管理的生命周期实例的标识符--><context-param><param-name>javax.faces.LIFECYCLE_ID</param-name><param-value></param-value></context-param>核心配置器的其他参数

<!--指定JSF配置文件的保存位置--><context-param><param-name>javax.faces.CONFIG_FILES</param-name><param-value>

/WEB-INF/faces-config-beans.xml,/WEB-INF/faces-config-nav.xml

</param-value></context-param><!--指定是否需要验证自定义组件--><context-param><param-name>javax.faces.verifyObjects</param-name><param-value>true</param-value></context-param><!--指定是否需要验证XML文件--><context-param><param-name>javax.faces.validateXml</param-name><param-value>true</param-value></context-param>核心配置器的其他参数

<!--当设置在服务器端保存状态时,控制session保存的视图数量,-1表示没有限制--><context-param>

<param-name>javax.faces.NUMBER_OF_VIEWS_IN_SESSION</param-name><param-value>-1</param-value></context-param>NetBeans中使用JSF框架示意图JSF配置文件结构默认名称:faces-config.xml根元素:faces-config其他元素managed-beannavigation-ruleothersfaces-config.xml示例<faces-configversion="1.2"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-facesconfig_1_2.xsd"><!--配置托管Bean--> <managed-bean> <managed-bean-name>duanps</managed-bean-name> </managed-bean><!--定义导航规则与页面--> <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>JAVA</from-outcome> <to-view-id>/jsp/newJava.jsp</to-view-id> </navigation-case> </navigation-rule></faces-config>目录MVC和JSF下载、安装JSF及使用入门解读JSF配置托管Bean和表达式语言导航模型使用UI标签创建视图页面JSF的运行流程和生命周期利用JSF的消息托管Bean概述托管Bean是JSF应用中最重要的应用组件,因此开发JSF应用的重要任务就是开发托管Bean。一般来说,一个托管bean和一个应用页面对应。托管Bean定义了与页面中UI组件关联的属性和方法。托管Bean概述JSF使用Bean来达到逻辑层与表现层分离的目的,Bean的管理集中在配置文件中,只要修改配置文件,就可以修改Bean之间的相依关系。BackingBeans:在真正的业务逻辑Bean及UI组件之间搭起桥梁,在BackingBean中会呼叫业务逻辑Bean处理使用者的请求,或者是将业务处理结果放置其中,等待UI组件取出当中的值并显示结果给使用者。托管Bean的定义和普通的JavaBean定义几乎完全一致提供一个无参的构造器为每个属性定义gettter和setter方法托管Bean的属性可以绑定到如下形式之一:绑定到一个组件的值(value属性)绑定到一个组件实例(binding属性)绑定到一个转换器实例(<f:convertXxx…>)绑定到一个验证器实例(<f:validatorXxx…>)绑定到一个监听器实例(<f:xxxListener…>)托管Bean的配置托管Bean的基本定义:名称 <managed-bean-name>类 <managed-bean-class> 存活范围 <managed-bean-scope>可选设置属性的初始值<managed-property>示例

<managed-property> <property-name>user</property-name> <value>#{user}</value></managed-property>在Java代码中获取Bean第一种方式:

FacesContextcontext=FacesContext.getCurrentInstance(); ValueBindingbinding= context.getApplication().createValueBinding("#{userBean}"); UserBeanbean=(UserBean)binding.getValue(context);

第二种方式: FacesContextctx=FacesContext.getCurrentInstance(); VariableResolvervariableResolver=ctx.getApplication().getVariableResolver(); UserBeanbean=(UserBean)variableResolver.resolveVariable(ctx,“userBean");第三种方式: Applicationapplication=context.getApplication(); UserBeanbean=

(UserBean)application.evaluateValueExpressionGet(

context,"#{userBean}",UserBean.class);托管Bean的作用域application:一直存活session:会话过程request:请求阶段viewnone:需要时,临时<!--配置托管Bean--> <managed-bean> <managed-bean-name>duanps</managed-bean-name> <managed-bean-class>com.dps.MyJsfAction</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>JSF的表达式语言(EL)JSF表达式语言(EL):JSFExpressionLanguage搭配JSF标签来使用,是用来存取数据对象的一个简易语言。以#开始,将变量或运算式放置在{与}之间。#{userB}EL的变量名也可以程序执行过程中所声明的名称,或是JSFEL预定义的隐含对象。#{}或#{param['name']}如果变量是List类型或Map类型的话,则可以在[]中指定索引。#{someBean.someList[0]}#{someBean.someMap[]}JSF的表达式语言(EL)示

例说

明#{myBean.value}返回保存在关键字myBean

下的对象的value属性,或者如果myBean是一个Map,则返回存储在关键字value下的元素#{myBean['value']}同"#{myBean.value}“#{myArrayList[5]}返回保存在关键字myArrayList下的List的第5个元素#{myMap['foo']}从保存在关键字myMap下的Map中返回保存在关键字foo下的对象#{myMap[foo.bar]}从保存在myMap关键字下的Map中返回保存在等于表达式foo.bar的值的关键字下的对象#{myMap['foo'].value}从保存在关键字myMap下的Map中返回保存在关键字foo下的对象的value属性#{myMap['foo'].value[5]}从保存在关键字myMap下的Map返回关键字foo下的List或者数组的第5个元素#{myString}返回存储在myString关键字下的String对象#{myInteger}返回存储在myInteger关键字下的Integer对象#{user.role=='normal'}如果关键字user下的对象的role属性等于normal则返回true.否则返回falseJSF的表达式语言(EL)示

例说

明#{(user.balance-200)==0}如果关键字user下的对象的balance属性减去200等于0,则返回true。否则返回falseHello#{}!返回字符串"Hello",后跟关键字user下的对象的name属性。所以,如果用户的名称是Sean,则会返回"HelloSean!"Youare#{(user.balance>100)?'loaded':'notloaded'}如果关键字user下的对象的balance属性小于100,返回"Youareloaded",否则返回"Youarenotloaded"#{myBean.methodName}返回关键字myBean下名为methodName的对象的方法#{20+3}返回23JSF的表达式语言(EL)语

法替

代操

作[]

访问数组、List元素或者Map条目()

创建子表达式并控制求解顺序?:

条件表达式:ifCondition?trueValue:falseValue+

加-

减或者负号*

乘/div除%mod模(求余)==eq等于(对对象,使用equals()方法)!=ne不等于<

lt小于>

gt大于<=le小于或等于>=ge大于或等于&&and逻辑AND||or逻辑OR!not逻辑NOTempty

测试空值(null、空字符串、数组、Map或者没有值的Collection)JSF的表达式语言(EL)隐含变量说

明实

例applicationScope应用作用域变量的Map,以名称作为关键字#{applicationScope.myVariable}cookie一个当前请求的cookie值的Map,以cookie名称作为关键字#{cookie.myCookie}facesContext当前请求的FacesContext实例#{facesContext}header当前请求的HTTP首部值的Map,以header名称作为关键字。如果给定的header名称有多个值,仅返回第1个值#{header['User-Agent']}headerValues当前请求的HTTP首部值的Map,以header名称作为关键字。对每个关键字,返回一个String数组(以便所有的值都能访问)#{headerValues['Accept-Encoding'][3]}initParam应用初始化参数的Map,以参数名称为关键字。(也称为servlet上下文初始化参数,在部署描述符中设置)#{initParam.adminEmail}param请求参数的Map,以param

名称作为关键字。如果对给定的参数名称有多个值,仅返回第1个值#{param.address}JSF的表达式语言(EL)隐含变量说

明实

例paramValues请求参数的Map,以param

名称作为关键字。对每个关键字,返回一个String数组(以便可以访问所有的值)#{param.address[2]}requestScope请求范围内的变量的Map,以名称作为关键字#{requestScope.user-Preferences}sessionScope会话范围内的变量的Map,以名称作为关键字#{sessionScope['user']}view当前视图#{view.locale}JSF表达式示例如何将URL中的参数传递到JSF程序中?如果你有下面的URL:http://your_server/your_app/product.jsf?id=777,JSF页面上,你也可以使用预定义的变量访问参数,例如:<h:outputTextvalue="#{param['id']}"/>注意:你必须直接调用该JSF页面,并且使用servlet映射(mapping).如何添加上下文路径到outputLink的URL中?在当前的JSF实现中,当在outputLink中定义的路径以'/'开始时,没有添加上下文路径到URL中,请在URL中使用#{facesContext.externalContext.requestContextPath}前缀.例如:<h:outputLinkvalue="#{facesContext.externalContext.requestContextPath}/myPage.faces">托管Bean的方法处理导航的方法处理Action事件的方法处理ValueChange事件的方法处理输入校验的方法实际操作演示托管Bean的分类Backing托管BeanController托管BeanModel托管BeanUtility托管Bean实际操作演示注意区分Backing-Bean和Controller-Bean初始化托管Bean的属性使用<managed-property>标签<property-name><property-class><map-entries.../>othertags实际操作演示通过FacesContext访问应用环境在一些特殊场景下,应用程序依然需要在托管Bean中访问ServletAPI,JSF为这种需求提供了支持:通过FacesContext接口访问ServletAPIFacesContext接口的方法:getResponseStream()getResponseWriter()实际操作演示目录MVC和JSF下载、安装JSF及使用入门解读JSF配置托管Bean和表达式语言导航模型使用UI标签创建视图页面JSF的运行流程和生命周期利用JSF的消息导航模型当用户单击按钮或超链接时,JSF可以根据导航规则转向到其他页面。JSF使用<navigation-rule>标签来配置导航规则,其有两个有序的子元素:<from-view-id>,导航的起始页面<navigation-case>,其子元素有:<from-action><from-outcome><to-view-id><redirect>导航模型Struts的页面跳转是在ActionBean中发生,execute方法最后返回一个actionForward来进行跳转。JSF则在事件处理方法中最后返回一个字符串,由系统在xml文件中匹配自动进行跳转。在JSF中也可以通过在JSP页面的CommandButton的action属性中直接填写跳转的别名直接跳转,而不必经过事件处理方法的处理静态导航配置方式将commandButton或commandLink的action属性指定为一个静态字符串在JSf配置文件中配置导航规则实际操作演示动态导航配置方式将commandButton或commandLink的action属性绑定到某个托管Bean的处理方法在JSf配置文件中配置导航规则实际操作演示目录MVC和JSF下载、安装JSF及使用入门解读JSF配置托管Bean和表达式语言导航模型使用UI标签创建视图页面JSF的运行流程和生命周期利用JSF的消息概述JSF应用的三个核心组件:JSF容器管理的托管BeanUI标签组成的应用界面及绑定关系导航规则本节主要学习JSF的标签用法UI标签概述JSF提供了大量的UI标签来简化创建视图。使用这些标签,可以通过其value,binding,action,actionListener等属性直接绑定到托管Bean的属性,实例或者方法上。这也是JSF标签与JSP标签最大的区别。JSF包括两组标签库:jsf_core.tld核心标签库和html_basic.tld。JSFUI组件继承关系(部分)JSF标签(JSF核心标签库)标签说明f:validateLength验证组件值的长度f:validateDoubleRange验证组件值的双精度范围f:validateLongRange验证组件值的长整型范围f:validator向组件添加验证器f:loadBundle加载资源包f:verbatim向页面中添加标签f:selectItem指定UISelectOne

或UISelectMany

组件的一个项目f:selectItems指定UISelectOne

或UISelectMany

组件的多个项目JSF标签(JSF核心标签库)标签说明f:view创建顶层视图f:subview创建视图的子视图f:facet向组件添加facetf:param向组件添加参数f:attribute向组件添加属性f:actionListener在父组件上注册操作监听器f:valueChangeListener向父组件注册值变更监听器f:converter注册任意转换器f:convertDateTime注册日期时间转换器f:convertNumber注册数量转换器JSF标签(JSFHTML标签)组件标签说明UISelectOneh:SelectOneListbox单选列表框h:selectOneMenu单选菜单h:selectOneRadio单选按钮集UISelectBooleanh:selectBooleanCheckbox单个复选框UISelectManyh:selectManyListbox复选框集h:selectManyCheckbox多行选择列表框h:selectManyMenu多选菜单UIPanelh:panelGrid表示一个

HTML表格h:panelGroup组合一系列组件UIMessageh:message显示一个组件的最近使用的消息UIMessagesh:messages显示所有消息UIGraphich:graphicImage显示一个图像UIDatah:dataTable功能丰富的表格控件UIColumnh:column表示表格中的列JSF标签(JSFHTML标签)组件标签说明UIFormh:form表示

HTML表单元素UIInputh:InputText单行文本输入控件h:inputTextarea多行文本输入控件h:InputSecret密码输入控件h:inputHidden隐藏字段UIOutputh:outputLabel显示文本h:outputLink链接到另一页面或某页面上的特定位置h:outputFormat显示格式化的信息h:outputText当前行文本输出UICommandh:commandButton表示一个按钮h:commandLink表示一个链接UI标签的通用属性idimmediaterenderedrequiredrequiredMessagevaluestyle……UI标签均具有的属性表单标签h:form标签产生HTMLform元素。如果在名为/index.jsp的JSF页面中使用了无属性的h:form标签,则Form呈现器将产生如下的HTML代码:可以为h:form指定style或styleClass属性。建议为表单元素明确指定id属性。一般需要开发者提供页面布局。<formid="_id0"method="post"action="/converter/index.faces"enctype="application/x-www-form-urlencoded">JSF标签(文本输入)h:inputTexth:inputSecreth:inputTextarea<h:inputTextvalue="测试字符串"readonly="true"/><h:inputSecretvalue="#{form.passwd}"redisplay="true"/><h:inputTextareavalue="123456789012345"rows="3"cols="10"/><h:inputTextvalue="inputText"style="color:Yellow;background:Teal;"/>JSF标签(命令)h:commandButtonh:commandLinkh:outputLink<h:commandButtonvalue="按钮"onclick="alert('buttonclicked')"type="button"/><h:outputLinkvalue=""><h:graphicImagevalue="java-dot-net.jpg"/><h:outputTextvalue=""/></h:outputLink><h:commandLinkvalue="欢迎"actionListener="#{form.useLinkValue}"action="#{form.followLink}"/>JSF标签(选择)h:selectBooleanCheckboxh:selectManyCheckboxh:selectOneRadioh:selectOneListboxh:selectManyListboxh:selectOneMenuh:selectManyMenu选择标签使用示例联系我<h:selectBooleanCheckboxvalue="#{form.contactMe}"/>privatebooleancontactMe;publicvoidsetContactMe(booleannewValue){contactMe=newValue;}publicbooleangetContactMe(){returncontactMe;}<h:selectManyCheckboxvalue="#{form.colors}"><f:selectItemitemValue="Red"itemLabel="红色"/><f:selectItemitemValue="Blue"itemLabel="蓝色"/><f:selectItemitemValue="Yellow"itemLabel="黄色"/><f:selectItemitemValue="Green"itemLabel="绿色"/><f:selectItemitemValue="Orange"itemLabel="橘黄"/></h:selectManyCheckbox><h:selectOneRadiovalue="#{form.grade}"layout="pageDirection"><f:selectItemsvalue="#{form.grades}"/></h:selectOneRadio>privateSelectItem[]grades={newSelectItem(newInteger(1),"高中"),newSelectItem(newInteger(2),"专科"),newSelectItem(newInteger(3),"本科"),newSelectItem(newInteger(4),"硕士"),newSelectItem(newInteger(5),"博士")};publicSelectItem[]getGrades(){returngrades;}<h:selectOneListboxid="onelistbox"value="#{form.expert}"><f:selectItemitemValue="java"itemLabel="Java"/><f:selectItemitemValue="oracle"itemLabel="Oracle"/><f:selectItemitemValue="asp"itemLabel="ASP"/><f:selectItemitemValue="jsp"itemLabel="JSP"/></h:selectOneListbox><h:selectOneMenuid="onemenu"value="#{form.expert}"><f:selectItemitemValue="java"itemLabel="Java"/><f:selectItemitemValue="oracle"itemLabel="Oracle"/><f:selectItemitemValue="asp"itemLabel="ASP"/><f:selectItemitemValue="jsp"itemLabel="JSP"/></h:selectOneMenu>JSF标签(数据表格标签)属性说明bgcolor

设置表格背景色border设置表格边框宽度cellpadding设置表格单元格周围的边距cellspacing设置表格单元格之间的间距first表格中所显示的第一行的索引frame指定表格四周的边框样式;有效值:none、above、below、hsides、vsides、lhs、rhs、box、borderstyleClass指定整个表格的CSS类rowClasses行的CSS类列表,用逗号分隔列表columnClasses列的CSS类列表,用逗号分隔列表headerClass

表格标题的CSS类footerClass用于表格页脚的CSS类rules单元格之间的行样式;有效值:groups、rows、columns、allvar数据表格所创建的变量名称,表示该值中的当前项目……<f:view><h:form><h:dataTablebgcolor="lightblue"value="#{Employeedata.employeelist}"var="employees"border="5"cellpadding="5"cellspacing="2"><h:column><f:facetname="header"><h:outputTextid="headerText1"value="姓名"/></f:facet><h:outputTextvalue="#{}"/></h:column><h:column><f:facetname="header"><h:outputTextid="headerText2"value="职位"/></f:facet><h:outputTextvalue="#{employees.position}"/></h:column></h:dataTable></h:form></f:view>JSF标签(数据表格标签)实际操作演示用户注册页面示例目录MVC和JSF下载、安装JSF及使用入门解读JSF配置托管Bean和表达式语言导航模型使用UI标签创建视图页面JSF的运行流程和生命周期利用JSF的消息本节概述JSF是一个Web应用,也会遵循请求/响应的架构,与JSP的生命周期完全相似:客户端发送一个HTTP请求,服务器端对请求进行处理之后,向客户端送回HTTP响应,整个JSP生命周期完成。JSF将请求/响应的生命周期细化为更多阶段,从而支持更加复杂的UI组件模型JSF将用户请求分成两种:初始请求:当用户直接向某个页面发送请求时,请求没有附加任何的参数信息。提交表单:单击表单的提交按钮、提交超链接时,就会发生提交表单请求。JSF的6个生命周期JSF的6个生命周期JSF提供了PhaseId类来代表生命周期阶段,是一个枚举类,使用的常量有:ANY_PHASE:任意一个生命周期阶段RESTORE_VIEW:恢复视图阶段APPLY_REQUEST_VALUES:应用请求值阶段PROCESS_VALIDATIONS:处理输入校验阶段UPDATE_MODEL_VALUES:更新模型的值阶段INVOKE_APPLICA

温馨提示

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

评论

0/150

提交评论