《Servlet核心技术》PPT课件.ppt

上传人:za****8 文档编号:12669047 上传时间:2020-05-13 格式:PPT 页数:60 大小:2.33MB
返回 下载 相关 举报
《Servlet核心技术》PPT课件.ppt_第1页
第1页 / 共60页
《Servlet核心技术》PPT课件.ppt_第2页
第2页 / 共60页
《Servlet核心技术》PPT课件.ppt_第3页
第3页 / 共60页
点击查看更多>>
资源描述
再三思考:怎样理解动态,JSP工作原理-JSP的处理过程,观察对象出处,Servlet技术,Servlet是在JSP之前就存在的运行在服务端的一种Java技术,它是用Java语言编写的服务器端程序。Servlet主要用于处理Http请求,并将处理的结果传递给浏览器生成动态Web页面。在JSP中用到的Servlet通常都继承自javax.servlet.http.HttpServlet类,在该类中实现了用来处理Http请求的大部分功能。JSP是在Servlet的基础上开发的一种新的技术,所以JSP与Servlet有着密不可分的关系。JSP页面在执行过程中会被转换为Servlet,然后由服务器执行该Servlet。,第8章Servlet核心技术,Server+Applet=Servlet,JSP程序开发模式,单纯的JSP页面编程JSP+JavaBean编程JSP+Servlet+JavaBean编程MVC模式,单纯的JSP编程,在该模式下,将大部分的Java代码与HTML代码混淆在一起。会给程序的维护和调试带来很多的困难,而且程序的结构混乱。所以,单纯的JSP页面编程模式是无法应用到大型、中型甚至小型的JSPWeb应用程序开发中。,JSP+JavaBean编程,该模式是JSP程序开发经典设计模式之一,适合小型或中型网站的开发。利用JavaBean技术,可以很容易地完成一些业务逻辑上的操作。JavaBean是一个遵循了一定规则的Java类,在程序的开发中,将要进行的业务逻辑封装到这个类中,在JSP页面中通过动作标签来调用这个类,从而执行这个业务逻辑。此时的JSP除了负责部分流程的控制外,大部分用来进行页面的显示,而JavaBean则负责业务逻辑的处理。该模式程序结构清晰,JSP+JavaBean设计模式被广泛应用。,JSP+JavaBean编程,JSP+Servlet+JavaBean编程,JSP+JavaBean设计模式虽然已经将网站的业务逻辑和显示页面进行分离,但这种模式下的JSP不但要进行程序中大部分的流程控制,而且还要负责页面的显示。在JSP+JavaBean设计模式的基础上加入Servlet来实现程序中的控制层,在这种模式中,由Servlet来执行业务逻辑并负责程序的流程控制,JavaBean组件实现业务逻辑,充当着模型的角色,JSP用于页面的显示。可以看出这种模式使得程序中的层次关系更明显,各组件的分工也非常明确。常用于大型网站的开发。,JSP+Servlet+JavaBean编程,MVC,MVC模式中的Model(模型)指的是业务逻辑的代码,是应用程序中真正用来完成任务的部分。View(视图),实际上就是程序与用户进行交互的界面,用户可以看到它的存在。视图可以具备一定的功能并应遵守对其的约束,在视图中不应包含对数据处理的代码,即业务逻辑代码。Controller(控制器),主要控制用户请求并作出响应。它根据用户的请求选择模型或修改模型,并决定返回怎样的视图。JSP+Servlet+JavaBean模式进行项目开发时,可以选择一个实现了MVC模式的现成的框架,例如Struts框架。,学习目标,掌握Servlet的概念掌握HttpServlet类方法熟练掌握部署和运行Servlet熟练掌握JSP调用Servlet熟练掌握doGet和doPost方法使用熟练掌握会话熟练掌握重定向和转发,Servlet简介,本小节目标,Servlet概述Servlet程序实现,Servlet概述,Servlet是Sun公司用于实现CGI(CommonGatewayInterface,公共网关接口)程序设计的Java技术解决方案,是一种用于服务器端程序设计的JavaAPI。Servlet是Java的javax包中一个扩展包,主要应用在服务器端用来接收客户端的请求,并做出响应。尽管Servlet可以响应任何类型的响应,它们通常用于拓展基于Web的应用程序。在WEB应用程序中,JavaServlet技术定义了特定的HTTPServlet类。Servlet可以被认为是服务器端的applet。Servlet被Web服务器加载和执行,就如同applet被浏览器加载和执行一样。Servlet从客户端(通过Web服务器)接收请求,执行某种作业,然后返回结果。,Servlet功能,创建并返回一个包含基于请求的动态内容的JSP页面。创建可嵌入到现有的HTML页面和JSP页面中的部分片段。与其他服务器资源(文件、数据库、Applet、Java应用程序等)进行通信。处理多个客户连接,接收多个客户的输入,并将结果发送到多个客户机上。对特殊的处理采用MIME类型的过滤数据,例如图像转换。将定制的处理提供给所有的服务器的标准例行程序。例如,Servlet可以设置如何认证合法用户。,Servlet与CGI比较,CGI(commongateintergace)表示的意思通用网关接口,是一段运行在服务器的程序,是面向客户端HTML页面的接口,通俗的讲CGI就像是一座桥,把网页和WEB服务器中的执行程序连接起来,把HTML接收的指令传递给服务器,然后再把服务器执行的结果返还给HTML页;CGI可以实现处理表格,数据库查询,送电子邮件等许多操作。CGI使网页变得不是静态的,而是具有交互功能。,Servlet与CGI比较,高效性传统CGI中,对每个请求都要启动一个新的进程,启动进程所需要的开销在有些情况下就可能很大,而Servlet在服务器上仅有一个Java虚拟机在运行,每个Servlet请求都作为持久性进程中的一个单独线程得以执行,相对于传统CGI而言,效率要高得多。方便性Servlet提供了大量的实用工具例程。例如,自动解析和编码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话等等。功能强大许多传统CGI程序很难完成的工作使用Servlet就可轻松完成。例如Serlet能够直接和Web服务器交互,而普通的CGI程序则不能。Servlet还能够在各个应用程序之间共享数据,使得数据库连接池之类的功能很容易实现。,Servlet与CGI比较,跨平台性Servlet采用Java语言编写,在有Java运行环境的任何操作系统上都可运行。成本低许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,即使它不支持Servlet,要加上这部分功能也往往是免费的。可扩展性Servlet采用Java语言编写,而且得到了广泛的支持,因此基于Servlet的应用具有很好的扩展性。,Servlet程序实现,本小节目标,了解Servlet程序实现-生命周期掌握部署和运行Servlet,Servlet程序实现-生命周期,1、客户端(WEB浏览器)通过HTTP提出请求;2、WEB服务器接收该请求并将其发送给Servlet,如果这个Servlet尚未被加载,WEB服务器将把它加载到Java虚拟机并执行;3、Servlet程序将接收该HTTP请求并执行某种处理;4、Servlet会将处理后的结果向WEB服务器返回应答;5、WEB服务器将从Servlet收到的应答发回给客户端。,Servlet程序实现-生命周期,1、当Web客户请求Servlet服务或当Web服务启动时,容器环境加载一个JavaServlet类。2、容器环境也将根据客户请求创建一个Servlet对象实例,或者创建多个Servlet对象实例,并把这些实例加入到Servlet实例池中。3、容器环境调用Servlet的初始化方法init()进行初始化。这需要给init()方法传入一个ServletConfig对象,ServletConfig对象包含了初始化参数和容器环境的信息,并负责向Servlet传递数据,如果传递失败,则会发生ServletException异常,Servlet将不能正常工作。,Servlet程序实现-生命周期,4、容器环境利用一个HttpServletRequest和HttpServletResponse对象,封装从Web客户接收到的HTTP请求和由Servlet生成的响应。5、容器环境把HttpServletRequest和HttpServletResponse对象传递给HttpServlet.service()方法。这样,一个定制的JavaServlet就可以访问这种HTTP请求和响应接口。service()方法可被多次调用,各调用过程运行在不同的线程中,互不干扰。6、定制的JavaServlet从HttpServletRequest对象读取HTTP请求数据,访问来自HttpSession或Cookie对象的状态信息,进行特定应用的处理,并且用HttpServletResponse对象生成HTTP响应数据。7、当Web服务器和容器关闭时,会自动调用HttpServlet.destroy()方法关闭所有打开的资源,并进行一些关闭前的处理。,Servlet程序实现-生命周期,总结:Servlet程序实现,在应用程序中,所有的Servlet都必须直接或者间接地实现javax.servlet.Servlet接口,而我们在开发过程中最常使用的则是扩展javax.servlet.Servlet接口的实现类javax.servlet.GenericServlet和其子类javax.servlet.http.HttpServlet。,Servlet接口创建一个Servlet类,它必须直接或者间接的实现javax.servlet.Servlet接口,因为在该接口中定义了Servlet生命周期中的方法和Servlet最基本的方法。Servlet接口的基本目标是为Servlet程序提供生命期方法init()、service()和destroy()方法。实现Servlet程序的层次结构如图所示:,GenericServlet类servletAPI提供了Servlet接口的直接实现,称为GenericServlet。此类提供除了service()方法外所有接口中方法的缺省实现。这意味着通过简单地扩展GenericServlte可以编写一个基本的servlet。除了Servlet接口外,GenericServlet也实现了ServletConfig接口,处理初始化参数和servlet上下文,提供对授权传递到init()方法中的ServletConfig对象的方法。如果编写的Servlet程序和HTTP协议无关,那么该Servlet程序必须继承javax.servlet.GenericServlet,并重写里面的方法。,HttpServlet类如果编写的程序和HTTP协议有关,那么该Servlet程序必须继承javax.servlet.http.HttpServlet类,并重写里面的方法。HttpServlet类是javax.servlet.GenericServlet类的一个子类,重写了从父类中继承的方法。在创建支持HTTP协议的Servlet类时,必须继承javax.servlet.http.HttpServlet类,HttpServlet类重写了父类的方法,如service等方法;并增加了一些新的方法,如doGet(),doPost(),doPut()等方法。,部署和运行Servlet,部署和运行Servlet,步骤如下所示:编写Servlet文件部署Servlet文件编译Servlet文件访问Servlet文件注意1:当一个Servlet修改编译后,服务器要重新启动才会重新加载。为了不重新启动,方法修改server.xml配置:注意2:对于部署的映射文件修改后,不需要重启动服务器,服务器会时时监控。,编写Servlet文件参看例题,Servlet的创建一般步骤,继承HttpServlet抽象类。重载适当的方法,如覆盖(或称为重写)doGet()方法或doPost()方法。如果有HTTP请求信息的话,获取该信息。可通过调用HttpServletRequest类对象的以下3个方法获取:getParameterNames()/getParameter()/getParameterValues()生成HTTP响应。HttpServletResponse类对象生成响应,并将它返回到发出请求的客户机上。“响应”对象还含有getWriter()方法以返回一个PrintWriter类对象。使用PrintWriter的print()方法和println()方法以编写Servlet响应来返回给客户机,或者直接使用out对象输出有关HTML文档内容。,HttpServlet类中的方法,注意:编译时必须把tomcat下的servlet-api.jar包进行pathclass或导入到Javajdk1.6.0_10jrelibext目录下。否则会出现javax.sevlet不存在或javax.servlet.http不存在错误。,部署及配置Servlet文件,WEB开发的标准目录结构,在web-inf中运行网页,WEB开发的标准目录结构,注意1:当一个Servlet修改编译后,服务器要重新启动才会重新加载。为了不重新启动,方法修改server.xml配置:注意2:对于部署的映射文件修改后,不需要重启动服务器,服务器会时时监控。,部署的映射文件,配置web.xml文件,其中元素用来定义,元素用来为Servlet配置映射路径。ServletSamplesunyang.ServletSampleServletSample/servlet,编译Servlet,编译Servlet,提示:打包编译编译时可以直接使用javacd.类名.java命令根据package的定义打包编译。注意:编译时必须把tomcat下的servlet-api.jar包进行pathclass或导入到Javajdk1.6.0_10jrelibext目录下。否则会出现javax.sevlet不存在或javax.servlet.http不存在错误。,调用Servlet,调用Servlet,在JSP程序中,Servlet作为一个Java类可以直接在地址栏中通过URL访问。还可以通过JSP程序提交表单访问或通过超级链接访问。,Servlet与表单,本小节目标,再次了解HttpServlet类中的请求处理方法掌握表单提交路径处理方法,覆写HttpServlet类中的方法,关于Servlet路径,注意:在实际操作中,经常会出现找不到Servlet而报的404错,处理方法是:保证提交后的页面路径与配置的Servlet路径一致,最好是修改配置文件中的路径与提交路径一致。,再次理解Serlet生命周期,Servlet程序实现-生命周期,GenericServlet类中对应常见方法,说明1:Servlet只会初始化一次,而处理服务会调用多次,销毁也只会调用一次,但是如果一个Servlet长时间不使用,也会被容器自动销毁,而如果需要再次使用时会重新进行初始化操作。,说明2:如果在程序中覆写了service()方法,那么对应的doGet()或doPost()方法就不再起作用,而是直接使用service()方法进行请求的处理。但在实际中,比较多的是继承HttpServlet类中的doGet()或doPost()方法完成请求的操作。当定义一个Servlet时可以不用将全部的生命周期方法写出,只要覆写请求的两个重要方法即可。,取得其它内置对象,本小节目标,从Servlet中取得session对象进行操作从Servlet中取得Application对象进行操作,取得HttpSession接口实例,说明:关于session的取得Session是使用了cookie的处理机制,而cookie是在每次发送请求时加在头信息并发送到服务器上的,所以要想取得session肯定是依靠HttpServletRequest接口实现的。,取得ServletContext实例,说明:Application内置对象是ServletContext接口的实例。,Servlet重定向与转发,本小节目标,掌握Servlet服务器端跳转及客户端跳转的使用掌握RequestDispatcher接口的使用说明:使Web应用程序如此强大的原因之一是,它们彼此链接和聚合信息资源。JSP技术中的Servlet为特定URL的Web组件提供三种相互关联,重定向、转发和包含。,回忆,客户端跳转跳后地址栏可以看到,而且无法传递request范围的属性,并且是在页面执行完后才发生。语法:response.sendRedirect()因为Servlet中使用HttpServletResponse接口实现了response对象,所以可以直接使用sendRedirect()完成客户端跳转。服务器端跳转地址栏看不见,而且可以传递request范围的属性,属于无条件跳转,只要执行到,则立刻执行跳转。语法:,Servlet服务器跳转,在Servlet中没有像JSP中的指令。如果想进行服务器跳转,必须依靠RequestDispatcher接口完成。且用此接口可以使用ServletRequest接口方法进行实例化。些接口有两种方法:,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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