JAVA SAAS概念讲解知识_第1页
JAVA SAAS概念讲解知识_第2页
JAVA SAAS概念讲解知识_第3页
JAVA SAAS概念讲解知识_第4页
JAVA SAAS概念讲解知识_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

JAVASAAS基本概念关于SAAS的理解,现有的定义都是SoftwareasaService.如果定位Software为主体,则是用数据隔离的技术架构来作为商业模式,这条路是走不通的。比如,截止2010年9月份,据国外媒体报道,德国软件巨头SAP虽然早已开始努力发展网络软件业务,但是在三年的发展历程中,却仅吸引了不足100家的用户。另外,某知名CRM厂商,虽然在垂直的教育行业有所斩获,但是他们的SAAS主营业务CRM,发展得并不好,SAP幻想先规范、统一中小企业日常管理,然后再大规模实施SAAS管理软件,沿着这个是思路做SAAS管理软件,必死无疑。

如我们把SAAS分为两层理解,第一层,从技术架构上,使用SAAS技术手段做数据隔离,即SAAS理解为SoftwareasaService,以软件公司为主导;第二层,作为商业模式,个人认为,SAAS应该理解为Serviceasasoftware,就是服务软件化,即以有能为客户提供特有或都垂直服务的公司为主导。如果你能为你的客户提供独有的服务,基于互联网,以软件为手段展现你的服务,就全面抛弃了已有的传统软件的传统电子商务的定义,从而找到自己真正核心竞争力。软件即服务(SoftwareasaService,简称SaaS,发音:sæs或sɑs)有时被作为“即需即用软件”(on-demandsoftware,即“一经要求,即可使用”)提及。它是一种软件交付模式(deliverymodel),在这种交付模式中,软件及其相关的数据被在云端集中式地托管(hosted)。用户通常使用瘦客户端(thinclient),通过一个万维网浏览器(webbrowser)来访问软件即服务。对于许多商业应用(businessapplication)来说,软件即服务已经成为一种常见的交付模式。这些商业应用包括会计系统(accounting),协同软件(collaboration),客户关系管理(CustomerRelationshipManagement,简称CRM),管理信息系统(ManagementInformationSystems,简称MIS),企业资源计划(EnterpriseResourcePlanning,简称ERP),开票系统(Invoicing),人力资源管理(HumanResourceManagement,简称HRM),内容管理(ContentManagement,简称CM)以及服务台管理(ServiceDeskManagement)。软件即服务已经被吸纳进所有领先的企业级软件公司的战略中。这些公司的最大的卖点之一就是通过将硬件和软件维护及支持外包给软件即服务的提供者,来降低信息技术(InformationTechnology,简称IT)成本。根据一份高德纳集团(GartnerGroup,也称顾能集团)的评估,软件即服务的销售在2010年达到了100亿美元,并且曾被预计在2011年要达到121亿美元,比2010年上升20.7%。高德纳集团估计,到2015年,软件即服务的收入将会超过它的2010年的收入的2倍以上,并且达到预计的213亿美元。客户关系管理系统持续成为软件即服务的最大市场。在客户关系管理市场中的软件即服务曾被预测会从2010年的32亿美元上升到2011年的38亿美元。术语“软件即服务”与“基础结构即服务”(InfrastructureAsAService,简称IaaS)、和“平台即服务”(PlatformAsAService,简称PaaS)一道,被认为是云计算(cloudcomputing)的学术名称。SAAS的介绍以下以电子商务网上商场来介绍SAAS的现实基于JAVA各J2EE的电子商务网上商场是一个最大好处,各类比较成熟的商业消息中间件,几乎都是基于JAVA的,企业内部信息系统一般也会是采用Oracle数据库的。SAASB2B2C的技术架构图架构图SAAS的数据隔离SAAS最重要的数据隔离方式有3种:独立Schema、独立数据库和每个业务表上都加一个tenantID来区公。进销存模块图SAAS

