




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Servlets Servlets Servlets是基于Java的一种技术和标准。它是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlets由Web服务器进行加载,该Web服务器必须包含支持Servlets的Java虚拟机。Servlets是JSP的基础。Servlets Servlets Servlets是用Java代码编写的服务器端软件程序,能够动态扩展Web服务器功能,用于处理客户机和服务器之间的消息传递。Java Servlet API 为请求和响应消息定义了一个标准接口,这样 Servlets 就可以跨平台,在不同的 Web
2、 应用服务器间移植。Servlets Servlets Servlets是当今万维网上使用最频繁的J2EE组件,其结构和设计都很简洁和轻巧,大多数Web开发人员都把Servlets作为Web客户访问服务器应用的主入口点,而且只要客户端有足够的清理权限,Servlets就允许客户端控制服务器添加或删除Web页面或文件。Servlets Servlets 从理论上讲,Java能做的事情,Servlets也能做。但Web开发人员不会只使用Servlets来构建所想要的一切,因为用Servlets处理复杂的Web交互、事务处理、数据库同步及其他内部逻辑并不是一个非常切实可行的途径,和传统的CGI、IS
3、API(Internet Server Application Programming Interface,Internet 服务应用程序编程接口)、NSAPI(Netscape Server Application Programming Interface,网景服务器应用程序编程接口)方式相同,Servlets也是利用输出HTML语句来实现动态网页,如果用它来开发整个网站,动态部分和静态页面的整合过程将变得无法想像。这就是Sun还要推出JSP的原因。Servlets主要负责处理小型任务,如:收集和验证用户输入,但几乎不进行实际处理;协调输出,但几乎不直接生成动态Web页面的内容;少量的业务
4、逻辑。JAVAJAVA ServletsServlets为什么优于传统的为什么优于传统的CGICGI JAVAServlets比传统的CGI或其它CGI类似替代技术来说,效率更高,使用更方便,功能更强大,更小巧也更便宜; 1)1)效率效率 传统CGI对每一个HTTP请求都要产生一个新的进程。如果某个CGI程序是一个执行非常快的操作,打开进程的时间也许占用了大部分执行时间。而对JAVAServlets来说,在JAVA虚拟机上,每一个请求由一个小JAVA线程(thread)响应,而不是一个大操作系统进程。类似地,传统CGI如果对同一个CGI程序有N个同时请求,这个CGI程序的代码将被导入内存N次。
5、JAVAServlets产生N个线程,但只有一个JAVAServletsCLASS的copy。同时JAVAServlets比CGI有更多的优化选择,象预先计算,打开数据库连接等。 2)2)方便方便 JAVAServlets能自动的粘贴和解码HTML表单数据,读和设置HTTP头,处理COOKIES,跟踪SESSIONS,等其它大量功能。 3)3)强大的功能强大的功能 JAVAServlets可以很容易的实现对CGI来说是不可能或很困难的事务。JAVAServlets能直接和服务器进行通讯而CGI是不能的。 4)JAVA4)JAVA ServletsServlets之间能共享数据之间能共享数据 很
6、容易实现诸如数据库连接池。它能方便的实现管理从REQUEST到REQUEST请求,简化SESSION和获取前一页面。而CGI之间通讯差,由于每个CGI程序的调用都开始一个新的进程,调用间通讯通常要通过文件进行,因而相当缓慢。同一台服务器上的不同CGI程序之间的通讯也相当麻烦。 5)5)调用时间调用时间 CGI程序是作为单独过程运行的,通常调用时间较长,这个间接成本在每次调用的时候都要发生。在使用解释器的时候调用时间会更长。而内存中的Servlet可以非常迅速地加载。 6)6)安全安全 有些CGI版本有明显的安全弱点。即使是使用最新的标准和PERL等语言,系统也没有基本安全框架,而要靠一组事实上
7、的规则。而java定义有完整的安全机制,包括ssl,ca认证,安全政策等规范。 7)7)小巧小巧 JAVAServlets使用JAVA编写,遵循标准API。它能直接或借助插件在几乎所有WEB服务器上运行。 8)8)价格低价格低 显然,有很多都是FREE。 ServletsServlets的一些应用范围的一些应用范围 1)用于处理HTML表单:通过HTTP产生POSTed数据,包括买卖订单或信用卡数据。因此servlets可以成为订单处理系统的一部分,和产品存货数据库一道工作,也许可以用在在线支付系统上。2)允许人们之间的合作:一个servlets能并发处理多个请求;他们可以使用在诸如在线会议这
8、样的同步请求支持系统。ServletsServlets的一些应用范围的一些应用范围 3)转送请求:Servlets可以转送请求给其他的服务器和servlets。这就允许在镜象同样内容的几个服务器之间平衡负载。按照任务类型或组织范围,可以允许被用来在几个服务器中划分逻辑上的服务器。 4)servlets编写者们可以定义彼此之间共同工作的激活代理,每个代理者是一个servlets,而且代理者能够在他们之间传送数据。 Servlets Servlets 8.1 8.1 ServletsServlets的结构的结构8.8.2 Servlets2 Servlets的接口的接口 8.8.3 Servlet
9、s3 Servlets的生命周期的生命周期 8.8.5 5 调用调用Servlets Servlets 8.48.4 JSPJSP与与ServletsServlets 8.8.6 Servlets6 Servlets的开发的开发 8.1 8.1 ServletsServlets的结构的结构 Servlets可直接从浏览器客户端访问调用,然后完成一些商业逻辑,比如数据库访问、计数等。Servlets可以像普通的CGI脚本一样接收GET或POST请。 8.1 8.1 ServletsServlets的结构的结构(Servlets(Servlets程序程序) )importjava.io.*;imp
10、ortjavax.servlet.*;importjavax.servlet.http.*;publicclassHelloWorldextendsHttpServletpublicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOExceptionres.setContentType(text/html);PrintWriterout=res.getWriter();out.println(HelloWorld!);out.println(HelloWorld);out.printl
11、n();out.close();8.1 8.1 ServletsServlets的结构的结构(Servlets(Servlets程序程序) ) 该Servlets处理的是GET请求,所谓的GET请求,如果不熟悉HTTP,可以把它看成是当用户在浏览器地址栏输入URL、单击Web页面中的链接、提交没有指定METHOD的表单时浏览器所发出的请求。Servlets也可以很方便地处理POST请求,POST请求是提交那些指定了METHOD=post的表单时所发出的请求。8.1 8.1 ServletsServlets的结构的结构(Servlets(Servlets程序程序) )HelloWorld的基类是
12、HttpServlet,HttpServlet实现了Servlet接口,HttpServlet继承GenericServlet类,GenericServlet实现Servlet接口,Servlet包含所有与Servlet相关的接口和类,最常用的是HttpServlet,如图所示。8.1 8.1 ServletsServlets的结构的结构(Servlets(Servlets程序程序) )如果某个类要成为Servlets,则它应该从HttpServlet继承,根据接受的信息是通过GET还是POST发送,覆盖doGet、doPost方法之一或全部。doGet和doPost方法都有两个 参 数 ,
13、分 别 为 H t t p S e r v l e t R e q u e s t 类 型 和HttpServletResponse类型。HttpServletRequest提供访问有关请求信息的方法,例如表单数据、HTTP请求头等。HttpServletResponse除了提供用于指定HTTP应答状态(200,404等)、应答头(Content-Type,Set-Cookie等)的方法之外,最重要的是它还提供了一个用于向客户端发送数据的PrintWriter()方法。对于简单的Servlets来说,PrintWriter()方法的大部分工作是通过println语句生成向客户端发送的页面。8.
14、1 8.1 ServletsServlets的结构的结构(Servlets(Servlets程序程序) )在编写Servlets时要注意doGet和doPost抛出两个异常,因此必须在Servlets声明中包含它们;另外,还必须导入java.io包(要用到PrintWriter等类)、javax.servlet包(要用到HttpServlet等类)及javax.servlet.http包(要用到HttpServletRequest类和HttpServletResponse类)。doGet和doPost这两个方法是由service()方法调用的,有时可能需要直接覆盖service()方法,譬如S
15、ervlets要处理GET和POST两种请求时。8.8.2 Servlets2 Servlets的接口的接口 JavaServletsAPI在两个Java扩展包中定义:javax.servlet和javax.servlet.http包。在这两个包中,javax.servlet包中定义的类和接口是独立于协议的;而第二个包javax.servlet.http中包含了具体于HTTP协议的类和接口。Javax.servlet.http包中的某些类/接口扩展继承了某些java.servlet包中的类/接口。8.8.2 Servlet2 Servlet的接口的接口在JavaServletAPI中最重要的是
16、Servlet接口(interface),Servlet接口定义了几个方法用于初始化一个Servlets、接受客户的请求、响应客户的请求等。8.8.2 Servlets2 Servlets的接口的接口Servlets接口的定义如下:PublicinterfaceServlet/释放Servlets所占用的全部资源(如:内存、线程等)Publicabstractvoiddestroy();/返回一个Servlets的设置对象,该对象包含了该Servlets的所有初始化参数和启动设置PublicabstractServletConfiggetServletConfig();/初始化Servlets
17、。Publicabstractvoidinit(ServletConfig)throwsServletException;/执行一个来自客户端的请求Publicabstractvoidservice(ServletRequest,ServletResponse)throwsServletExceptionIOException;8.8.2 Servlets2 Servlets的接口的接口所有的Servlets都必须实现该Servlet接口,实现的途径有很多:一是直接实现该接口,二是通过扩展类(class)来实现,如HttpServlet(HttpServlet继承GenericServlet类
18、;GenericServlet实现Servlet接口)。这个Servlet接口提供了Servlets与客户端联系的方法。Servlets编写者可以在开发Servlets程序时提供部分或者所有方法。8.8.2 Servlets2 Servlets的接口的接口 HttpServlet类扩展了GenericServlet,并且提供了Servlet接口中具体于HTTP的实现。它更像是一个其他Servlet都要扩展的类。这个类定义了下面的这些方法。8.8.2 Servlets2 Servlets的接口的接口HttpServlet类中有两种形式的service()方法。Publicvoidservice(
19、ServletRequestrequest,ServletResponseresponse)throwsServletException,IoException它是GenericServlet中的service()方法的实现。这个方法把request和response对象分别转换成HttpServletRequest和HttpServletResponse,并且调用下面这个重载的service()方法。Protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)这个重载的方法用具体于HTTP的reques
20、t和response对象作为参数,并且由上面的第一种方法来调用。HttpServlet实现这个方法后就成为一个HTTP请求分发者。service()方法把请求代理给doGet(),doPost(),doOptions(),doDelete(),doPut()或doTrace()之一。8.8.2 Servlets2 Servlets的接口的接口doGet doGet 用来处理用来处理HTTPHTTP的的GETGET请求请求这个GET操作仅仅允许客户从HTTP server上取得(GET)资源。重载此方法的用户自动允许支持方法HEAD。这个GET操作被认为是安全的,没有任何的负面影响,对用户来说是
21、很可靠的。比如,大多数的正规查询都没有副作用。打算改变存储数据的请求必须用其他的HTTP方法。这些方法也必须是个安全的操作。方法doGet的缺省执行将返回一个HTTP的BAD_REQUEST错误。 8.8.2 Servlets2 Servlets的接口的接口 方法方法doGetdoGet的格式:的格式:protected void doGet(HttpServletResquest request, HttpServletResponse response)throws ServletException,IOException;8.8.2 Servlets2 Servlets的接口的接口doP
22、ost doPost 用来处理用来处理HTTPHTTP的的POSTPOST请求。请求。 这个POST操作包含了在必须通过此Servlet执行的请求中的数据。由于它不能立即取得资源,故对于那些涉及到安全性的用户来说,通过POST请求操作会有一些副作用。8.8.2 Servlets2 Servlets的接口的接口 方法方法doPostdoPost的格式:的格式:protected void doPost(HttpServletResquest request, HttpServletResponse response)throws ServletException,IOException; 8.8
23、.2 Servlets2 Servlets的接口的接口doPutdoPut用来处理用来处理HTTPHTTP的的PUTPUT请求请求 此PUT操作模拟通过FTP发送一个文件。对于那些涉及到安全性的用户来说,通过PUT请求操作也会有一些副作用。 8.8.2 Servlets2 Servlets的接口的接口 方法方法doPutdoPut的格式的格式:protected void doPut(HttpServletResquest request,HttpServletResponse response)throws ServletException,IOException;8.8.2 Servlet
24、s2 Servlets的接口的接口doDeletedoDelete用来处理用来处理HTTPHTTP的的DELETEDELETE请求请求 此操作允许客户端请求一个从server移出的URL。对于那些涉及到安全性的用户来说,通过DELETE请求操作会有一些副作用。 当编写servlet时,为了支持DELETE操作,必须在子类HttpServlet中实现(implement)此方法。8.8.2 Servlets2 Servlets的接口的接口 方法方法doDeletedoDelete的格式:的格式:protected void doDelete (HttpServletResquest reques
25、t, HttpServletResponse response) throws ServletException,IOException;8.8.2 Servlets2 Servlets的接口的接口doHead doHead 用来处理用来处理HTTPHTTP的的HEADHEAD请求请求 缺省地,它会在无条件的GET方法执行时运行,但是不返回任何数据到客户端。只返回包含内容信息的长度的header。由于用到GET操作,此方法应该是很安全的(没有副作用)也是可重复使用的。此方法的缺省实现 (implement)自动地处理了HTTPDE的HEAD操作并且不需要通过一个子类实现(implement)。
26、8.8.2 Servlets2 Servlets的接口的接口 方法方法doHeaddoHead的格式:的格式:protected void doHead (HttpServletResquest request,HttpServletResponse response) throws ServletException,IOException; 8.8.2 Servlets2 Servlets的接口的接口doOptionsdoOptions用来处理用来处理HTTPHTTP的的OPTIONSOPTIONS请求请求 此操作自动地决定支持什么HTTP方法。比如说,如果创建HttpServlet的子类并
27、重载方法doGet,然后方法doOptions会返回下面的header:Allow:GET,HEAD,TRACE,OPTIONS一般不需要重载方法doOptions。8.8.2 Servlets2 Servlets的接口的接口 方法方法doOptionsdoOptions的格式:的格式:protected void doOptions HttpServletResquest request, HttpServletResponse response)throws ServletException,IOException;8.8.2 Servlets2 Servlets的接口的接口doTrace
28、doTrace用来处理用来处理HTTPHTTP的的TRACETRACE请求请求 此方法的缺省实现产生一个包含所有在trace请求中的header的信息的应答(response)。在开发servlet时,多数情况下需要重载此方法。 8.8.2 Servlets2 Servlets的接口的接口 方法方法doTracedoTrace的格式:的格式:protected void doTrace (HttpServletResquest request, HttpServletResponse response)throws ServletException,IOException;8.8.2 Serv
29、lets2 Servlets的接口的接口 在开发以HTTP为基础的servlet中,Servlet开发者关心方法doGet和方法doPost即可。8.8.3 Servlets3 Servlets的生命周期的生命周期 如果写过Java的小应用程序(Applet),那Servlet对你来说就不会太难,也许更为简单。因为Servlet不用考虑图形界面的应用。与小应用程序一样,Servlet也有一个生命周期。Servlet的生命周期是当服务器装载运行Servlets;接收来自客户端的多个请求并且返回数据给客户端,然后再删除移开Servlets。下面详细描述如下: 8.8.3 Servlets3 Ser
30、vlets的生命周期的生命周期 当一个服务器装载Servlet时,它运行Servlet的 init() 方法。publicvoidinit(ServletConfigconfig)throwsServletExceptionsuper.init();/一些初始化的操作,如数据库的连接需要记住的是一定要在init()结束时调用super.init()。init()方法不能反复调用,一旦调用就是重装载Servlet。直到服务器调用destroy方法卸载Servlet后才能再调用。8.8.3 Servlets3 Servlets的生命周期的生命周期 在服务器装载初始化Servlet后,Servlet
31、就能够处理客户端的请求,我们可以用 service 方法来实现。每个客户端请求有它自己service方法:这些方法接收客户端请求,并且发回相应的响应。Servlets能同时运行多个service。这是很重要的,这样,service方法可以按一个thread-safe 样式编写。如:service方法更新Servlet对象中的一个字段field,这个字段是可以同时存取的。假如某个服务器不能同时并发运行 service方法,也可以用SingleThreadModel 接口。这个接口保证不会有两个以上的线程(threads)并发运行。在Servlet执行期间其最多的应用是处理客户端的请求并产生一个网
32、页。其代码如下: 8.8.3 Servlets3 Servlets的生命周期的生命周期 PrintWriterout=response.getWriter();out.println(html);out.println(headtitleServlet/title/head);out.println(body);out.println(HelloWorld);out.println(/body/html);out.close();8.8.3 Servlets3 Servlets的生命周期的生命周期 Servlets一直运行到他们被服务器卸载。在结束的时候需要收回在init()方法中使用的资源,
33、在Servlet中是通过destroy()方法来实现的。publicvoiddestroy()/回收在init()中启用的资源,如关闭数据库的连接等。8.4 JSPJSP与与servletsservlets 简单的说,SUN首先发展出Servlet,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。后来SUN推出了类似于ASP的嵌套型的JSP,把JSP TAG嵌套到HTML语句中,这样,就大大简化和方便了网页的设计和修改。新型的网络语言如ASP,PHP都是嵌套型的。8.4 JSPJSP与与servletsse
34、rvlets Servlets是用Java编写的服务器端程序,它与协议和平台无关,运行于Web服务器中。Servlets可以动态地扩展服务器的能力,并采用请求响应模式提供Web服务。 JSP是Sun公司推出的Web开发语言,它类似于Microsfot公司的ASP,但由于它的跨平台性,愈来愈受到广泛的应用。 Servlets与JSP之间的交互为开发Web服务提供了优秀的解决方案。8.4 JSPJSP与与servletsservletsJSP主要关注HTML(或者XML)与Java代码的结合,以及加入其中的JSP标签。如果一个支持JSP的服务器遇到一个JSP页面,它首先查看该页面是否已被编译成为一
35、个Servlets。由此可见,JSP被编译成Servlets即被转变为纯Java,然后被装载入服务器执行。当然,这一过程根据不同的JSP引擎而略有不同。8.4 JSPJSP与与servletsservlets(1)JSP是HTML(或者XML)与Java代码结合的嵌套型语言;而Servlets则是纯Java类。(2)JSP是以显示为中心的,它为Web显示开发人员提供了更加自然的开发模式。而Servlets不适宜开发显示内容改动频繁的页面,而在处理更为复杂的逻辑任务时,更多使用Servlets。(3)JSP使人们把显示和逻辑分隔成为可能。这意味着显示和逻辑开发可以并行进行。而Servlets并没
36、有将输出HTML语句和逻辑处理分离开。(4)从网络三层结构的角度看,一个网络项目最少分三层:数据层、商业逻辑层和表示层。当然也可以更复杂。Servlets用来编写商业逻辑层是很强大的,但是对于编写表示层就很不方便。JSP则主要是为了方便编写表示层而设计的。8.4 JSPJSP与与servletsservlets在特定的软件系统环境中,选择使用Servlets或JSP通常不是一个对应的关系。把它们结合起来使用以达到一个平衡的系统是合情合理的。例如,可以把Servlets用做控制器,以让Servlets处理请求。一旦Servlets完成了请求处理,就把结果转交给JSP并显示给用户。8.4 JSPJ
37、SP与与servletsservlets Servlet访问JSP:fromjspToservlet.jspfromjspToservlet.jsp8.4 JSPJSP与与servletsservlets servletToJsp.javaservletToJsp.java:import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class ServletToJsp extends HttpServlet public void doGet(HttpServletRequest req, HttpSe
38、rvletResponse res)throws ServletException, IOExceptiontry req.setAttribute (ServletName, ServletToJsp);getServletConfig().getServletContext().getRequestDispatcher(/ServletUseJsp.jsp).forward(req,res); catch (Exception e)e.printStackTrace();8.4 JSPJSP与与servletsservlets getServletConfig().getServletCo
39、ntext(). getRequestDispatcher(/ServletUseJsp.jsp).forward(req,res);这句话的意思大致是这句话的意思大致是: : 从从Servlet ConfigServlet Config中取得中取得ServletServlet上下文上下文, ,并根据给出的并根据给出的pathpath将请求转移到令一个处理单元将请求转移到令一个处理单元, ,主要是完成请求转移主要是完成请求转移和分发的功能和分发的功能. .8.4 JSPJSP与与servletsservlets servletUseJsp.jspservletUseJsp.jsp:Servle
40、t 使用JSPServlet使用JSP的例子:这个页面是被这个Servlet调用的。8.8.5 5 调用调用ServletsServlets 要调用Servlet或Web应用程序,可以使用下列方法:由URL调用、在FORM标记中调用、在SERVLET标记中调用。8.8.5 5 调用调用ServletsServlets 1 1由由URLURL调用调用 ServletServlet 指定 Servlet 名称:当应用服务器管理器来将一个Servlet实例添加(注册)到服务器配置中时,必须指定“Servlet 名称”参数的值。例如,可以指定将hi作为HelloWorldServlet的Servlet
41、名称。要调用该Servlet,需打开/path/hi。也可以指定Servlet和类使用同一名称(HelloWorldServlet)。在这种情况下,将由/path/ HelloWorldServlet 来调用Servlet的实例。8.8.5 5 调用调用ServletsServlets 2 2在在FORMFORM标记中指定标记中指定ServletServlet 可以在FORM标记中调用Servlet。HTML 格式使用户能在Web页面(即从浏览器)上输入数据,并向Servlet提交数据。例如:8.8.5 5
42、 调用调用ServletsServlets 2 2在在FORMFORM标记中指定标记中指定ServletServletFORMMETHOD=GETACTION=/servlet/myservletOLINPUTTYPE=radioNAME=broadcastVALUE=amAMBRINPUTTYPE=radioNAME=broadcastVALUE=fmFMBR/OL(用于放置文本输入区域的标记、按钮和其它的提示符。/FORM 8.8.5 5 调用调用ServletsServlets 2 2在在FORMFORM标记中指定标记中指定ServletServlet ACTION特性表明了用于调用Se
43、rvlet的URL。关于METHOD的特性,如果用户输入的信息是通过GET方法向Servlet提交的,则 Servlet 必须优先使用doGet()方法。反之,如果用户输入的信息是通过POST方法向Servlet提交的,则 Servlet 必须优先使用doPost()方法。 8.8.5 5 调用调用ServletsServlets 3 3在在SERVLETSERVLET标记中指定标记中指定ServletServlet当使用SERVLET标记来调用Servlet时,如同使用FORM标记一样,无需创建一个完整的HTML页面。作为替代,Servlet的输出仅是HTML页面的一部分,且被动态嵌入到原始HTML页面中的其它静态文本中。所有这些都发生在服务器上,且发送给用户的仅是结果HTML页面。8.8.5 5 调用调用ServletsServlets 3 3在在SERVLETSERVLET标记中指定标记中指定ServletServlet下列 HTML 代码段显示了如何使用该技术。 SERVLET NAME=my
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氮肥管理在油菜增产中的作用
- 2025年注册建筑师专业知识考核试卷(建筑设计与时代特征)
- 非遗传承中的社区参与与文化认同
- 基于模拟医学教育的临床能力培养
- 儿童行为心理学解析
- 创新引领业务前行
- 临产的处理原则及护理措施
- 舞蹈魅力与初中生活
- 出资转让协议书
- 2025授权代理在线直投广告合同模板
- XX学校(幼儿园)食堂管理各岗位廉政(廉洁)风险点及防控措施一览表
- DB31/ 506-2020集成电路晶圆制造单位产品能源消耗限额
- 美甲店店员分成协议书
- 2025年上海市春考语文试卷(较为完整版暂无答案)
- 中华人民共和国民营经济促进法
- JJG 162-2019饮用冷水水表 检定规程(高清版)
- 输出轴零件的机械加工工艺规程
- 用数控车床四工位刀架控制系统的设计001
- 自然辩证法开卷考点
- 分组与分配问题.doc
- 高等学校毕业生登记表(适于江苏省,完整版)
评论
0/150
提交评论