sshb笔记(注释)复习

上传人:沈*** 文档编号:92374452 上传时间:2022-05-18 格式:DOC 页数:18 大小:74.50KB
收藏 版权申诉 举报 下载
sshb笔记(注释)复习_第1页
第1页 / 共18页
sshb笔记(注释)复习_第2页
第2页 / 共18页
sshb笔记(注释)复习_第3页
第3页 / 共18页
资源描述:

《sshb笔记(注释)复习》由会员分享,可在线阅读,更多相关《sshb笔记(注释)复习(18页珍藏版)》请在装配图网上搜索。

1、 Struts 2一、Struts2的产生:通过webwork社区与struts社区的合并,并继承了webwork框架,产生struts2。二、Struts1与struts2的区别:1、Action类:(1)struts1的Action类继承Action类。(2)Struts2的action类可以是任意一个普通的java类,只要该类有execute方法即为一个action类。或者实现Action接口或者继承自ActionSupport类2、线程模型:(1)Struts1的action是单例模式存在线程安全问题(2)Struts2的action是多例的,因此不会出现线程安全问题。3、Servle

2、t依赖:(1)Struts1必须依赖Servlet API。(2)Struts2可以不依赖Servlet API。4可测性(1)struts1测试必须使用web服务器.(2)Struts2测试可以脱离web容器单独进行测试。5、输入捕获:(1)struts1通过ActionForm来注入表单数据,ActionForm与Vo类有许多重复代码。(2)strurs2可以通过vo类或者基本属性获得用户的输入。6、表达式语言(1)struts1支持el(2)struts2即支持el又允许使用ognl(Object graphics notation language)。7、类型转换(1)struts1的

3、actionForm通过ments-beanutil包完成转换(2)struts2提供了内置的转换器。8、试图支持:一、Struts2上传:1、环境搭建: mons-fileupload.jar mons-io.jar 其他必须包 2、定义文件上传表单,使用struts2的文件上传表单组件: 3、定义表单对应的领域对象FileInfo fileInfo: (1)定义File 类型的属性 名字与上传组件名相同 (2)定义一个获得上传文件的文件名的属性,规则是以上传文件表单名开头以FileName结尾 (3)定义一个获得上传文件类型的属性,规则是上传文件表单名字开头,以ContentType结尾。

4、 4、在action中定义领域对象fileInfo,并提供setXxx/getXxx方法,修改上传表单 5、配置struts.xml (1)修改上传文件的大小 (2)修改fileUpload拦截器的默认配置 20971520 image/jpeg,application/octet-stream,image/bmp,image/gif /download.jsp /upload.jsp二、文件下载:1、在下载的action类中定义一个返回InputStream类型的方法一般命名getTargetFile2、配置action image/jpeg,application/octet-stream

5、,image/bmp,image/gif attachment;fileName=$fileName targetFile 4096 一、OGNL:Object Graph navigation language:1、应用场景:(1)在jsp页面中使用调用对象的方法、调用类的静态方法、调用构造方法创建对象、遍历集合、访问值栈等(2)在struts.xml配置文件中使用比如传值2、值栈(ValueStack):是Struts2中是一个对象,这个对象用来表示action空间对象,如果多个action之间的跳转方式是chain,这些action共享 同一个值栈对象。在action中,action类的

6、成员变量都会被放入值栈 (1)获取action的值栈:通过ActionContext获取值栈 (2)在页面中使用ognl: 调用Action中的静态方法 调用jdk java.lang包中的静态方法: 调用jdk java.lang包中的静态方法: 调用jdk的不是java.lang包中的类的静态方法 调用类中的静态成员: 调用类中的构造方法: 访问值栈中的集合 访问值栈中List集合的某一个元素 访问值栈中的Set集合 访问值栈中的Set集合的某一个元素 访问值栈中的Map: 获得map中所有的key: 获得map中所有的value: (3)在页面中使用ognl遍历集合时使用投影和选择, 通

