Java综合项目开发平台开发标准规范.doc
《Java综合项目开发平台开发标准规范.doc》由会员分享,可在线阅读,更多相关《Java综合项目开发平台开发标准规范.doc(75页珍藏版)》请在咨信网上搜索。
Java项目开发平台开发规范 __________北京东方国信电子有限公司CRM事业部 时间:-8-27 目 录 Java项目开发平台开发规范 1 一、开发平台概述 3 二、技术综述 5 1、Struts框架技术 5 2、Hibernate数据持久化技术 9 3、动态bean技术 15 三、在BONC-JONE平台上进行开发 19 1、BONC-JONE平台目录阐明 19 2、如何使用BONC-JONE运营起来 19 3、开发关于规范性规定及典型环节 19 四、重要函数及使用技术办法阐明 43 如何使用自定义标签库? 43 如何使用日记类写日记? 45 如何进行资源注册? 48 如何进行登陆权限验证? 48 如何进行字符转换? 48 如何对资源文献进行字符转换? 48 如何配备、读取应用配备信息? 48 如何打包boncpersistenceobj.jar文献? 48 数据操作办法原理是如何? 48 如何将任意文献上传到数据库中,又如何下载? 48 如何保证在页面清空字段能对的提交到数据库? 48 如何使用日期控件? 49 如何使用DBQuery类进行数据查询? 49 如何自动生成Hibernate持久化beans及map文献? 49 如何使用分页技术? 51 附录: 54 附A:Struts学习精要参照 54 附B:Hibernate学习精要参照 54 附C:技术备忘 54 一、开发平台概述 BONC-JONE开发平台是北京东方国信电子技术有限公司遵循“简朴、有效、先进、可扩”原则,通过整合Struts 1.1与Hibernate 2.1等先进开源技术设计并实现一种J2EE开发平台。 其架构图如下: 这个体系架构主体是MVC架构。MVC是Model/View/Control缩写。Model/View/Control是软件设计典型构造。在这种设计构造下,一种应用被分为三个某些:Model、View和Controller,每个某些负责不同功能。Model是指对业务数据/信息解决模块,涉及对业务数据存取、加工、综合等;View是指顾客界面,也就是面向顾客数据表达;Controller则负责View和Model之间流程控制,也就是完毕两个方向动作:1.将顾客界面(View)操作映射到详细Model,以完毕详细业务逻辑;2. 将通过Model解决完业务数据及时反映到顾客界面(View)上。 其系统构成构造图如下: 平台辅助API 表达层Struts+Tiles 业务层 业务管理接口+ 业务管理抽象类+ 业务管理实现类 业务Beans技术 JDBC 持久化层 Hibernate 连接池技术 数据库 DataBase BONC-JONE开发平台从总体构造上充分体现了分层系统设计思想。分层概念来源于操作系统及网络合同设计中,但当前这个概念已在所有面向对象应用系统中相称流行了。 BONC-JONE开发平台重要层次分为:表达层、业务层、持久化层及某些各层公用工具类库。 分层系统设计思想重点在于: l 一种分层系统在各有关层实当代码间定义了接口,从而容许一种层实当代码变化不会影响到其他层。 l 分层系统构造还限制隔层依赖发生,各层通讯是由顶向下管理。某一层仅依赖于直接位于它下面那一层。每一层对其她层存在都是不懂得,除非那一层紧邻其下。虽然是对紧邻其下层它也仅需要懂得如何使用接口与其通讯就可以了,而无需懂得其实现细节。 BONC-JONE开发平台通过Struts+Tiles技术实现了MVC模式中表达层和控制层,通过Hibernate技术结合动态Bean技术融合成独特业务Beans技术构建了数据层。 二、技术综述 1、Struts框架技术 Struts是一种基于J2EEMVC框架。 J2EE体系涉及JSP、Servlet、EJB、WEB SERVICE等多项技术。这些技术浮现给电子商务时代WEB应用开发提供了一种非常有竞争力选取。但如何把这些技术组合起来,形成一种适应项目需要稳定架构对项目开发是非常重要。 设计一种框架,需要考虑方面诸多,不但要对J2EE体系中各种技术进行筛选用舍,并要考虑到开发过程中角色分工、后期运营维护,以及系统扩展性等诸多因素。 因而,一种成功软件需要有一种成功架构。 MVC架构使得应用程序构造更加清晰,通过将代码按照层次划分为业务逻辑/数据、顾客界面和应用流程控制这三个层次,增强代码稳定性。咱们懂得,对于Model、View、Controller这三某些功能来讲,View实现普通是由界面设计人员和界面程序员来完毕,Model则是由业务逻辑程序员来完毕,Controller则普通由负责整体控制程序员来完毕。Controller某些代码比较稳定,普通会实现一种通用架构;而Model则跟随商务流程变化而变化;View更改则是随着顾客需求更改而更改。这种模块功能划分有助于在代码修改过程中进行模块隔离,而不需要把具备不同功能代码混杂在一起导致混乱。对于项目开发而言,有助于在项目小组内按照小构成员各自擅长进行分工,有助于三个某些并行开发、加快项目进度。 当前可供选取较为流行MVC框架有六种之多:Struts、Maverick、WebWork、Turbine、RealMothods、AOP(aspect-oriented programming)。它们应用领域及实现侧重点各有不同。但以Struts应用最广,是基于MVC模式Web应用最典型框架,当推首选。 Struts最早是作为Apache Jakarta项目构成某些问世。项目创立者但愿通过对该项目研究,改进和提高Java Server Pages (JSPs)、Servlet、标签库以及面向对象技术水准。 Struts这个名字来源于在建筑和旧式飞机中使用支持金属架。它目是为了协助咱们减少在运用MVC设计模型来开发Web应用时间。 因而咱们选取Struts。 Struts勉励按照Model 2方式构建应用体系。Model 2是MVC基本设计模式一种变体。MVC设计模式长处是,它使得Model、View和Controller各个某些之间相对独立。Struts在一种中心位置装配ActionServlet、ActionMapping和各种Action类,解决所有传入HttpServletRequest。ActionServlet把各个传入HttpServletRequest分发给Action类,而ActionMapping对象可通过Struts-config.xml配备文献控制,它告诉ActionServlet如何分发祈求。 本图示意了Struts各个某些之间通信过程 Controller功能:在客户端、View和Model之间起协调、仲裁作用。只有Controller才会与Model和View联系,在这中间它就象是一种互换机,而Model和View之间不会直接通信,这样,Model、View和Controller就被分隔开来。这是成功运用Struts核心所在。 阐明一下:所有Controller逻辑应当放入Action类,与应用其她层通信可以在这里进行。虽然咱们可以把业务逻辑也放入Controller,但普通而言最佳不要这样做。应当改用Model某些组件,由于这些组件才是真正解决数据地方。把数据保存到数据库也应当是Model功能之一。 当Controller解决好一种HttpServletRequest,它把祈求转发给View。View唯一任务是体现数据,在Struts中,View普通使用JSP技术。 在Struts中,Controller和View之间所有通信都通过HttpServletRequest、HttpSession和ServletContext间接完毕,对于这些操作来说,首选技术莫过于Servlet,Struts直接把HttpServletRequest传递给Servlet——或者是JSP,但是Servlet容器会自动把JSP转换成Servlet。 Struts框架将其侧重点放在了Controller与View层。 View由JSP定制标记库和JSP页面共同构造,其中ActionForm类是一种类似JavaBeanValueObject对象,带有set和get办法,用来保存客户状态。按照StrutsMVC概念,ActionForm位于View和Controller之间中间地带。Struts提供了一组完备专用标记,用来从JSP访问ActionForm里面数据。 Controller由ActionServlet、ActionMapping和各种Action类互相配合来完毕。其中Action类给开发人员自由发挥空间比较大,因而,在开发过程中完整地遵从MVC概念Action类使用方式是一种核心。 对于Struts解剖。 图解阐明:其中不同颜色代表MVC不同某些:红色(控制器)、紫色(模型)和绿色(视图) l 一方面,控制器(ActionServlet)进行初始化工作,读取配备文献(struts-config.xml),为不同Struts模块初始化相应ModuleConfig对象。例如配备文献中Action映射定义都保存在ActionConfig集合中。相应地有ControlConfig集合、FormBeanConfig集合、ForwardConfig集合和MessageResourcesConfig集合等。 l 控制器接受HTTP祈求,并从ActionConfig中找出相应于该祈求Action子类,如果没有相应Action,控制器直接将祈求转发给JSP或者静态页面。否则控制器将祈求分发至详细Action类进行解决。 l 在控制器调用品体Actionexecute办法之前,ActionForm对象将运用HTTP祈求中参数来填充自己(可选环节,需要在配备文献中指定)。详细ActionForm对象应当是ActionForm子类对象,它其实就是一种JavaBean。此外,还可以在ActionForm类中调用validate办法来检查祈求参数合法性,并且可以返回一种包括所有错误信息ActionErrors对象。如果执行成功,ActionForm自动将这些参数信息以JavaBean(普通称之为form bean)方式保存在Servlet Context中,这样它们就可以被其他Action对象或者JSP调用。Struts将这些ActionForm配备信息都放在FormBeanConfig集合中,通过它们Struts可以懂得针对某个客户祈求与否需要创立相应ActionForm实例。 l Action很简朴,普通只包括一种execute办法,它负责执行相应业务逻辑,如果需要,它也进行相应数据检查。执行完毕之后,返回一种ActionForward对象,控制器通过该ActionForward对象来进行转发工作。咱们主张将获取数据和执行业务逻辑功能放到详细JavaBean当中,而Action只负责完毕与控制关于功能。遵循该原则,因此在上图中将Action对象归为控制器某些。 本图给出了客户端从发出祈求到获得响应整个过程图解阐明。 以上咱们从原理上剖析了Struts,关于详细如何应用Struts框架框,请参看附录A。 2、Hibernate数据持久化技术 Hibernate 是一种object/relational mapping (ORM)持久化技术。 曾经,涉及当前也有许多J2EE项目在直接使用SQL/JDBC实现持久化。众所周知DAO模式让咱们把复杂JDBC编码和大量SQL隐藏到业务逻辑和领域模型之后,但这种方式实现是有限分离,最致命是应用由一种数据库向另一种数据库迁移时可移植性非常差。此外它规定开发者对项目中使用关系数据库管理系统非常熟悉,并且要精通SQL。 当前可供选取较为流行数据持久化技术也同样有诸多:EJB、Hibernate、JDO、OJB、Cayenne、SimpleORM、JAXOR等等。 不选用EJB理由 EJB在J2EE应用里是一种重量级组件,它由容器提供了分布、事务等各种公司级应用需要特性。咱们不选用它重要是由于: l 兼容性问题。规范一模同样,实现各有不同,当从某一种EJB容器向另一种EJB容器移植时维护成本会很高。 l 性能问题。 l 不支持动态Query问题。Entity Bean最后执行代码是在布置编译时生成,很难实现动态Query。 l 如果一种应用对事务解决规定很高,访问量非常大需要实现分布式集群时EJB才是必要。 选用Hibernate理由 Hibernate是当前最活跃,应用最广,更新最快,文档最完整,功能最齐备一种数据持久化开源项目。选用它理由重要有: l Hibernate并不直接反映数据库中表和列,它通过某些持久化类(JavaBeans)来映射到数据库中表上。这些持久化类与咱们普通使用JavaBeans没有任何不同,它们即可以由Hibernate来持久化,同样重要是它们也可以完全与Hibernate无关地被使用。这是它与其他持久化模型(例如EJB)一种重要区别即Hibernate持久化类是纯JavaBeans,它可以在任何地方被使用,而不需要容器。 l Hibernate提供了一种对象导向查询语言(HQL)。几乎支持所有SQL语法,老式数据库可以做它就可以做。 l Hibernate提供了数据分段提取控制功能。 l 将Hibernate放在SLSB后,它同样可以实现分布式应用,同样可以运用容器提供JAT事务服务。 因而咱们选取Hibernate。 Hibernate概要构造图: Hibernate详细构造图: Hibernate使用概要 l 手工创立或使用工具自动生成Hibernate持久化类; 文献示例: package eg; import java.util.Set; import java.util.Date; /** * @hibernate.class * table="CATS" */ public class Cat { private Long id;// identifier private Date birthdate; private Cat mate; private Set kittens private Color color; private char sex; private float weight; /** * @hibernate.id * generator-class="native" * column="CAT_ID" */ public Long getId() { return id; } private void setId(Long id) { this.id=id; } /** * @hibernate.many-to-one * column="MATE_ID" */ public Cat getMate() { return mate; } void setMate(Cat mate) { this.mate = mate; } /** * @hibernate.property * column="BIRTH_DATE" */ public Date getBirthdate() { return birthdate; } void setBirthdate(Date date) { birthdate = date; } /** * @hibernate.property * column="WEIGHT" */ public float getWeight() { return weight; } void setWeight(float weight) { this.weight = weight; } /** * @hibernate.property * column="COLOR" * not-null="true" */ public Color getColor() { return color; } void setColor(Color color) { this.color = color; } /** * @hibernate.set * lazy="true" * order-by="BIRTH_DATE" * @hibernate.collection-key * column="PARENT_ID" * @hibernate.collection-one-to-many */ public Set getKittens() { return kittens; } void setKittens(Set kittens) { this.kittens = kittens; } // addKitten not needed by Hibernate public void addKitten(Cat kitten) { kittens.add(kitten); } /** * @hibernate.property * column="SEX" * not-null="true" * update="false" */ public char getSex() { return sex; } void setSex(char sex) { this.sex=sex; } } l 手工创立或使用工具自动生成Hibernatexml映射文献; 文献示例: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" ""> <hibernate-mapping> <class name="eg.Cat" table="CATS" discriminator-value="C"> <id name="id" column="uid" type="long"> <generator class="hilo"/> </id> <discriminator column="subclass" type="character"/> <property name="birthdate" type="date"/> <property name="color" not-null="true"/> <property name="sex" not-null="true" update="false"/> <property name="weight"/> <many-to-one name="mate" column="mate_id"/> <set name="kittens"> <key column="mother_id"/> <one-to-many class="eg.Cat"/> </set> <subclass name="eg.DomesticCat" discriminator-value="D"> <property name="name" type="string"/> </subclass> </class> <class name="eg.Dog"> <!-- mapping for Dog could go here --> </class> </hibernate-mapping> l 初始化Configuration Configuration cfg = new Configuration() .addFile("Cat.hbm.xml") .addFile("DomesticCat.hbm.xml"); 或 Configuration cfg = new Configuration() .addClass(eg.Cat.class) .addClass(eg. DomesticCat.class) l 获得SessionFactory SessionFactory sessions = cfg.buildSessionFactory(); l 进行数据存取等操作 Session sess = sessions.openSession(conn); // start a new transaction (optional) Transaction tx = sess.beginTransaction(); DomesticCat pk = new DomesticCat(); pk.setColor(Color.TABBY); pk.setSex('F'); pk.setName("PK"); pk.setKittens( new HashSet() ); pk.addKitten(fritz); sess.save( pk,new Long(1234) ); sess.flush();//force the SQL INSERT sess.refresh(cat);//re-read the state (after the trigger executes) mit(); sess.close(); l 使用HQL语言查询 Query q = s.createQuery("from foo in class Foo where foo.name=:name and foo.size=:size"); q.setProperties(fooBean);// fooBean has getName() and getSize() List foos = q.list(); 需要阐明是: Hibernate产生所有SQL是运营时产生,说更精确某些是在你系统启动时产生。 所有咱们需要只是一种包括映射元数据xml映射文献。 xml映射文献可以你手工来维护,也可以通过植入源代码注释来产生。 以上咱们简要简介了Hibernate基本特点及用法,详细内容请参看附录B。 3、动态bean技术 使用动态bean技术理由: l 咱们不只一次抱怨信息系统中数据项变化不定,无法设计和实现Java Beans。 l 咱们也不只一次作过这样事情:数据项增长或减少了,我需要修改信息系统以求适应。 例如咱们按照某个公司规定设计出了个Bean来满足该公司对信息系统中业务数据模型需要,过了一定期间后,她们业务发生了一定变化,要对数据模型扩充一某些数据项,可想而知会有多么辛苦。动态beans技术就是为解决此类问题而生,它为解决由于数据项变化带来设计和实现变更提供了技术基本。 动态bean技术重要概念: l 一种Bean属性定义完全取决于有无访问者办法:设立器(setXXX())和获取器(getXXX()),而与在类定义中有无显示阐明字段毫无关系。 l 为了使Beans能确认一种属性,其设立器(setXXX())和获取器(getXXX())必要遵循下列命名规则: n 一种属性名在访问办法中必要以大写字母开头; n 在其他地方以小写字母开头。 l 扩展javaBean属性机制: 定义了五种属性访问方略,使得属性访问代码像脚本同样在运营时决定,此外一种进步就是它支持List和Map属性元素属性,也就是扩展javaBean属性机制它不把一种Bean某个List和Map成员当作一种整体属性,而是动态地把这个List和Map成员元素当作属性,这样无疑提供了一种无限扩展Bean属性能力。 Common-beanutils 1.6中propertyUtils实用类使用Java语言内省反射功能实现扩展属性设立器和获取器。propertyUtils定义了引用一种特定Java bean属性五种格式: n 简朴属性,格式beanName.propName。propName标记了JavaBean beanName一种属性,这个属性获取器和设立器办法是通过JavaBean原则内省功能决定。如果要变化简朴属性值,必要要有设立器操作,可以想象成类似调用beanName.[getpropName()|setpropName(value)]; n 嵌套属性,格式beanName.propName1.propName2.propName3。像简朴属性同样,第一种propName1元素被用来选取一种属性获取器办法,在这个办法返回对象上使用propName2获取器办法返回下一种对象,最后这个对象属性propName3被访问或设立,可以想象成类似调用beanName.getpropName1().getpropName2().[getpropName3()|setpropName3(value)]; n 索引属性,格式beanName.propName[index]。属性propName1可以是一种数组,java.util.List或者JavaBean beanName有索引属性获取器和设立器操作。bean只需propName获取器办法,可以想象成类似调用beanName. [getpropName (index)|setpropName(index,value)]; n 映射属性,格式beanName. propName(key)。propName是一种java.util.Map实现。bean只需propName获取器办法,可以想象成类似调用beanName. getpropName ().[get("key")|set("key",value); n 组合属性,格式beanName. propName1.propName2[index].propName3(key)。 l 动态bean: 动态bean具备动态属性,也就是说可以由程序运营时构造bean属性,而不是像原则javaBean在编译时决定一种bean属性。 定义和访问一种动态bean环节如下: n 定义一种动态属性Dynaproperty数组,动态属性Dynaproperty定义了一种属性名字和对象类型; n 用定义好动态属性数组实例化一种动态类; n 由动态类返回一种动态bean; n 可以用propertyUtils访问和设立动态bean属性。 下面是定义和访问动态bean代码: // TestDynaBean.java import mons.beanutils.*; import java.util.*; public class TestDynaBean { public static void main(String[] args) { TestBean bean = new TestBean(); Object value = null; try{ Dynaproperty[] px = { new Dynaproperty("subordinate",bean.getClass()), new Dynaproperty("firstName",Class.forName("java.lang.String")), new Dynaproperty("lastName",Class.forName("java.lang.String")) }; DynaClass dynaClass = new BasicDynaClass("employee",null, px ); DynaBean employee = dynaClass.newInstance(); propertyUtils.setproperty(employee,"subordinate",bean); propertyUtils.setproperty(employee,"subordinate.listIndexed[0]","dy bean set"); propertyUtils.setproperty(employee,"firstName","Fred"); propertyUtils.setproperty(employee,"lastName","Flintstone"); System.out.println("subordinate.listIndexed[0]:"); System.out.println(propertyUtils.getproperty(employee,"subordinate.listIndexed[0]")); System.out.println("firstName:" + propertyUtils.getproperty(employee, "firstName")); System.out.println("lastName:" + propertyUtils.getproperty(employee, "lastName")); }catch (Exception e ){ System.out.println(e.toString()); } } } 从配备文献配备动态bean动态属性好处在于既能固定又能更改动态Bean属性,这些属性是这个动态Bean对外界宣布"访问合同"。动态属性Dynaproperty重要构造函数接受两个参数:第一种为属性名称,为字符串性,第二个为属性类型,为Class类型。从配备文献读取资料普通为字符串型,咱们可以用ClassLoader把配备文献中字符串型属性类型转化成Class类型属性类型。 下面struts 1.1 中struts-example.war formbeans.xml中片断体现了如何在配备文献中定一种动态bean动态属性: <form-bean name="logonForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="username" type="java.lang.String"/> <form-property name="password" type="java.lang.String"/> </form-bean> 下面RequestUtils代码片断体现了如何从字符串表达属性类型转化成Class型属性类型: public static Class applicationClass(String className) throws ClassNotFoundException { // Look up the class loader to be used ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if (classLoader == null) { classLoader = RequestUtils.class.getClassLoader(); } // Attempt to load the specified class return (classLoader.loadClass(className)); } 这就是关于动态bean所有奥秘,RequestUtils类代码片断public static ActionForm createActionForm就是这样创立动态bean。 三、在BONC-JONE平台上进行开发 1、BONC-JONE平台目录阐明 注意:mon、com.bonc.security包属于开发平台基本支持包,其中文献不容许开发人员改动。 2、如何使用BONC-JONE运营起来 将开发平台从source safe拉下来后,只需要将src目录下bonc_init.properties文献中boncHome=途径改为你所下载目录实际途径,如:boncHome=D:\\DevelopWork\\java\\boncCrm\\exampleroot\\WEB-INF,做了这样设立后,系统启动时就会到这个目录下去找咱们项目配备文献bonc_config.xml。 如果你使用是Jbuild- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 综合 项目 开发 平台 标准规范
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文