




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSP/SERVLET/JAVABEAN第一章 JavaEE概述Java平台的版本:Java SE:窗体、控制台应用程序Java ME:嵌入式开发手机、移动设备Java EE:Web ApplicationJava EE的体系结构:1、表示层(HTML、JavaScript、Ajax)2、中间层(JSP、Servlet、JSTL、JavaBean)(Struts)3、数据层(JDBC)(Hibernate)三层体系结构的优点:1、耦合性低2、扩展性好3、重用性好4、便于分工系统集成技术1、JAX-WS 2、JNDIHTTP协议的提交方式1、GET用URL传递数据2、POST 用流的方式传递数据GET和POST的区别:1、GET方式在地址栏中有数据显示,POST没有2、GET提交的数据量有限,POST没有3、GET请求的页面可以设置为书签或通过EMAIL发送,POST不行第二章 Servlet基础什么是Servlet:Servlet是一个Java程序,是在服务器端运行的以处理客户端请求并做出响应的程序。Servlet类一定要继承HttpServlet,Servlet必须和Servlet容器配合运行,Servlet要嵌入容器才能运行。Web应用程序的结构:tomcat-webapps-appName:http:/ip:port/appName/index.jsp1、页面和图片(可以自己组织结构,可以从客户端直接访问,jsp、html、js、jpg)2、WEB-INF目录(必须的,其中的东西不能从客户端直接访问)a、web.xml(必须的,这个Web程序的总体的配置,是一个核心)b、classes文件夹(必须的,Servlet和JavaBean编译成Class后存放于该文件夹)c、lib文件夹(存放该程序用到的类库Jar包)Web.XML中要对Servlet进行一些配置testorg.owl.servlets.TestServlettest/testdoPostdoGetserviceJSP在运行时需要翻译成一个Servlet程序,然后在编译成Class文件,然后才可以运行。Servlet的生命周期由Servlet容器来管理Servlet的生命周期:1、加载和实例化(构造方法):在Web容器中查找用户请求的Servlet,如果没有找到,则实例化,如果找到加载。2、初始化(init):在实例化后调用的方法,可以初始化一些资源。3、服务(service):接收请求并做出响应。根据请求的方式不同,调用doXXX方法。4、销毁(destory):主要用来销毁初始化时创建的资源,在destory方法中我们标识那些资源可以回收,并不能马上回收。加载实例化初始化服务加载服务加载服务销毁HttpServlet基类MyServlet派生类HttpServlet ms = Class.forname(org.owl.MyServlet).getInstance();容器使用Servlet的伪代码HttpServlet s = container.getServlet(name);加载if(s = null) s = Class.forname(org.owl.MyServlet).getInstance();实例化 s.init();初始化 container.setServlet(name,s);s.service(request,response);服务.s.destory();销毁s = null;HttpServletRequest常用方法:getParameter方法:获得页面传过来的数据setCharacterEncoding方法:设置请求的编码字符集setAttribute,getAttribute方法:用于在request中存储一些信息,他们的生命周期就是一个请求的期间。getRequestDispatcher方法:用于获得一个RequestDispatcher对象,应用于请求转发。HttpServletResponse常用方法:setContentType方法:设置响应的字符集和格式sendRedirect方法:重定向。getWriter方法:获得向客户端输出字符信息的对象。RequestDispatcher常用方法forward方法:请求转发include方法:服务器端包含重定向:客户端发送请求到服务器端,如果服务器端需要重定向,那么将需要重定向到的地址发送给客户端,客户端再向该地址提出请求。请求转发:客户端发送请求到服务器端,如果服务器端需要请求转发,那么服务器端直接把请求传送给另一个servlet或jsp,由其向客户端返回响应。请求转发(request.getRequestDispacther(1.jsp).forword(request,response)与重定向(response.sendRedirect(1.jsp)的区别1、重定向地址栏地址改变,请求转发不变;2、重定向可以跳转到站外页面,请求转发不能;3、重定向不能保存request中的数据,请求转发可以。第三章 基于Servlet的会话跟踪(一)HTTP协议无状态Session指的是在一段时间内,单个客户与Web服务器之间一连串相关的交互过程Session是通过SessionID来确认是否是一个session过程Session是一个HttpSession类的实例。通过request的getSession方法来获取Session无参数的方法和参数是true方法是一样的,获取匹配的Session,如果无匹配,返回一个新的Session对象。如果参数是false的话,如果无匹配的Session,返回null使用Session利用其setAttribute设置session,使用其getAttribute方法来获取session中的内容。结束一个Session1、关闭浏览器2、当两次访问的时间超过了Session的最大非活动时间间隔3、调用Session的invalidate方法使一个Session无效由于Session的易失性,在获取数据后要进行判断。第四章 基于Servlet的会话跟踪(二)常用的集合类和接口集合类分为两种:1、Collection(单一元素的集合)2、Map(键值对的集合)Collection1、List(有序、元素可以重复)ArrayList、LinkedList2、Set(无序、元素不能重复)HashSet、TreeSetMapHashMap、Properties第五章 基于Servlet的MVC设计模式设计模式使一套被反复使用,成功的代码设计经验的总结。MVC设计模式1、M(Model)模型:JavaBean2、V(View)视图:JSP3、C(Controller)控制器:Servlet优点:1、各施其职、互不干涉2、有利于开发中的分工3、有利于组件的重用客户端提交请求到C,C获取客户端数据,根据不同的请求调用不同的M,并获得M的结果,根据结果的不同,选择不同的V,V将结果显示给客户端。V:显示数据,与客户端交互C:获取客户端数据;调用M;选择VM:业务逻辑;数据库访问第六章 Model层开发:高级JDBC我们需要什么样的数据访问层:1、完成CRUD操作2、能够处理数据库发生的各种错误(自定义异常)3、可以灵活的修改配置(配置文件)4、提供方便使用的工具(通用DAO)5、高性能(数据库连接池)连接池:一个存放着很多连接的容器。数据源:对容器进行管理的对象JNDI:获取数据源的方式在Tomcat中配置连接池并使用:1、将驱动Jar放入Tomcat中的lib目录(如果是5.0的话,放入tomcat中的common中的lib目录);2、修改Tomcat中conf目录中的context.xml配置文件,加入一个Resource标签。3、在自己项目中的Web.xml中配置Resource-ref标签4、编写程序,获取数据源import javax.naming.*;Context ctx = new InitialContext();DataSource ds = (DataSource)ctx.lookUp(java:comp/env/jdbc/book);Connection cn = ds.getConnection();如果JNDI名字是jdbc/booklookUp方法中的名字应写成:java:comp/env/jdbc/book属性文件:*.properties因为Java中有一个类Properties可以用这个类的load方法直接读取*.properties文件。属性文件如何存储:键值对的方式,key=value一行一个键值对public class Sssprivate static Sss ss = null;private Sss()private syn void Init()if(ss = null)ss = new Sss();public static Sss getInstance()Init();return ss;Sss ss = Sss.getInstance();自定义异常:所有的异常的父类:ThrowableException就是Throwable的子类throw关键字用于抛出异常,throws关键字用于将方法中的异常传递给调用类来处理。自定义异常可以让我们更方便的看懂异常信息通用DAO类Result相当于C#中的DataTableResultSupport相当于C#中的DataAdapter第七章 View层开发:JavaBean在JSP中的使用JavaBean实际上就是一个Java类1、封装数据2、封装业务JavaBean要满足的要求:1、公有类,公有的无参的构造方法2、属性私有(field)3、公有的Getter和Setter方法。属性,特性(property)根据Getter和Setter方法来的1、将Getter和Setter方法中的get和set去掉,剩下的部分首字母变为小写例如,getName,setName,属性名为name2、如果剩下的部分前两个字母都是大写,那么首字母不变为小写例如,getUName,setUName,属性名为UNameJSP标准动作1、useBean:( ):获取或者创建JavaBean对象id必须有的,代表JavaBean的变量名class一个类型,新创建出来的JavaBean的数据类型type一个类型,获取对象以后将其转换为那种类型scope作用域,可选的参数,默认值是pageclass和type必须得有一个,不能都没有,但是可以都有,type和class可以不一样,type指定的类型一定是class指定的类型的父类或者其实现的接口。scope有四个值:从小到大page,request,session,applicationUser test = (User)session.getAttribute(test);if(test = null)test = new User();session.setAttribute(test,test);Person test = (Person)session.getAttribute(test);if(test = null) throw new Exception();Person test = (Person)session.getAttribute(test);if(test = null)test = new User();session.setAttribute(test,test);2、setProperty:给JavaBean对象的属性赋值。name必须有,对应的是JavaBean的名称,(例如useBean标签的id属性的值)property必须有,指定的JavaBean的属性(property)名称value给属性赋的值param上一页表单的表单元素的名字不使用useBean的时候,也可以使用setPropertyvalue属性和param属性不可以同时出现,要么只能出现一个,或者一个也不出现。都不出现时,只要上一页表单元素的名称和属性名称正好相同,那么可以自动给属性赋值。还可以给property属性赋值为*,那么就会将上一页所有的与JavaBean属性名称相同的表单元素的值赋给JavaBean相对应的属性。test.setName(tom);test.setName(request.getParameter(userName);test.setName(request.getParameter(name);3、getProperty:获取指定JavaBean的某个属性的值并输出name必须有property必须有如果property指定的属性的值是null,会输出null如果name指定的对象的值是null,会抛出异常4、forward:请求转发page:转发到的页面地址Model IJSP+JAVABEAN中小型项目Model II JSP+JAVABEAN+SERVLET大型项目第八章 View层开发:EL和JSTLJSP 2.0版本开始语法:$ 表达式 点号操作符,中括号操作符中括号操作符可以替换点号操作符,但是反之不可以$ 等价于$beanname$beans0,$beans0EL的隐式对象作用域:pageScoperequestScopesessionScopeapplicationScope参数访问:paramparamValuesJSP隐式对象:pageContext$$paramValues0JSTLJSP标准标签库非常好的支持EL,或者说没有EL,JSTL不能正常运作标签描述文件扩展名tld要使用必须在页面上面添加taglib指令核心标签库(默认的前缀是c) 通用标签 set获取或者创建JavaBeanvar变量名value值(EL)scope作用域 remove删除JavaBean对象var变量名scope作用域 out输出一个值value输出的值(EL) 条件标签 if条件分支test布尔类型的值(EL),当test的值是true的时候运行标签体中的代码var变量名scope作用域 迭代标签 foreach迭代循环var变量名(迭代变量)items集合(EL)varStatus循环状态变量(属性:index从零开始,count从1开始)start开始索引end结束索引step步长SQL标签库(默认的前缀是sql) setDataSource创建或者获取数据源 update增删改 query查询 param是update和query的子标签,用于给其中的sql语句设置参数第九章 Web服务Web服务是为实现“基于Web无缝集成”的目标而提出的全新概念,希望通过Web服务能够实现不同的系统之间的相互调用,从而实现系统集成的平台无关性、语言无关性。Web服务是一个应用程序,它为调用者提供一个能够通过Web进行调用的API。Web服务应用的协议:HTTP、SMTP、TCP/IP传输的数据格式:XML数据格式限制协议:SOAP让调用者知道如何访问发布的Web服务,描述方法:WSDL(方法名,方法参数,参数的数据类型,返回值,返回值的数据类型)如何利用XFire创建Web服务1、加入XFire的Jar包2、在Web.xml中配置XFire3、开发接口4、开发实现类5、编写services.xml6、发布Web服务7、调用Web服务JUnit测试测试类一定要继承或者间接继承TestCase类测试方法一定要叫做testXXX开发基于Struts/Spring/Hibernate/Ajax的网上信息发布平台第一章 框架技术概述框架是一个提供了可重用的公共结构的半成品框架的优点(为什么使用框架)1、不用再考虑公共问题2、可以专心在业务逻辑上3、结构统一,便于学习和维护4、新手也可以写出稳健、性能优良而且结构优美的高质量程序第二章 Struts原理(一)创建应用Struts的程序需要的步骤:1、添加Struts支持(准备过程)添加Struts的Jar包在Web.xml中配置ActionServlet在WEB-INF中添加Struts-Config.xml配置文件2、编写业务逻辑3、编写Struts组件 a、编写ActionForm(FormBean)ActionForm实际上对应的是表单,理论上有几个表单就有几个ActionFormFormBean的类一定要继承ActionForm这个类要写与表单元素对应的属性,属性名称要与表单元素的名称一致承担了一个将客户端传上来的数据封装起来的作用 b、编写Action(ActionBean)是ActionServlet的扩展所有的ActionBean的类都要继承Action这个类要重写Action中的execute方法参数:ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse返回值:ActionForward c、编写JSP d、配置Struts-config.xml配置FormBean在form-beans标签体中,配置form-bean标签nameformbean的名称typeformbean的完全限定名配置ActionBean在Action-Mappings标签中配置Action标签path代表Action的访问路径,必须以/开头typeActionBean的完全限定名name与这个Action相关的FormBean的名称scope相关的FormBean的存入的作用域attribute相关的FormBean存入作用域时使用的名称input表明由谁来访问此Action,主要作用是当出错时可以自动跳转到该路径,也必须以/开头在Action标签中配置Forward标签nameforward对象的名称pathforward对象对应的路径,必须以/开头4、调试运行Struts包括三种组件控制器组件:ActionServlet和自定义的Action模型组件:业务逻辑类和数据访问类视图组件:JSP、ActionForm和Struts标签运行原理:客户端发送请求到ActionServlet(比如在web.xml中设置的url-pattern是*.do,那么所有的以.do结尾的请求都会发送给ActionServlet)ActionServlet将.do去掉获得请求的名称(如add.do的话,就取出add)ActionServlet将去struts-config.xml中查找所有的Action配置中path属性是/add的配置然后ActionServlet取出该配置中的type属性,利用反射创建出该类对象,试图去调用其execute方法execute方法有四个参数,要构建出来创建ActionMapping:将刚才找到Action配置转换成为一个ActionMapping的对象,包括配置中的Forward集合创建ActionForm:从该Action配置中找到name属性,取出其值,去所有的FormBean配置中查找name属性值相同的FormBean配置,然后取出其type属性,用反射创建该FormBean对象。根据该FormBean的属性名称去request中取表单传过来的数据,并为其属性赋值。这样就可以调用ActionBean的execute方法了execute方法返回一个ActionForward对象。(从ActionMapping的Forwards集合中利用forward的名称查找出来的)ActionServlet根据该ActionForward对象的path跳转到相应的JSP(请求转发)第三章 Struts原理(二)DispatchAction是Action的一个子类使用:1、自定义Action类要继承DispatchAction2、Action配置中要加入一个属性parameter(必须加)3、DispatchAction中不推荐实现execute方法4、其中的方法虽然和execute方法基本一样,但是名字不能叫做execute例如,parameter属性的值为op在客户端提出请求的时候要多传一个op参数过来,例如op=add(可以利用url重写,也可以利用隐藏表单域)DispatchAction得到op参数后,会根据其值自动调用相应的方法。例如op=add的话就会去调用Add方法。在Struts中有一个资源文件,利用他可以实现国际化资源配置struts-config.xml中配置com.aptech.jb.Messages主资源文件com.aptech.jb.Messages_zh_CN中国中文资源文件com.aptech.jb.Messages_en_GB英国英文资源文件资源文件转码我们可以利用native2ascii命令利用ActionMessages类作为错误消息的集合利用ActionMessage类作为错误消息利用Action类提供的saveErrors方法来存储错误集合错误集合是存储在request中的在JSP中利用标签来显示错误信息如果要单独显示某一条错误信息,为该标签制定property属性errors.header=errors.footer=error.validate.number=cuole动态Form配置调用DynaActionForm f = (DynaActionForm)form;String str = (String)f.get(xxx);理用实体对象作为ActionForm的属性作为属性的实体类必须得实例化。如:private User user = new User(); private String name; 在页面表单上怎么写写Formbean的属性名称加上点,再加上formbean的属性的属性名称如:第四章 Struts标签库HTMLform标签(默认是post提交,action属性中可以直接写Action配置中path属性的值)Select标签-option标签optionsCollectionname从某个作用域中取出的某个对象的名称(集合)label显示的属性名称(集合中存储的元素的类中用于显示的属性名)value作为值的属性名称。一旦用了Struts的HTML标签,这些HTML标签会在第一次访问该页面时就去查找表单对应的FormBean的属性的值。LOGICempty标签和notEmpty标签:判断某个作用域中的某个对象或其某个属性是否为nullnameuserscopesessionpropertynameequal和notEqual标签:判断某个作用域中的某个对象或其某个属性是否和特定的值相等nameuserpropertynamevaluetomscopesessioniterate标签:迭代idusernameclassscopesessionpropertyusersBEANwrite标签:输出某个作用域中的某个对象或其某个属性的值name:userproperty:birthdayscope:sessionformat:yyyy-MM-dddefine标签:将某个作用域中的某个对象或其某个属性定义一个可以在页面中使用的变量id:userNameproperty:nametype:org.owl.Username:userscope:sessionsize标签:取出集合的元素个数,不具备输出功能id:listSizename:(集合)list属性总结:id:新生成的变量的名称name:某个作用域中的某个对象的名称property:某个对象的某个属性名称scope:某个作用域第五章 使用Hibernate完成对象持久化持久化的概念:数据在瞬时状态和持久状态之间转换的过程。ORM的概念:对象关系映射Hibernate是一个持久化框架,是一个优秀的ORM框架使用Hibernate的基本步骤三个准备1、导入需要的Jar文件2、准备Hibernate的配置文件(hibernate.cfg.xml)a、dialect(方言)确定使用那种数据库b、数据库的连接信息Driver、Url、userName、passwordc、一些Hibernate的特殊配置show_sqld、mapping标签,resource属性:指定映射文件的位置3、创建实体类和映射文件(*.hbm.xml)a、实体类就是简单的POJO类:b、映射文件:根元素:hibernate-mappingclass标签:(一个实体类)name:实体类的完全限定名(org.owl.entity.User)table:与之对应的表名(Users)id标签:(主键)name:实体类中的属性名(id)type:类型(java.lang.Integer)column:表中的主键列的列名(UserId)generator子标签(主键生成策略)class:native(交给数据库自己管理),assgined(我们程序决定主键)property标签:(普通列)name:(name)type:(java.lang.String)column:(UserName)七个步骤1、Configuration(读取并解析配置文件)Configuration conf = new Configuration().configure();2、SessionFactory(读取并解析映射文件)SessionFactory sf = conf.buildSessionFactory();3、Session(打开Session)Session s = sf.openSession();4、beginTransaction(开启事务)Transaction tx = s.beginTransaction();5、save/update/delete/get(持久化操作)s.save(obj);6、commit(提交或回滚事务)mit();7、Session.close(关闭Session)s.close();第六章 Hibernate的关联映射单向的多对一配置在多的一方单向的一对多配置在一的一方双向的一对多Clazz表(clazzId,clazzName)Student(stuId,stuName,stuClassId)一的一方(班级)多的一方(学生)实体类ClazzStudent,将外键列的属性去掉要存储多的一方对象的集合要存储一的一方的一个对象作为自己的属性Set stus = new HashSet();Clazz clazz;映射文件Clazz.hbm.xmlStudent.hbm.xml配置Set配置many-to-oneSet标签的属性many-to-one属性: name:储存对方对象name:存储对方对象的属性名(clazz) 集合属性的名column:外键列的名称(stuClassId) 称(stus)class:对方的类名(org.owl.Clazz) key子标签:column:外键列名是Student表的字段(stuClassId) one-to-many子标签:class:表示你存储的对方对象类的完全限定名(org.owl.Student)双向的多对多Teacher(tId,tName)Student(sId,sName)TS(ts_tId,ts_sId)多的一方多的另一方实体类TeacherStudent存储另一方的对象集合存储一方的对象集合Set stus = new HashSet();Set teas = new HashSet();映射文件Teacher.hbm.xmlStudent.hbm.xmlSet标签Set标签 name:存储另一方对象集 name:(teas) 合属性的属性名 table:(TS)(stus) key子标签: table:中间表表名(TS)column:(ts_sId) key子标签: many-to-many子标签column:中间表中class:(org.owl.Teacher)与当前表对应的外键column:(ts_tid)列列名(ts_tId) many-to-many子标签:class:另一方的类名(org.owl.Studnet)column:中间表用与另一方表相关联的外键列列名(ts_sid)select * from student where sId in( select ts_sId from Teacher,TS where tId = ts_tId and tId = 1)cascade:级联的意思(none,all,save-update,delete)默认是none。inverse:反转:(true不管理,false管理)第七章 Hibernate查询HQL查询Session session = super.getSession();String hql = from Student;Query query = session.createQuery(hql);List list = query.list();hql语句和SQL语句很相似,只不过表名将有实体类名代替,列名由实体类的属性名代替所有涉及到类名和属性名的地方均大小写敏感,其他地方大小写不敏感。如果查询所有字段,会返回一个存储实体类对象集合的List并且Hql语句不用些Select段语句。from Studentselect s from Student s如果不是查询所有字段,会返回一个存储了对象数组的集合List并且Hql语句需要由Select段,最好给实体类起别名例如:Select stu.stuName,stu.stuAge from Student stu如果是上面的写法将会返回一个集合,集合中存储的元素是对象数组,这个数组有两长度,分别存储stuName和stuAgeHql还可以动态指定参数在Hql中参数可以用?表示,也可以用:名称表示然后利用query的setXXX来赋值,XXX是数据类型,如果用?好站位就给索引位置,索引从0开始如果用名称站位呢,就给出名称String hql = from Student where stuName like ?;Query q = session.createQuery(hql);q.setString(0,%a%);String hql = from Student where stuName like :name;Query q = session.createQuery(hql);q.setString(name,%a%);Query有两个方法,一般用于分页setFirstResult(数字);开始位置的索引setMaxResults(数字);最大取出条数uniqueResult方法只取出一个结果。Criteria查询Session session = super.getSession();Criteria c = session.createCriteria(Student.class);List list = c.list();c.add(Restrictions.like(stuName,a,MatchMode.ANYWHERE));like的第一个参数是属性名称,第二个参数是比对的值,第三个参数是比对方式,ANYWHERE代表前后就有任意字符c.add(Restrictions.ge(stuAge,10);ge的第一个参数是属性名称,第二参数是比对的值c.addOrder(Order.asc(stuId);排序第八章 使用Spring容器管理对象依赖注入DI依赖注入IOC控制反转依赖:一个类方法的实现会跟据另一个类的方法实现的改变而改变,那么前一个类依赖于后一个类所以要面向接口编程而不是面向实现编程。编程时要依赖于抽象,而不是依赖于实现。依赖注入:实现与使用分离(利用接口)。Spring实现了依赖注入(利用Setter方法实现注入,利用配置文件来组装)注意:applicationContext.xml的配置Office office = new Office();office.setAddress(白羊大厦);Boss boss = new Boss();boss.setOffice(office);面向方面编程(AOP)目的:将与业务逻辑的一些方面提取出来统一处理,让工作者更加专注与业务逻辑Spring实现了AOPSpring通过代理模式实现了AOP三个东西:1、原Bean:(原来没有任何修饰的业务逻辑类)2、通知:(统一提取出来的方面处理代码)3、代理:(代理原Bean,加入通知,最后使用的是代理)原bean早就准备好了(原来怎么些现在还怎么写)通知必须实现Spring准备好的一些接口(前置通知、后置通知、环绕通知和异常通知):MethodBeforeAdvice(前置通知,接口)实现before方法三个参数:Method m,Object args,Object targetm:原Bean中,被通知的方法的方法对象args:传入该方法的参数的集合。target:原Bean的对象配置AOP:org.owl.IYuanadvice第九章 Spring与Struts、Hibernate的集成Spring和Hibernate的集成:有两种选择:1、保留Hibernate.cfg.xml如果保留的话,在applicationContext.xml中配置sessionFactory即可,在其属性中给出Hibernate配置文件的地址。configLocationclasspath:hibernante.cfg.xml2、不保留Hibernate.cfg.xml如果没有保留,在applicationContext.xml中要先配置一个DataSource,在其中给出连接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- xx市供热管网改造工程建设工程方案
- 2025-2030年新能源汽车充电设施行业技术发展与应用前景研究报告
- 工程混凝土管桩施工方案
- 古街道建筑调色方案设计
- 河南机电专业单招试题及答案
- 第十四课 能识路的机器人说课稿-2023-2024学年小学信息技术(信息科技)六年级下册川教版
- 法语专业应考试题及答案
- 19.1 1 变量与函数(第1课时 变量与常量)(说课稿)八年级数学下册同步高效课堂(人教版)
- DB65T 4464.5-2021 退化草地修复治理技术规范 第5部分:高寒草甸类
- 宠物烘焙师考试题及答案
- 低空旅游项目基础设施建设与可行性研究报告
- 2025至2030年中国晶质石墨深加工行业市场调查研究及投资战略咨询报告
- 船舶电气小知识培训课件
- 普及鸽子的课件
- 浙江省G12名校协作体2025学年第一学期9月高三上学期开学联考地理试卷
- Unit 2 My friends (Period 1) 课件2025-2026学年人教版英语四年级上册
- 2025版酒店租赁经营合作协议模板:2025年度版
- 2025年烟草专卖局公开遴选面试高分策略及模拟题答案
- 一般性生产经营单位安全管理员主要负责人考核试题及答案
- 乳制品行业智能化奶源管理与追溯方案
- 恒瑞医药2023ESG社会责任报告:关注员工成长共建美好家园
评论
0/150
提交评论