7、过ognl的投影显示所有部门的地址 通过ognl的投影显示第一个部门的地址 通过ognl选择部门编号大于20的部门:20/ 通过ognl选择部门编号大于20的第一个部门的部门编号:20.deptno0/ 通过ognl选择部门编号大于20的第一个部门的部门编号:20.deptno/ 通过ognl选择部门编号大于20的最后一个部门的部门编号:20.deptno/ (4)ognl访问X围对象里的值 -在各个X围对象中寻找,找到后返回 (5)#parameters:获取参数。 3、action重定向到action的传值 一、Struts2的异常处理: (1)try.catch处理 (2)声明式的处理方

8、式: 如果在action中产生运行时异常,可以通过声明的方式进行处理,配置如下 1)如果是局部异常:在某一个特定的action中产生的异常,可以在此action的配置中进行异常配置 2)全局异常:如果多个aciton都产生同一个运行时异常,可以将该异常配置为全局异常。在pacakge标记下进行配置 实现多个action共享。 配置如下 /loginException.jsp 3) 非运行时异常,(Struts2中对于非运行时异常声明式处理遗留问题。)一、在Action中使用X围对象(request,session,application)的非Servlet API(HttpServletReq

9、uest/HttpSession/ServletContext):1、非IoC(控制反转)方式:X围对象需要在应用程序中创建: 使用ActionContext对象获得X围对象:(1)获得requst对象:Map request = (Map) ActionContext.getContext().get(request);(2)获得session对象:Map session = ActionContext.getContext().getSession();(3)获得Application对象:Map application = ActionContext.getContext().getAp

10、plication();2、IoC(控制反转)方式:X围对象需要在应用程序中创建:(1)需要action类实现RequestAware、SessionAware、ApplicationAware(2)定义Map类型的X围对象: Map request Map session Map application(3)在实现的接口中将对应的对象返回。二、在action中使用X围对象的Servlet API以及HttpServletResponse对象等1、X围对象的非IoC方式: (1)定义X围对象并是通过ServletActionContext实现的,代码如下: HttpServletRequest

11、 request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); ServletContext application = ServletActionContext.getServletContext(); /HttpServletResponse response = ServletActionContext.getResponse();2、X围对象的非IoC方式:三、拦截器:1、拦截器的概念:Struts2的核心功能都是由不同的拦截器来完成的。2、如果在action中自定义配置

12、拦截器,那么继承的拦截器将被屏蔽3、自定义拦截器:(1)实现Interceptor接口(2)继承MethodFilterInterceptor:可以根据配置在action某些方法执行时拦截,某些方法执行时不拦截, 1)excludeMethods:指定不被拦截的方法 2)includeMethods:指定被拦截的方法 注意: 在使用通配符配置action时,使用excludeMethods无效。 当使用excludeMethods和includeMethods指定同一个方法时includeMethods优先级高。 一、回顾:1、工程环境的搭建(1)拷贝jar包mons-collections-

13、3.1.jarmons-digester-2.0.jarmons-fileupload-1.3.jarmons-io-2.0.1.jarmons-lang3-3.1.jarmons-logging-1.1.3.jarfreemarker-2.3.19.jarjavassist-3.11.0.GA.jarjson-lib-2.3-jdk15.jarognl-3.0.6.jarstruts2-core-2.3.15.3.jarxwork-core-2.3.15.3.jar(2)拷贝struts.xml配置文件(3)在web.xml配置核心控制器filter配置2、在Action类中对输入的捕获:(

14、1)基本属性取值:(2)领域对象取值:(3)模型驱动3、Action的创建:(1)任何一个带有String execute()方法的类都可以作为action使用(2)实现Action的类可以作为action(3)继承ActionSupport类4、defutlt.properties:- (1)struts.xml通过 (2)struts.properties: (3)web.xml的filter配置中通过初始化参数更改 web.xmlstruts.propertiesstruts.xmldefault.properties5、struts-default.xml:6、详细配置:struts标

15、记的子标记配置 (1)constant标记 (2)include标记 (3)bean标记了解 (4)package标记: 1)package属性: name:包名,用于区分多个包和为其他包提供继承的标示。 extends:继承其他包,在默认情况下必须继承自struts-default包或该包的子包。 abstract:抽象的,如果该属性的值为true,则在这个包中不能配置action,配置了也不可见 namespace:在配置package时可以指定名称空间,作用是解决命名冲突 注意:如果在指定的名称空间中找不到对应的action,会到默认的名称空间中寻找,找到了执行,找不到报404错误 (5

16、)package中子标记配置 1)配置:用来配置默认action,必须是package中的第一个配置,当用户访问不存在action时可以自动转入默认action 2)forward Action的配置:只需配置action,可以不指定action类,这样的action就是forward Action,只做转发 /error.jsp (6)常用action的配置 1)name属性:用户请求的action的名字,作为url一部分。 2)class属性:action的类名。 3)method:标示请求道action后执行的action方法的名字,如果没有配置,默认执行execute方法。在actio