电子商务网上商场介绍我们现在开发的是以商品销售为主体的购物商城主要架构:win2003+SSH+Tomcat+SQLServer开发开发环境:Eclipse+myeclipse+jdk1.6开发环境配置目录安装VMwareworkstation9配置与安装windows2003sp2系统配置与安装JDK1.6环境变量配置与安装Tomcat6环境变量安装数据库MS-SQL2000+SP4安装与配置eclipse+myeclipse数据库视图工具powerdesigner安装VMwareworkstation9

省略……配置与安装windows2003sp2系统

省略……配置与安装JDK1.6环境变量下载jdk:JDK下载安装和配置你的jdk安装jdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在C:\ProgramFiles\Java):

JAVA_HOME=C:\ProgramFiles\Java\jdk1.6.0_10

classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;path=%JAVA_HOME%\bin测试JDKpublicclassTest{

publicstaticvoidmain(Stringargs[]){

System.out.println("Thisisatestprogram.");

}

}将上面的这段程序保存为文件名为Test.java的文件。

测试打开运行输入cmd切换到保存的JAVA程序的路径输入如下命令:javac

Test.java

java

Test

tOMCAT配置安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat)CATALINA_HOME:C:\Tomcat6.0

CATALINA_BASE:C:\Tomcat6.0TOMCAT_HOME:

C:\Tomcat6.0然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如下:

classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;接着可以启动tomcatwin+rcmdc:\tomcat\bin\startup.batURL访问http://localhost:8080(注意最新版本的Tomcat中可能没有common这个文件夹了。所以servlet-api.jar应该的路径为%CATALINA_HOME%\lib\servlet-api.jar;请根据自己的情况自己修改!)

安装数据库MS-SQL2000+SP4

省略……安装与配置eclipse+myeclipse省略……数据库视图工具powerdesigner省略……电子商场设计步骤系统设计构建开发环境(sprint+Hibernate+JDBC+Struts)文件结构数据库设计网店首页布局设计模块设计发布与运行系统设计前台结构图后台结构图网站流程图构建开发环境sprint+Hibernate+JDBC+Struts操作演示文件目录结构数据库设计

