《JSP与Servlet编程》PPT课件.ppt

上传人:tia****nde 文档编号:11499026 上传时间:2020-04-26 格式:PPT 页数:72 大小:256KB
返回 下载 相关 举报
《JSP与Servlet编程》PPT课件.ppt_第1页
第1页 / 共72页
《JSP与Servlet编程》PPT课件.ppt_第2页
第2页 / 共72页
《JSP与Servlet编程》PPT课件.ppt_第3页
第3页 / 共72页
点击查看更多>>
资源描述
2020年4月26日,1,|海有|壁无|一切为了学生。|纳容|立欲|为了学生一切。|百乃|千则|岂能事事如意,但求无愧于心。|川大|仞刚|把微笑留给世界,让世界因你微笑!,2020年4月26日,2,温故而知新!,2020年4月26日,3,第9章JSP与JavaBean编程,9.1JavaBean概述9.2JavaBean的基本用法9.2.1JavaBean的属性9.2.2访问Bean属性9.2.3设置Bean属性9.3Bean的作用域9.4JavaBean的使用9.4.1使用JavaBean访问数据库9.4.2JavaBean应用实例,2020年4月26日,4,第10章JSP与Servlet编程,10.1Servlet介绍10.2处理客户端请求10.3Servlet编程接口10.4Servlet部署10.5Servlet应用实例,2020年4月26日,5,10.1Servlet介绍,10.1.1什么是Servlet10.1.2Servlet的技术特点10.1.3Servlet与JSP的区别10.1.4Servlet在Web项目中的作用10.1.5Servlet生命周期10.1.6开发一个简单的Servlet,2020年4月26日,6,10.1.1什么是Servlet,Servlet是在服务器上运行的Java程序。与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。,2020年4月26日,7,Servlet是用Java编写的服务器端程序,运行于请求/响应模式的Web服务器中。Servlet本身是一个Java类,可以动态地扩展服务器的能力。JSP是以另外一种方式实现的Servlet,Servlet是JSP的早期版本,在JSP中,更加注重页面的表现,而在Servlet中则更注重业务逻辑的实现。因此,当编写的页面显示效果比较复杂时,首选是JSP。或者在开发过程中,HTML代码经常发生变化,而Java代码则相对比较固定时,可以选择JSP。而我们在处理业务逻辑时,首选则是Servlet。同时,JSP只能处理浏览器的请求,而Servlet则可以处理一个客户端的应用程序请求。因此,Servlet加强了Web服务器的功能。,2020年4月26日,8,Servlet的任务是:(1)读取用户发送的数据这些数据通常在Web页面的表单中输入。(2)查询Http请求中包含的任何其他请求信息这些信息包括浏览器的功能、Cookie、发送请求的客户端的主机名等信息。(3)产生结果Servlet访问数据库,调用其他组件产生计算结果。(4)在文档中设置结果的格式将计算结果等嵌入到Http页面。(5)设置合适的Http响应参数告诉浏览器返回的文档类型,设置Cookie和缓存参数等。(6)将文档返回给客户端可以以文本(HTML)、二进制格式或者压缩格式发送文档。,2020年4月26日,9,10.1Servlet介绍,10.1.1什么是Servlet10.1.2Servlet的技术特点10.1.3Servlet与JSP的区别10.1.4Servlet在Web项目中的作用10.1.5Servlet生命周期10.1.6开发一个简单的Servlet,2020年4月26日,10,10.1.2Servlet的技术特点,1有效性(有改进)在使用传统的CGI时,人们需为每一项Http请求启动新进程。如果CGI程序本身相对较短,启动进程的开销可以决定执行过程的时间。在使用Servlet时,使用“轻量”Java线程处理每一项请求,而不使用“重量”操作系统进程。在传统的CGI中,如果n项请求同时指向同一个CGI程序,则该CGI程序代码就会载入内存n次。但在使用Servlet时,可以存在n个线程,而只使用Servlet类的一个副本。最后一点是,当CGI程序完成请求的处理工作时,就会终止程序,这样就难以缓存计算结果、保持数据库连接开放,并允许依赖于永久数据的其它优化操作。但在完成响应之后,Servlet仍然保留在内存中,因此可以直接在请求之间存储任意复杂的数据。,2020年4月26日,11,2方便Servlet包含扩展基础结构,能够自动对HTML表单数据进行分析和解码、读取和设置Http头、处理Cookie、跟踪会话以及许多其它类似的高级功能。,2020年4月26日,12,3.强大Servlet可以支持几种功能,但利用常规的CGI却难以或无法实现这些功能。Servlet可以直接与Web服务器对话,而常规的CGI程序则无法做到,至少在没有使用服务器专用的API的情况下无法实现这一点。例如,与Web服务器的通信更易于将相对URL转换成具体的路径名。多个Servlet之间还能共享数据,这更易于实现数据库连接共享和类似资源共享优化操作。Servlet还可以保留不同请求的信息,从而简化了类似会话跟踪和缓存早期计算结果的一些技术。,2020年4月26日,13,4.可移植性Servlet是使用Java编程语言并遵循标准的API编写的,所以几乎不进行任何更改便可以在各种服务器上运行。实际上,几乎每种主要的Web服务器都可通过插件或直接支持Servlet。如今它们已成为J2EE的一部分,因此业界对Servlet的支持逐渐变得越来越普及。,2020年4月26日,14,5.安全性,2020年4月26日,15,6.便宜有许多免费可用的或者极为廉价的Web服务器适合于“个人”或小型Web站点使用。除了Apache可免费使用之外,多数商业性质的Web服务器都相对比较昂贵,但一旦拥有了某种Web服务器,不管其成本如何,添加Servlet支持(如果原来的配置不支持Servlet)几乎无需花费额外成本。与其它许多支持CGI的服务器相比,后者要购买专用软件包,需要投入巨大的启动资金。,2020年4月26日,16,10.1Servlet介绍,10.1.1什么是Servlet10.1.2Servlet的技术特点10.1.3Servlet与JSP的区别10.1.4Servlet在Web项目中的作用10.1.5Servlet生命周期10.1.6开发一个简单的Servlet,2020年4月26日,17,Servlet是一种在服务器端运行的Java程序。而JSP是继Servlet后Sun公司推出的新技术,它是以Servlet为基础开发的。Servlet是JSP的早期版本,在JSP中,更加注重页面的表示,而在Servlet中则更注重业务逻辑的实现。因此,当编写的页面显示效果比较复杂时,首选是JSP。或者在开发过程中,HTML代码经常发生变化,而Java代码则相对比较固定时,可以选择JSP。而在处理业务逻辑时,首选则是Servlet。同时,JSP只能处理浏览器的请求,而Servlet则可以处理一个客户端的应用程序请求。因此,Servlet加强了Web服务器的功能。,2020年4月26日,18,Servlet与JSP相比有以下几点区别:(1)编程方式不同Servlet是按照Java规范编写的Java程序,JSP是按照Web规范编写的脚本语言。(2)编译方式不同Servlet每次修改后需要编译后才能运行,JSP是被JSPContainer编译为Servlet文件。(3)运行速度不同由于一个JSP页面在第一次被访问时要被编译成Servlet需要一段时间,所以客户端得到响应所需要的时间比较长。当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。总之,在运行速度上,Serlvet比JSP速度快。,2020年4月26日,19,10.1Servlet介绍,10.1.1什么是Servlet10.1.2Servlet的技术特点10.1.3Servlet与JSP的区别10.1.4Servlet在Web项目中的作用10.1.5Servlet生命周期10.1.6开发一个简单的Servlet,2020年4月26日,20,1.Servlet在服务器端的作用在浏览器访问服务器时,所有的JSP文件都会转化为Servlet文件,Servlet文件负责在服务器端处理用户的数据。这部分功能在开发服务器时已经封装成底层的功能,我们可不用关心这部分功能,除非自己在开发一个服务器时候才用到。,2020年4月26日,21,2.Servlet在MVC设计模式中应用MVC是一种目前广泛流行的软件设计模式,早在70年代,IBM就进行了MVC设计模式的研究。近来,随着JavaEE的成熟,它成为在JavaEE平台上推荐的一种设计模型,是广大Java开发者非常感兴趣的设计模型。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论选择哪种语言,无论应用多复杂,它都能为理解分析应用模型提供最基本的分析方法,为构造产品提供清晰的设计框架,为软件工程提供规范的依据。MVC设计模式是目前用得比较多的一种设计模式,被广泛应用于Web应用程序中。Model(模型)表示业务逻辑层,View(视图)代表表示层,Controller(控制器)代表控制层。有关MVC设计模式的详细介绍请参考第1和12章。其中,控制器部分由Servlet完成,这也是我们实际在项目开发中用到的Servlet。,2020年4月26日,22,3.Servlet在Web框架中的应用在JavaWeb项目开发中用到的主要组件技术有JSP、Servlet、JavaBean、JDBC、XML、Tomcat等技术。为了整合JavaWeb组件技术提高软件开发效率,近年来推出许多基于MVC模式的Web框架技术,如,Struts,Maverick,WebWork和Turbine等。其中比较经典框架技术是Struts。在Struts框架技术中,实现了MVC模式,其中已封装好核心控制器,由Servlet实现;我们还需要实现Action来完成对数据流量的控制,Action在Struts1.X版本中由Servet实现控制功能,在Struts2.X版本中Action是业务控制器,由Java类来实现。有关Servlet在Struts中的应用请参考Struts相关资料。,2020年4月26日,23,10.1Servlet介绍,10.1.1什么是Servlet10.1.2Servlet的技术特点10.1.3Servlet与JSP的区别10.1.4Servlet在Web项目中的作用10.1.5Servlet生命周期10.1.6开发一个简单的Servlet,2020年4月26日,24,10.1.5Servlet生命周期,Servlet由服务器完成该子类的创建和初始化。Servlet的生命周期主要由3个过程组成。,2020年4月26日,25,1.init()方法:服务器初始化Servlet。当首次创建Servlet时会调用init()方法,而不是每个用户请求都会调用此方法。当用户首次调用对应于Servlet的URL或再次启动服务器时,就会创建Servlet。当有客户再请求Servlet服务时,Web服务器将启动一个新的线程,在该线程中,调用service方法相应客户的请求。,2020年4月26日,26,init()方法的声明如下:publicvoidinit(ServletConfigconfig)throwsServletExceptionpublicvoidinit()throwsServletExceptionServletConfig对象包含用于初始化的参数,定义的getInitParameter方法可以获取这些参数。,2020年4月26日,27,ShowMessagesch10.ShowMessagesmessagehelloworldrepeats5,2020年4月26日,28,2.service()方法:初始化完毕,Servlet对象调用该方法响应客户的请求。对于每个请求,Servlet引擎都会调用此方法,并把Servlet的请求对象和响应对象传递给service()方法作为参数。方法声明如下:publicvoidservice(ServletRequestrequest,ServletResponseresponse)其中,request对象和response对象由Servlet容器创建并传递给service方法,service方法会根据Http请求类型,调用相应的doGet或doPost等方法。service方法可以被调用多次。,2020年4月26日,29,3.destroy()方法:调用该方法消灭Servlet对象。当Servlet被卸载时此方法被自动调用。可以用来释放Servlet占用的资源,比如数据库连接、Socket连接等。destroy()方法只会被调用一次。,2020年4月26日,30,10.1Servlet介绍,10.1.1什么是Servlet10.1.2Servlet的技术特点10.1.3Servlet与JSP的区别10.1.4Servlet在Web项目中的作用10.1.5Servlet生命周期10.1.6开发一个简单的Servlet,2020年4月26日,31,10.1Servlet介绍,10.1.1什么是Servlet10.1.2Servlet的技术特点10.1.3Servlet生命周期10.1.4开发一个简单的Servlet,2020年4月26日,32,在NetBeans中新建一个web项目,点击右键,新建Servlet。,2020年4月26日,33,FirstServletch10.FirstServletFirstServlet/FirstServlet,2020年4月26日,34,30index.jsp,2020年4月26日,35,黑体部分是IDE自动生成的Servlet配置信息,标明此URL请求(/FirstServlet)被FirstServlet处理,FirstServlet即是ch10包的FirstServle.javat部署后的名称。程序清单如下。,2020年4月26日,36,【例10-1】简单Servlet示例,packagech10;importjava.io.*;.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassFirstServletextendsHttpServletprotectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionresponse.setContentType(text/html;charset=UTF-8);PrintWriterout=response.getWriter();out.println();out.println();out.println(ServletFirstServlet);out.println();out.println();,2020年4月26日,37,out.println(ServletFirstServletat+request.getContextPath()+);out.println();out.println();out.close();protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionprocessRequest(request,response);protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionprocessRequest(request,response);,2020年4月26日,38,2020年4月26日,39,第10章JSP与Servlet编程,10.1Servlet介绍10.2处理客户端请求10.3Servlet编程接口10.4Servlet部署10.5Servlet应用实例,2020年4月26日,40,10.2处理客户端请求,10.2.1从Servlet读取表单数据10.2.2从Servlet提取报文头10.2.3处理Cookie与会话跟踪,2020年4月26日,41,10.2.1从Servlet读取表单数据,如果你用过搜索引擎、访问过在线书店,可能经常在地址栏看到这样的信息:http:/host/path?user=liuimportjava.io.*;.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassThreeParamsextendsHttpServletprotectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionresponse.setContentType(text/html;charset=UTF-8);PrintWriterout=response.getWriter();out.println();out.println();,2020年4月26日,46,out.println(request.getParameter(gr1);out.println(request.getParameter(gr2);out.println(request.getParameter(gr3);out.println();out.println();out.close();protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionprocessRequest(request,response);protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionprocessRequest(request,response);,2020年4月26日,47,该Servlet文件需要在web.xml进行配置,配置如下:ThreeParamsch.ThreeParamsThreeParams/ThreeParams,2020年4月26日,48,2020年4月26日,49,10.2处理客户端请求,10.2.1从Servlet读取表单数据10.2.2从Servlet提取报文头10.2.3处理Cookie与会话跟踪,2020年4月26日,50,10.2.2从Servlet提取报文头,HTTP报文在网络传输时,请求头包含一些可用信息。Servlet能够方便的读取这些信息。可以使用HttpServletRequest对象的getHeader()方法。例如,request.getHeader(“Connection”),头的名称不用区分大小写。Connection和CONNECTION等价。另外一些常用的方法如下。(1)getCookie()返回Cookie头的内容,解析并存储在Cookie对象的数组中。(2)getRequestURI()返回URL中主机和端口之后、表单数据前的部分。例如下面的URL:http:/localhost:8080/servlet/SearchBook?name=jsp将返回/servlet/SearchBook。(3)getMethod()返回请求方法(通常是GET和POST),也可能是HEAD、PUT和DELETE。,2020年4月26日,51,10.2处理客户端请求,10.2.1从Servlet读取表单数据10.2.2从Servlet提取报文头10.2.3处理Cookie与会话跟踪,2020年4月26日,52,10.2.3处理Cookie与会话跟踪,HTTP是一种无状态的协议,每当客户访问页面时,就会连接服务器,并且服务器不会保留客户端的信息。缺少环境将导致许多困难的出现。例如在线商店的用户将某种产品添加到了购物车,服务器如何知道购物车里有什么产品?购物车和哪个客户关联?对于这些问题,有下面几种解决方案:Cookie、URL重写、隐藏的表单数据。,2020年4月26日,53,1.CookieCookie是Web服务器发送到浏览器的简单文本信息,以后在访问同一个Web站点或域时浏览器会将该文本信息毫无更改的返回。通过让服务器读取以前发送到客户端的信息,站点就能为访问者提供许多方便。可以使用Cookie存储有关购物会话的信息。每个后续连接可以查询当前会话。要将Cookie发送到客户端,Servlet可以创建一个或多个Cookie。使用newCookie(name,value)指定名称和值。,2020年4月26日,54,2.URL重写使用这种方式时,客户端将一些额外数据追加到标识会话的每个URL末尾,服务器在该标识符与存储的有关该会话的数据之间建立关联。例如,在使用http:/localhost/path/file.jsp?name=liuqiang时,附加的会话信息为name=liuqiang。这也是一种解决方案,当浏览器不支持Cookie或者当用户禁用了Cookie时,这种方法的优势更为明显。但是它同样具有与Cookie相同的多数问题,也就是说,服务器端程序需要完成许多简单却繁琐的处理过程。另外,还必须非常小心,因为引用您的站点并返回给用户URL(甚至通过服务器重定向中诸如Location域的间接方式)都追加了额外的信息。如果用户退出会话,并通过书签或链接返回原处,就可能丢失会话信息。,2020年4月26日,55,3.隐藏的表单数据HTML表单可以包含如下所示的项:在提交表单时,指定的名称和值也将包括在GET和POST数据中。隐藏的字段可以用来存储有关会话的信息,但是主要缺点,即只有当每个页面都是动态生成的时候才有效。,2020年4月26日,56,4.Servlet的会话跟踪Servlet提供了出色的技术解决方案:HttpSessionAPI。这种高级接口建立在Cookie或URL重写之上。实际上,如果浏览器支持Cookie,多数服务器就会使用Cookie,但是当支持或明确禁用Cookie时就会自动改用URL重写。而Servlet编写人员不需要关心这许多细节,不必明确使用Cookie或追加到URL的信息,就可以自动方便地存储与会话相关的任意对象。HttpSession对象存储于服务器,通过Cookie等幕后机制与客户端关联。在线购物中常用的购物车可以使用HttpSession进行会话跟踪。,2020年4月26日,57,第10章JSP与Servlet编程,10.1Servlet介绍10.2处理客户端请求10.3Servlet编程接口10.4过滤器10.5Servlet部署10.6Servlet和JSP集成,2020年4月26日,58,第10章JSP与Servlet编程,10.1Servlet介绍10.2处理客户端请求10.3Servlet编程接口10.4Servlet部署10.5Servlet应用实例,2020年4月26日,59,10.3Servlet编程接口,10.3.1与Servlet实现相关10.3.2与Servlet配置相关10.3.3与Servlet异常相关10.3.4与请求和响应相关10.3.5会话管理10.3.6Servlet上下文相关10.3.7Servlet协作相关,2020年4月26日,60,第10章JSP与Servlet编程,10.1Servlet介绍10.2处理客户端请求10.3Servlet编程接口10.4Servlet部署10.5Servlet应用实例,2020年4月26日,61,10.4Servlet部署,Servlet配置包含Servlet的名字、Servlet的类、初始化参数、启动装入的优先级、Servtlet的映射、运行的安全设置、过滤器的名字和类以及它的初始化参数。部署描述符文件是J2EEWeb程序的重要组成部分,通常位于/WEB-INF目录。它分为标准部署描述符和针对特定服务器的部署描述符。主要功能包括如下几个方面。(1)用于Servlet和Web应用程序的初始化。通过配置文件,可以减少初始化值的硬编码。(2)Servlet/JSP定义。在Web应用程序中的每个Servlet和预编译的JSP文件都应在部署描述符中定义。(3)MIME类型。可以在部署描述符中为每种内容定义MIME类型。(4)安全。可以使用部署描述符控制对应用程序的访问。,2020年4月26日,62,标准的部署描述符文件web.xml,ThreeParamscoreservlets.ThreeParamsShowMessagescoreservlets.ShowMessages,2020年4月26日,63,messageshibbloethrepeats5,2020年4月26日,64,ThreeParams/ThreeParamsShowMessages/ShowMessages,2020年4月26日,65,SimpleFilterch10.SimpleFilterstart_time11,2020年4月26日,66,SimpleFilter/*30,2020年4月26日,67,index.jspindex.htmlindex.htm,2020年4月26日,68,第10章JSP与Servlet编程,10.1Servlet介绍10.2处理客户端请求10.3Servlet编程接口10.4Servlet部署10.5Servlet应用实例,2020年4月26日,69,早期的JavaWeb开发使用Servlet来开发Web应用程序,但是Servlet开发Web应用程序效率低。为了提高Web项目开发效率,SUN公司推出JSP技术,JSP开发Web项目的效率比较高,但是运行速度没有Servlet快。目前,JavaWeb应用程序是由JSP开发,部署到服务器上,在运行JSP文件时,JSP文件首先转化Servlet文件,然后所有数据处理都是由Servlet完成。Servlet主要用于MVC设计模式中控制器部分或者框架(Struts等)中控制器部分。有关Servlet作为控制器部分,将在第12章基于MVC实训中讲解。本例并没有严格按照MVC设计模式,其中本例的Servlet文件是对数据的处理有一部分控制功能。,2020年4月26日,70,总结与回顾!,2020年4月26日,71,第10章JSP与Servlet编程,10.1Servlet介绍10.2处理客户端请求10.3Servlet编程接口10.4Servlet部署10.5Servlet应用实例,2020年4月26日,72,请复习已学知识!预习后面章节!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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