17、n类中允许定义多个调用业务逻辑的方法 4)使用通配符简化action的配置,减少action配置数量,struts配置文件支持使用通配符“*”,标示任意字符串 例如 请求的url save_User.action 执行的方法的名字 saveUser 跳转的页面名字 saveSuc.jsp 如果匹配第一个*,则1,如果匹配第二个*,2,如果完全匹配*_*,则使用0. 5)动态方法调用:在请求action时,可以在action后加!方法名.action来调用指定的方法(7)result配置: 1)name属性:name值表示与执行的action方法的返回值相同的结果。返回结果可以是任意的字符串,也

18、可以是Action接口中定义的值(SUCCESS ERROR INPUT LOGIN NONE) 如果没有配置name属性,那么name属性的默认值是success 2)type属性:表示跳转类型,包括action转发或者重定向到页面、action转发或重定向到action、stream等 ,具体分为如下情况: a、action转发到页面:值是dispatcher,如果type的值没有配置,默认就是dispatcher b、action重定向到页面:type值是redirect c、action转发至action:type的值是chain,具体的配置如下: two . d、action重定向到

19、action:type的值redirectAction,配置如下: two . e、文件下载时返回类型:stream。后面章节介绍。 三、Struts工程环境的搭建:1、拷贝jar包:mons-fileupload-1.3.jarmons-io-2.0.1.jarmons-lang3-3.1.jarmons-logging-1.1.3.jarfreemarker-2.3.19.jarjavassist-3.11.0.GA.jarlog4j-1.2.17.jarognl-3.0.6.jarstruts2-core-2.3.15.3.jarxwork-core-2.3.15.3.jar2、拷贝st