商品实体E-R图订单实体E-R图会员实体E-R图数据库模型图网店首页布局设计网站的每一个部分都有不同的tiles组件定义,这此tiles组件的组合就构建成的网页的首页模板。代码如下:18-navigation:网站的导航Tiles组件,其中包含网站的导航菜单和logo标志。22-search:网站搜索栏的Tiles组件,其中还包含一个Banner广告栏。27-left:网站左侧分栏的Tiles组件,其中包含用户登录、商场公告和商品销售排行板块。32-content:网站首页内容的Tiles组件,其中由特价商品和新品上架板块组成。34-right:网站右侧分栏的Tiles组件,其中包含商品分类和广告招商板块。42-footer:网站版权信息的Tiles组件,其中包含网站的所有都、联系电话和E-mail等信息。用于定义前台页面的Tiles布局组件,其中包括出错页面的布局模板、首面的布局模板和次级页面的布局模板。这些模板由标题信息、导航栏、左菜单、右菜单、搜索栏、版权信息以及页面的内容分栏等7个Tiles组件组成。模板中定义了placardTilesController、sellSortTilesController、SearchTileController和TypeListTilesController共4个Tiles控制器,这4个控制器分别为公告页面、销售排行、搜索栏和商品分类提供数据。代码如下:SearchTileController控制器它是从spring容器中daoProxyFactory代理中获取了Dao数据库操作类的实例对象,然后通过该对象获取页面需要的数据,并将数据放到componentContext上下文中。代码如下placardTilesController控制器该类的实现方法和SearchTileController类相同,它们都继承了Spring的ComponentControllerSupport类的,然后获取容器的Dao操作类,再通过该类获取页面数据并存放到Tiles的上下文中,代码如下:在tiles-defs.xml文件中定义首面的视图index.它也是Tiles组件,该组件继承了首页模板中的Tiles组件".index"。它不需要做任何修改,在模板中的Tiles组件中已经具备了主页的所有视图。代码如下:首页控制器spring的控制器有很多种,例如表单控制器、命令控制器、向导控制器等。它们都用于处理客户的请求(即用户通过浏览器浏览并提交的页面请求),并根据客户的请求完成不同的业务逻辑(即使是简单的首页浏览也是一个请求),然后将数据封装到数据模型中并返四视图信息,指定一个视图来显示控制器返回的数据模型。首页中主要是展示商场的商品信息,其数据由goodsController控制器提供,这个控制器就是首页控制器。它是spring的MultiActionController控制器了的子类,除了为主页的控制器提供数据模型之外,它还负责处理其他商品视图的业务逻辑。继承springr的MultiActionController控制器创建NewGoodsController类,在该类中定义操作数据库的dao属性。另外,还需要定义saleGoodsLinen属性和ewGoodsLine属性,它们分别用于定义特价商品和新进商品在视图中显示的行数。最后创建goodsShow()方法处理首页请求的业务逻辑,该方法将返回index视图和相应的数据模型。配置控制器首页控制器已经实现了简单的获取数据的业务逻辑,但还无法处理首页的请求。在Spring的应用中,控制器必须在配置文件中定义名称并为其注入依赖的属性,然后定义处理器映射,才能处理指定的客户请求。配置该控制器的步骤如下:1)创建controller-config.xml文件由于NewGooodsController类是Spring的多动作控制器的实现类,多动作控制器必须方法名称解析器来指定控制器中的每个方法所处理的客户请求,所以必须创建该控制器的方法名称解析器。该解析器的名称可以任意,但建议使用有意义的名称。另外,在这个配置文件中也同时定义了NewGoodsController控制器,并将方法名称解析器注入到其methodNameResolver属性中。配置文件代码如下:10-goodsMethodResolver:使用<bean>标签定义多动作控制器的方法名称解析器。20-goodsController:使用<bean>标签定义多动作控制器的JavaBean实例。21-<property>:该标签用于指定JavaBean的属性22-<ref>:该标签用于引用其他JavaBean的实例。28-<value>:该标签用于定义JavaBean的属性值。2)创建view-config.xml文件。它是本系统的处理器映射配置文件,其中包括了前台和后台所有控制器的处理映射信息,首页控制器必须在此处定义URL映射信息,才能被客户访问。映射首页控制器的配置代码如下:3)在view-config.xml文件中对NewGoodsController控制器定义了处理器映射,当访问"/index.lzw"URL路径时,将显示信息。但是JSP网站的默认首页是index.jsp视图文件,要使默认路径能够浏览首页信息,必须定义index.jsp文件,在其中将请求转发到NewGoodsController控制器中。代码如下:公共模块在本系统的项目空间中,有部分模块是公用的,它们被多个模块重复调用完成指定的业务逻辑。Dao公共类Dao类主要负责有关数据库的操作,该类继承了Spring的HibernateDaoSupport类,通过其getHibernateTemplage()方法获取Hibernate的模板类操作数据库。Dao类的定义代码如下。1.getGoods(Longid)方法该方法用于获取指定ID编号的商品实体对象,它调用Sprint的HibernateTemplate模板类的get()方法获取指定ID的实体类对象。代码如下:2.insertObject(Objectobj)方法该方法主要负责将实体对象添加到数据库中,实体对象会保存到它所对应的数据表中。调用HibernageTemplate模板类的Save()方法,可以直接保存指定的实体对象,代码如下:3.getTypeList()方法该方法用于获取所有商品类别。它调用HibernateTemplate模板类的find()方法执行HQL语句查询,查询结果将被添加到list集合类中并返回给调用都,但是getTypeList()方法将查询结果以Map集合类型返回,代码如下:4.getUser(Stringusernaem,Stringpwd)方法该方法可以通过指定的用户名和密码从数据库中获取相应的会员实体对象。为防止SQL注入,该方法将以用户名为依据,获取实体对象,然后再将实体对象的密码属性与pwd参数进行比较,如果相同则返回该实体对象。代码如下:5.getGrade(doubleamount)方法该方法可以根据会员的消费总金额从折扣表中获取对应的会员级别,该级别以整数区分大小。