20、ruts.xml配置文件,也可以自己创建,将struts核心包中的struts-default.xml的头部拷贝到文件中3、在web.xml中配置核心控制器StrutsPrepareAndExecuteFilter类,如果是2.18之前,FilterDispatcher.(1)struts2.18之后的配置核心控制器配置如下: filter org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter filter /*(2)如果是struts2.18之前的版本,请参考ppt或者教材。四、表单数据的捕获1、在acti

21、on类中使用基本属性捕获表单数据: (1)表单元素的名字必须与Action类中基本属性名字相同,否则获取不到表单数据的值 (2)action类中必须提供基本属性的setXxx方法,否则获取不到表单数据的值 2、领域对象(VO对象)的方式取值:(1)定义vo类,如果使用该类的对象捕获表单输入,该类的成员变量名必须与表单名相同(2)在action类中定义该vo类对象成员,并提供setXxx、getXxx方法(3)表单元素的名称必须以vo类对象名字作为前导,例如user.username3、模型驱动:(1)定义vo类,vo类的数据成员的名字与表单元素的名字相同(2)在action中定义该类的对象成员

22、并调用该类的无参数构造方法直接初始化(3)action类实现ModelDriven接口,实现接口中的方法将该对象成员返回(4)表单元素的名字与使用基本名称无需对象名引导。更正:struts默认配置中允许使用模型驱动获取表单输入数据。五、关于Action的定义:Action类是业务逻辑控制器,该类在struts2中可以是一个普通类,并定义execute方法,该类就可以作为一个action使用。 但是如果要使用struts2框架提供的一些支持,需要实现Action接口或者继承ActionSupport类。 注意:通常情况下,定义Action最好继承自ActionSupport。 六、Struts2

23、的详细配置:1、默认配置:默认的配置分布在struts-default.xml、default.properties文件中。(1)struts-default.xml:struts2框架的默认配置,有个这个默认的配置,struts2才能完成控制器功能。(2)default.properties: 1)struts.action.extension=action,默认配置,定义了struts2的action被请求时的扩展名, 注意:当使用原始的html时请求action必须带扩展名.action,当使用struts2的标签时以及struts2的配置文件中 不使用扩展名 2)struts.enab

24、le.DynamicMethodInvocation = false:struts2.3默认情况下不允许使用动态方法调用,如果想 使用动态方法调用,必须设置其值为true 3)struts.multipart.maxSize=2097152:允许上传文件的最大尺寸是2MB,如果上传的文件大于2MB,需要更改这个配置。否则 抛异常。 4)struts.objectFactory = spring当struts与spring框架整合后,action的实例的创建交给spring(IoC)(3)struts.xml配置文件:是struts框架的配置文件,用户配置文件: 1)在标记内配置如下: a、:用

25、来配置struts框架的扩展组件,一般无需扩展,不用配置 b、:用来配置常量,常量就是用来设置或者更改default.properties中struts默认属性配置 注意:关于常量的配置的优先级 web.xml struts.propertiesstrutsdefault.properties 总结:关于struts的常量配置可以在以下文件中配置: b-1)web.xml:在核心控制器中通过初始化参数进行配置常量更改默认属性配置,其配置的优先级最高。 b-2)在struts.properties:该文件是用户配置文件,其优先级低于web.xml。通过key=value. b-3)在struts

26、.xml中通过配置。 b-4)使用默认配置,default.properties。 其优先级是b-1b-2b-3b-4. c、:包含其他的struts框架的配置文件,Hibernate思考:对象如何存储?1、内存中2、序列化到硬盘中3、存储到数据库中,在java中数据以对象的方式存在-保存到-关系型数据库中 object-持久化-关系型数据库 开发步骤:1、环境搭建,拷贝jar包,在src目录下(classpath路径)创建hibernate.cfg.xml配置文件,完成连接配置2、创建vo(pojo)类3、在vo包下创建vo与表的映射文件,类名.hbm.xml4、将映射文件加入到hibern

27、ate.cfg.xml中一、Hibernate核心API1、与配置相关的API:(1)Configuration:对象用来加载hibernate框架的配置文件,通过该对象调用configure(),如果配置文件命名为hibernate.cfg.xml,默认被加载,否则使用带参数的方法(2)SessionFactory接口:该接口提供获得session对象的方法,如果要获得SessionFactory实例,通过Configuration的对象调用buildSessionFactory()方法。(3)Session:该对象提供了对对象的CRUD操作,获得Session对象通过SessionFact

28、ory的实例调用openSession()实现。 1)save(Object obj):添加操作 2)get(Class,Serializable):通过指定的持久化标识获得对应的表中记录的对象。如果查不到返回null.不管是否调用返回对象的方法,都会发送查询语句,也称为立即加载 3)load(Class,Serializable):通过指定的持久标识获得对应的对象,如果表中记录不存在会抛异常,默认情况下,如果不调用返回对象的方法,不会发送sql语句 4)delete(Object obj): 5)update(Object obj)(4)Hibernate中对象的三种状态及转换 1)瞬时状态

29、:当使用new调用构造方法创建的对象时,该对象是瞬时对象 2)持久化状态:当该对象获得持久化标识,并纳入session管理,该对象与表中的某一条记录实时联动,该对象就处于持久化状态,对于这个对象的操作实时联动表记录 3)脱管状态:对象具有持久化标识,但是没有纳入session管理,该对象并不与表中的记录实时联动。2、补充:Junit单元测试:程序员在开发后对模块进行的测试,当项目代码提交后测试代码要删除,单元测试环境步骤如下:(1)拷贝junit.jar包(2)定义一个测试类,该类需继承自TestCase(3)在类中编写测试方法,测试方法名必须在开头或者结尾含有test,并且方法的返回值是vo

30、id,没有参数。(4)执行测试方法一、hibernate:ORM工具或者框架,支持以面向对象的方式操作数据库,实现了对象和关系的映射,通过映射实现对象与关系的转换。属于数据持久化技术(数据访问层)。1、hibernate环境搭建:2、hibernate的核心api: (1)与hibernate环境相关的api: Configuration:该类对象使用configure()方法负责加载hibernate配置信息(hibernate.cfg.xml),如果配置文件没有按照规X命名,需要将配置文件名作为参数传入。 SessionFactory:该接口的初始化在Configuration类中buil

31、dSessionFactory()方法实现 Session:该接口可以实现简单的CRUD或者支持复杂的使用标准SQL或者HQL语句实现CRUD。 save(Object obj)/保存对象 delete(Object obj)/删除对象 update(Object obj)/修改对象 saveOrUpdate(Object obj)/保存或者添加对象 get(Class c,id)/无延迟的查询指定持久化标识的对象,如果查到返回对象,如果没查到返回null load(Class c,id)/默认情况下延迟查询对象,如果没查到对象抛出ObjectNotFoundException异常,如果找到对

32、象,在返回的对象调用其成员方法时,会发出查询 指令,否则不发送查询指令。 (2)对象的三种状态: 1)瞬时状态:通过new 调用构造方法创建的对象,或者处于持久化状态的对象被delete。 |-save |-get Session |-load |-iterate |-persist |-update/saveOrUpdate 2)持久化状态:该对象具有持久化标识,并纳入session管理,该对象处于持久化状态,此时对象与表中对应的记录实时关联。 |-clear |-close Session |-evict 3)脱管状态:具有持久化标识,但是没有纳入session管理。 3、Hibernat

33、e配置文件: (1)框架的配置文件可以是xml,也可以是properties,主要是完成连接配置、方言配置、加载映射文件、c3p0数据库连接池等. (2)映射文件,实现某个vo类与表的映射关系 二、hibernate的映射 1、主键生成策略: generator的class属性用来定义主键值的生成策略 (1)increment:首先查询表中主键的最大值,新添加的记录的 主键值在最大值基础上+1,限定条件主键必须是数值型,不适用与集群或者是多用户并发操作时。 (2)native:根据底层数据库的不同自主的采用identity、sequence等策略 (3)identity:适用于MySQL、SQ

34、L Server数据库,当以上两种数据库的表中主键值采用了identity或者是auto_increment时适应此策略 1)例如MySQL的表创建如下: create table t_student ( stuid int primary key auto_increment,-主键自动递增,在添加数据时这个列不用添加值,dbms会自动添加 stuname varchar(10), . ) 2)例如SQL Server的表创建如下: create table t_student ( stuid int primary key identity(1000,1),-主键的自动递增,在添加数据时这

35、个列不用添加值,dbms会自动添加 stuname varchar(20), . ) (3)sequence,序列适用于Oracle、DB2,限定条件数值型, 注意 如果通过Hibernate hql2ddl的方式创建表,那么Hibernate会自动的创建所要使用的序列 如果表事先存在而序列不存在,则需要创建序列后使用该策略,配置如下: 案例:创建课程表,使用sequence生成主键,添加数据测试该策略 (4)assign:用户自己需要设定一个主键值,不建议使用 2、Hibernate关联映射:关联是指通过对一个对象的操作可以级联到其他对象的操作,例如查询某一个部门,可以级联到该部门所有员工。

36、 (1)主键关联一对一(单项与双向)汽车-发动机 (2)外键一对一关联(单项双向) (3)外键一对多(单项双向) (4)外键多对多,由两个一对多关系的组合形成多对多 (一)外键一对一关联: create table userinfo( userid number primary key, truename varchar2(20), address varchar2(30)-创建enginecreate table userlogin(loginid number primary key,username varchar2(20),password varchar2(20),userid nu

37、mber unique,foreign key (userid) references userinfo(userid) 一、什么是HQL:hibernate query language,通过面向对象的方式检索数据库。1、Query接口:发送HQL查询的接口,初始化通过session对象实现,session.createQuery(String hql) 重要的方法如下: 1、 list():将查询获得的对象直接装入List集合中 (1)-查询所有对象的全部的信息:from cic.edu.vo.Emp e;-select * from emp (2)-查询部分杜对象的全部信息 from c

38、ic.edu.vo.Emp e where e.empno=7369 and e.ename=SIMITH (3)-查询部分的信息:select e.empno,e.ename,e.sal,e.m from cic.edu.vo.Emp e,返回list装的是数组 (4)-查询部分信息可以查询构造方法,返回list中装的是对象,select new Emp(e.empno,e.ename,.) from from cic.edu.vo.Emp e (5)-查询中可以使用setParameter(index,value)设置占位符的值,第一个占位符的索引值是0 (6)-分页查询 setFirst

39、Result(startno),再调用setMaxResulst(pageSize),第一条记录的startno的值是0.Criteria:实现条件综合查询 Hibernate缓存:分为session缓存和sessionFactory缓存,session缓存称为一级缓存,针对一次回话;SessionFactory缓存称为二级缓存,针对于整个应用的缓存(1)一级缓存:Session缓存,默认情况下Hibernate使用session缓存,而不启用二级缓存。 1)load():不跨session,先查询session缓存,如果缓存中没有数据,查询数据库。 2)get():不跨session,先查询

40、session缓存,如果缓存中没有数据,查询数据库。 (2)Query 1)list():不使用session缓存 2)iterate():不使用session缓存(3)二级缓存:有称它为sessionFactory缓存,默认情况下Hibernate不启用二级缓存,启用二级缓存后,不经常更新的数据可以放在二级缓存中,如果二级缓存已经存满,数据 通过对象的序列化可以缓存到硬盘上。配置过程如下: (1)在hibernate.cfg.xml:中进行配置: trueorg.hibernate.cache.EhCacheProvider (2)将ehcache.xml拷贝到src目录下 (3)在映射文件

41、中进行如下配置:回顾:1、Struts:基于三层架构(Model/View/Controller)框架,提供了控制层与视图层技术(1)struts1.x(2)struts2.x2、Hibernate:ORM工具或者框架,提供数据持久层(数据访问层)技术。-分析-struts如何使用hibernate完成业务控制层(action)-业务逻辑层(service)-数据访问层(持久层,dao)EmpLoyeeAction- EmpDao dao = new EmpDaoImp(); EmpDaoService service = new EmpDaoServiceImp(dao) service.s

42、etDao(dao); service.-讨论对象的依赖关系: is a-继承 has a-聚集 use a-依赖 dao依赖于service service 依赖于 action -这些依赖对象或者被依赖对象在应用程序中通过new 调用构造方法是创建,并完成依赖关系-以上开发方式有什么弊端: -组件之间的耦合严重,造成维护时繁琐。-现代软件设计思想:高内聚,低耦合。一、spring概述:是一个IoC&DI 与 AOP的框架。 1、IoC: Inverse Of Control,控制反转,对象的创建权由应用程序转移给框架来实现,实现 组件之间的松耦合。 2、DI:依赖注入,实现对依赖对象的注入

43、或者初始化 注意:IoC与DI实际上是一回事。 3、AOP:面向方面或者切面的编程。切面指关注点(日志记录,权限验证等)的模块化,这个模块在不影响主要业务流程的前提下 以透明的方式对主要业务流程进行横切,横切过程就是加入其它业务逻辑的过程。 二、spring工程环境搭建:1、使用MyEclipse工具向导来完成2、手工搭建开发环境: (1)拷贝jar包 (2)拷贝配置文件,文件名任意3、加载配置文件: (1)文件系统的方式加载配置文件,通过new FileSystemApplicationContext(filename|new Stringfiles),filename必须是绝对路径 (2)

44、通过classpath加载配置文件: new ClassPathXmlApplicationContext(filename|new Stringfiles),filename是相对路径,比较常用。 (3)一个系统可以有多个spring配置文件,加载时以上类传入配置文件名所构成的数组。 三、IoC:控制反转,对象的创建由框架负责。 1、使用无参数的构造方法创建。-常用方案 (1)类具有无参数的构造方法,配置如下: (2)在定义bean的同时可以指定其scope属性的值: (1) singleton:单例 (2) prototype:多例 (3)request:requestX围 (4)sess

45、ion:sessionX围 注意:request,session只有在web应用程序中可用。如果没有指定scope的值,默认值为singleton。 2、使用静态工厂完成bean的创建: public class ServiceFactory private ServiceFactory()private static UserDaoService service = new UserDaoServiceImp();public static UserDaoService newInstance()return service; 3、使用实例工厂创建bean: public class ServiceInstanceFactroy public UserDaoService newInstance()return new UserDaoServiceImp(); property name=dao

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!