代码如下:6.getUserRebate(Stringusername)方法该方法根据指定的会员名称获取该会员的购物折扣信息,获取的折扣信息以字符串形式保存,本方法必须将它转换成浮点数字类型,代码如下配置数据库连接和事务管理器本系统的dao-config.xml文件用于设置Spring的数据库连接、配置Hibernate环境和事务代理工厂。其中事务代理工厂daoProxyFactory在Dao数据库操作类的基础上添加了事务处理的能力,本系统的Dao类的实例对象就是使用该事务代理工厂生成。代码如下。dataSourse:配置连接数据库的数据源。sessionFactory:配置Hibernate的sessionFactory工厂。dao:配置Dao数据库操作类,该类继承了Spring的HibernateTemplate类,需要为它注入sessionFactory属性。transactionManager:配置Spring的Hibernate事务管理器,它同样需要注入sessionFactory属性.daosessionFactory:配置Spring的事务代理工厂,这个代理工厂产生的Dao类的对象在原有Dao类的基础上添加了处理事务的能力。配置Spring控制器的请求映射实例中的view-config.xml文件定义了Spring框架的视图解析器、Tiles配置器、处理器映射和异常解析器。该文件是Spring的配置文件,使用和dao-config.xml文件相同的创建方法。下面是分别是view-config.xml文件对处理器映射、Tiles配置器和Spring视图解析器的相关配置<1>处理器映射的代码如下:设置Tiles配置器的代码如下:配置Spring视图解析代码如下:会员注册模块本系统前台中的会员管理主要包括会员注册、会员登录和会员资料修改3个功,会员管理模块的会员注册、会员资料修改和会员登录分别使用了RegisterController、LoginController和ModifyMemberController控制器处理相应的业务逻辑。虽然会员管理模块使用了多个控制器,但是它们都属于Spring表单控制器。实现该控制器必须继承Spring的SimpleFormController类,它会自动将页面所提交的表单内容绑定到一个JavaBean中。这个JavaBean是对表单数据的封装,类似于Struts的ActionForm类。Spring的表单控制器能够分别实现表单页面的显示和表单的业务处理,当它接收到页面GET类型的请求时,将显示控制器的formView属性所指定的表单页面;在接收到页面POST类型的请求时,它会接收表单内容并实现相应的业务逻辑,然后返回successView属性指定的视图。会员注册过程(1)创建会员注册页面,在该页面中创建一个表单,表单的Action属性设置为register.lzw。表单中包含用户名、真实姓名、所在城市、联系地址等会员信息字段,这些字段使用Spring的<spring:bind>标签和表单类的指定属性进行绑定。由于表单页面的字段和程序代码较多,表单中其他字段的定义将提取到中表中。代码如下:command.username:表单类的属性,它将与表单字段进行绑定,该字段名称将随字段面改变,例如联系电话字段绑定表单类的command.tel属性。如表中的字段绑定是不同表单字段所绑定的表单类的属性。${status.expression}:这是EL表达式,它是绑定的表单类的属性名称,在页面的表单中使用该名称作为表单字段的名称。${atatus.value}:该表达式的结果是绑定的表单类的属性值,在页面的表单中使用该属性值作为表单字段的值。${stauts.errorMessage}:该表达式的结果是表单控制器绑定的验证器的错误信息,当用户输入的值不符合验证器的输入格式时,验证器将返回该错误信息。字段描述字段绑定字段类型字段长度用户名command.usernametext20真实姓名command.truenametext10密码command.pwdtext20确认密码command.pwd1text20所在城市command.citytext-联系地址command.addresstext50邮政编码command.postcodetext20证件号码command.cardnotext20联系电话command.teltext-E-mailcommand.emailtext50表中的“-”符号代表默认设置。2)创建RegisterController类,该类是处理会员注册业务的控制器,它继承了Spring的SimpleFormController类,并重写了该类的部分方法来实现业务处理。首先,在RegisterController类的构造方法中调用setCommandClass()方法设置表单类,这个表单类将用来封装表单中的字段信息。然后,在onSubmit()方法中处理页面请求的业务逻辑,并返回数据模型和视图对象。最后,在onBindAndValidate()方法中验证数据库中是否存在用户要注册的用户名,至于其他详细注册字段的验证,由验证器去实现。RegisterController类的代码如下:3)创建ModifyMemberValidate类,该类实现了Validator接口成为Spring的验证器。处理会员注册请求的控制器在onBindAndValidate()方法中作了简单的用户验证,ModifyMemberValidate类主要负责更细化的验证工作,例如关键信息的空信息验证、密码验证和输入格式验证等。这个验证器必须实现Validator接口中定义的supports()方法和validate()方法,它们分别用于判断验证器是否支持指定表单类的验证和验证表单类的属性,其中的验证错误信息将显示在注册页面相应的字段上。验证器的关键代码如下:4)会员注册控制器和表单验证器必须在controller-config.xml文件中配置定义信息,才能被Spring框架加载并处理会员注册请求,代码如下会员登录的实现过程实现会员登录功能,需要经过创建登录页面、编写登录控制器、配置控制器和请求映射等步骤。(1)创建会员登录页面,在该页面中创建一个表单,表单的Action属性(即请求路径)设置为login.lzw,表单中包含会员名文体框、密码文本框和会员注册的超链接。代码如下。(2)创建loginControll类,该类是处理会员注册业务的控制器,它继承了Spring的SimpleFormController类,并重写了该类的部分方法来实现业务处理。首先,在LoginController类的构造方法中调用setCommandClass()方法设置表单类,这个表单类将用来封装表单中的字段信息。然后,在onSubmit()方法中处理页面请求的业务逻辑,并返回数据模型和视图对象。最后,在showForm()方法中处理会员注销请求,代码如下。(3)在controller-config.xml文件中配置登录控制器的定义信息,设置该控制器的Dao、formView和successView属性,它们分别是数据库操作类、表单视图和登录成功的视图。代码如下:dao:采用依赖注入原初始化登录控制器的Dao属性。formView:注入登录控制器的表单视图属性。successView:注入登录控制器成功视图购物模块设计电子商场的购物模块主要用于辅助顾客完成购物的流程。当顾客选择并购买了商器后,这些商品将被放置在购物车中,可以单击购物车中的“继续购物”超链接继续购买其他商品,也可以单击购物车中的“收银结账”超链接完成商品采购。(1)购物车购物车主要包括添加购物商品、查看购物车、商品数量的修改、移除指定商品、清空购物车等功能。当顾客购买了所需的全部商品后,可以单击“收银结账”超超链接,完成商品购物。(2)收银台收银台工能主要用于购物的收银结账,当顾客购物并到收银台结账后,才完成一次购物流程。收银台将为顾客生成订单,为顾客保存购买的商品信息、订单信息和订单号。收银台页面中包含顾客的会员基本信息,除用用户名不可更改外,还需要填写当前的联系地址、邮政编码和联系电话等信息。购物车的实现过程实现购物车功能需要经过创建购物车页面、编写购物车控制器和配置控制器等步骤。1.编写购物车页面购物车页面由购物商品列表和相应的操作超链接组成。购物商品列表是一个Form表单,其中包括商品数量的修改和商品退回操作,它们分别由控制器的cartModify()方法和cartMove()方法来实现相应的业务逻辑;“收银结账”超链接将转到收银台功能页面中完成本次购物的流程;“清空购物车”超链接将执行控制器的cartClear()方法清空购物车中的所有商品。创建购物车页面的代码如下:2.编写购物车控制器编写购物车器的步骤如下:(1).创建CartController类,该类继承了Spring的MultiActionController类的,它是购物车的控制器,负责处理购物车的操作请求。在该制作器中编写cartAdd()方法,用于处理添加购物商品到购物车的请求。当顾客单击某商品的“购买”按钮时,该商品将会通过cartAdd()方法添加到购物车中。cartAdd()方法首先获取商品的ID编号并调用Dao属性的getGoods()方法获取指定ID编号的商品实体对象,然后将商品实体对象的关键属性封装到GoodsElement类的实例对象中,最后将这些商品信息添加或累加到Session会话的cart属性中。cartAdd()方法代码如下GoodsElement:商品信息的封装类。setID():设置封装类中的商品ID编号。setGoodsName():设置商品封装类中的商品名称。setNowPrice():设置商品封装类中的商品单价信息。setNumber():设置商品数量。(2)在控制器中编写cartModify()方法,用于处理修改购物车中商品数量的请求。cartModify()方法首先获取顾客的购物列表;然后从请求对象中分别获取购物车中每个商品的数量并更新到购物列表;最后,如果某个商品的数量小于或等于0,它将被从购物列表中移除。cartModify()方法的关键代码如下。(3)在控制器中编写cartCleary方法,用于处理清空购物车的请求。这个方法的实现非常简单,从Session会话中将购物车属性cart直接移除,那么购物车的购物列表就不存在了,自然也就实现了购物车清空。关键代码如下。(4)在控制器中缩写cartMove()方法,用于处理从购物车中退回单个商品的请求。实现单个商品的移除,首先需要获取该商品的ID编号,然后调用remove()方法从购物列表中移除该商品。关键代码如下。3.配置购物车控制器购物车控制器的配置信息分为控制器定义和请求映射两部分。购物车控制器首先需要在controller-config.xml配置文件中定义购物车控制器的方法解析器,在解析器中定义控制器的不同方法所处理的请求,然后定义购物车的控制器,并为控制器分别注入方法解析器和Dao属性。关键代码如下。收银台的实现过程实现收银台功能需要经过创建收银台页面、编写收银台控制器、配置收银台的控制器和控制器,收银台控制器被映射处理“/cartCheckout.lzw”请求。1.编写收银台页面创建收银台页面,在该页面中创建一个表单,表单中包含用户名、真实姓名、联系地址等会员基本信息字段。表单字段如下:2.编写收银台控制器收银台控制器是Spring的表单控制器的子类,具有处理表单的能力。收银台页面的表单包含订单的会员信息和联系方式,这些内容都由表单类CartCheckoutForm封装并传递给控制器,然后由控制器将表单信息和商品信息通过事务保存到数据库中。实现收银台控制器的步骤如下:(1)创建CartCheckoutController类,在该类的构造方法中调用setCommandClass()方法定义控制器的表单类。关键代码如下:(2)在控制器中编写onSubmit()方法,在该方法中首先获取用户的折扣信息,并将折扣信息和其他会员信息添加到订单主表的实体对象中。关键代码如下:(3)在循环中遍历购物车中的所有商品,将这些商品添加到订单明细表的实体对象中。关键代码如下:(4)最后,更新会员信息,并调用Dao属性的insertObject()方法,在事务中将订单主表、订单明细表的实体对象和会员表的实体对象添加或更新到数据库中。3.配置收银台控制器在controller-config.xml文件中定义收银台控制器的配置信息,并为控制器注入Dao属性和相应的视图属性.关键代码如下:商品管理模块设计商品信息的管理对电子商城来说十分重要,一个好的电子商务系统必须有一个强大的商品管理模块。电子商场系统的商品管理模块主要实现对商品信息的管理,包括分布显示商品信息、添加商品信息、修改商品信息、删除商品信息和商品的分类管理等功能。1.商品列表商品列表是后台商品管理页面之一,它负责分布显示数据库中所有的商品,并为每个商品提供“修改”和“删除”超链接。商品列表页面显示的信息包括商品名称、简介、是否新品、是否特价等。2.商品添加商品添加功能主要用于添加新商品到数据库,添加到数据库的商品信息将被显示到电子商城的前台页面中。新添加的商品信息需要填写所属分类、商品名称、图片文件、定价等商品信息。另外,如果在添加商品时,指定该商品是新品和特价商品,那么这个不新添加的商品将显示到新品上架页面和特价商品页面中.商品管理模块技术分析商品管理模块的商品列表和商品添加分别使用了ProductManagerController和GoodsAddController控

温馨提示

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

评论

0/150

提交评论