轻松学JavaWeb开发之Servlet编程课件.pptx

上传人(卖家):晟晟文业 文档编号:4384884 上传时间:2022-12-04 格式:PPTX 页数:42 大小:656.44KB
下载 相关 举报
轻松学JavaWeb开发之Servlet编程课件.pptx_第1页
第1页 / 共42页
轻松学JavaWeb开发之Servlet编程课件.pptx_第2页
第2页 / 共42页
轻松学JavaWeb开发之Servlet编程课件.pptx_第3页
第3页 / 共42页
轻松学JavaWeb开发之Servlet编程课件.pptx_第4页
第4页 / 共42页
轻松学JavaWeb开发之Servlet编程课件.pptx_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、第5章 Servlet编程 Servlet是Java Web程序的核心。JSP和几乎所有的Java Web框架(如Struts、Webwork)在底层的实现都会看到Servlet的影子。因此,充分了解Servlet的原理和使用方法,对于以后学习Struts等Web框架将起到非常大的帮助。本章我们将为大家介绍Servlet的基础知识,并通过具体的示例介绍Servlet的强大功能。5.1 Servlet基础 Servlet在本质上就是Java类。编写Servlet需要遵循Java的基本语法,但是与一般Java类所不同的是。Servlet是只能运行在服务器端的Java类,而且必需遵循特殊的规范,在运

2、行的过程中有自己的生命周期。5.1.1 什么是Servlet Servlet是运行于服务器端的、按照其自身规范编写的Java应用程序。我们可以用图5.1来解释这个概念。Servlet的主要功能是用来接受、处理客户端请求,并把处理结果返回到客户端显示。其作用过程如图5.2所示。5.1.2 Servlet的生命周期 Servlet需要在特定的容器中才能运行,在这里所说的容器即Servlet运行的时候所需的运行环境。一般情况下,市面上常见的Java Web Server都可以支持Servlet,例如Tomcat、Resin、Weblogic、WebSphere等,在本书中采用Tomcat作为Serv

3、let的容器,由Tomcat为Servlet提供基本的运行环境。Servlet的生命周期指的是Servlet从被Web服务器加载到它被销毁的整个生命过程。这个过程如图5.3所示。5.1.2 Servlet的生命周期 从图5.3中我们呢可以看出,Servlet生命周期的执行大致分为4个步骤,如图5.4所示。在以上几个阶段中,Servlet对外提供服务阶段是最重要的。service()方法是编程人员真正要关心的方法。因为它才是Servlet真正开始响应客户端请求,并且处理业务逻辑的方法。service()接收到客户端请求后,再调用该Servlet的相应的方法去处理请求。所以程序员在编写自己的Ser

4、vlet时,一般只需要重写方法。在该方法中去处理客户端请求,并把处理结果返回。5.2 简单Servlet开发配置示例 在这一节中我们主要应用Servlet编写一个HelloWorld程序,实现向客户端浏览器中输出“HelloWorld”信息。在系统中创建的第一个Servlet程序系统会为我们自动生成web.xml配置文件,但是以后的Servlet程序就需要我们自己来配置了。即一般情况下都需要在当前应用项目的web.xml配置文件中对各个Servlet进行配置,其中web.xml文件的位置在当前项目应用的WEB-INF文件夹下。我们就结合图5.8的示例来讲解如何对Servlet进行配置,如图5.

5、9所示。5.2 简单Servlet开发配置示例 总之,编写一个Servlet要经过以下三个步骤:(1)编写Servlet的功能代码,即实现功能的代码类。(2)把编译成功的Servlet功能代码类文件拷贝到当前应用项目的WEB-INF/classes目录下。(3)在当前应用项目的web.xml文件中对Servlet进行配置,即在web.xml中添加配置信息。经过这样三个步骤我们就可以通过浏览器访问这个Servlet了。5.3 使用HttpServlet处理客户端请求 HttpServlet是使用HTTP协议的Web服务器的Servlet类,这个类已经被系统定义好。该类的一些方法,如doGet()

6、方法、doPost()方法等,提供了处理客户端请求的接口。在实际编程中,程序员需要继承这个类,并重写上述方法,去编写自己的Servlet。使用重写后的方法,就可以完成对客户端请求进行处理。5.3.1 处理Get请求doGet doGet()方法是HttpServlet类中用来处理Get请求的方法。用户通过继承HttpServlet,重写doGet()方法,实现对客户端的Get请求进行处理。要调用doGet()方法,必须在客户端的表单里指定请求的类型为Get。doGet()方法的语法格式如图5.10所示。5.3.2 处理Post请求doPost doPost()是HttpServlet中用于处理

7、Post请求的方法。如果要调用doPost()方法,必须在表单中指定Post请求。doPost()方法与doGet()方法的用法一般来说没什么区别,doGet()方法用于处理http get请求,doPost()方法用于外理http post请求。至于它们的不同,简单的说,get是通过http header来传输数据,有字数限制,而post则是通过http body来传输数据,没有字数的限制。doPost()方法的语法格式如图5.14所示。5.3.2 处理Post请求doPost 下面我们来为大家介绍一下javax.servlet.http提供的HTTP Servlet应用编程接口。创建Ser

8、vlet,需要扩展HttpServlet类,HttpServlet类包含init()、destroy()、service()等方法,其中init()和destroy()方法是继承的。具体的方法及方法描述如表5.1所示。当服务器调用sevlet的Service()、doGet()和doPost()这三个方法时,均需要“请求”和“响应”对象作为参数。“请求”对象提供有关请求的信息,而“响应”对象提供了一个将响应信息返回给浏览器的一个路径。方法名方法名方法描述方法描述init()方法方法服务器装入Servlet时执行。可以配置服务器,在启动服务器或客户机首次访问Servlet时装入Servletse

9、rvice()方法方法Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个请求(ServletRequest)对象和一个响应(ServletResponse)对象作为参数destroy()方法方法在服务器停止且卸装Servlet时执行该方法。可以将Servlet作为服务器进程的一部分来关闭GetServletConfig()方法方法GetServletConfig()方法返回一个ServletConfig对象,该对象用来返回初始化参数和ServletContext。ServletContext接口提供有关serv

10、let的环境信息GetServletInfo()方法方法GetServletInfo()方法是一个可选的方法,它提供有关servlet的信息,如作者、版本、版权等5.4 JSP页面调用Servlet 在上面HelloWorld的示例程序中,我们直接在浏览器中输入具体的地址进行访问。在实际的应用中,不可能让用户在浏览器中直接输入Servlet的地址进行访问。一般情况下,可以通过调用Servlet进行访问,在这里介绍通过提交表单和超链接两种方式调用Servlet。5.4.1 通过表单提交调用Servlet 在通过提交表单调用Servlet的时候,只需要把表单的action指向对应的Servlet即

11、可。5.4.2 通过超链接调用Servlet 当用户有输入的内容需要提交给服务器时,我们可以用表单来调用Servlet。如果在没有输入的数据内容需要提交的情况下,我们可以直接通过超链接的方式来调用Servlet,并对其传递参数。5.5 Servlet文件操作 在JSP的开发过程中,我们常常把相关内容存储为文件。在Servlet中我们可以使用输入输出流实现对文件的读写。同时,使用Servlet还可以很方便的实现文件的下载操作。这一节我们就来学习如何实现Servlet的文件操作。5.5.1 Servlet读取文件 我们举一个实例FileRead.java来读取一个文本文件content.txt的内

12、容,并且在页面上打印文件的内容。5.5.2 Servlet写文件 Servlet写文件的处理方法和读取文件的处理方法非常类似,即把文件输入流换成文件输出流。我们也可以来看一个写文件示例。5.5.3 Servlet下载文件 利用Servlet可以很方便地实现文件的下载,我们只需要对服务器的响应对象response进行简单的设置即可。5.6 Servlet的应用 Servlet是与HTTP协议紧密结合的,使用Servlet几乎可以处理HTTP协议各个方面的内容,在本节的几个示例程序中,将集中展示Servlet在HTTP方面的具体应用。5.6.1 获取请求信息头部内容 当用户访问一个页面的时候,会提

13、交一个HTTP请求给服务器的Servlet引擎,在这个请求中包含了HTTP文件的详细属性信息。我们可以应用request.getHeaderNames()方法来获取请求信息头部内容。5.6.2 获取请求信息 在上面的Servlet示例中,我们取出了HTTP文件头信息,在Servlet中还可以很方便取出用户发出请求对象自身的信息。这些信息是和用户的请求密切相关的,例如用户提交请求所使用的协议,客户提交表单的方法是POST还是GET等。5.6.3 获取参数信息 有关用户请求的参数信息,也可以通过Servlet来获取。这种参数既包括以POST方法或者是GET方法提交的表单,也包括直接使用超链接传递的

14、参数。Servlet都可以使用request.getParameter()方法取得这些参数信息并且加以处理。5.6.4 Cookie操作 Cookie是一种在客户端保存信息的技术。读者在浏览网页时可能会注意到这样的现象,如在打开某个登录网页时,在第一次打开时,用户名文本框是空的,当输入一个用户名,并成功登录后。在第二次打开这个登录网页时,在第一次输入的用户名会被自动填入这个用户名文本框,就算重启计算机后,仍然如此。其实这就是Cookie所起的作用。5.6.4 Cookie操作 在Servlet中,使用java.servlet.http.Cookie类来封装一个Cookie消息,在HttpSer

15、vletResponse接口中定义了一个addCookie方法来向浏览器发送Cookie消息(也就是Cookie对象),在HttpServletRequest接口中定义了一个getCookies方法来读取浏览器发送的Web服务器的所有Cookie消息。Cookie类中定义了生成和提取Cookie消息的各个属性的方法。Cookie类只有一个构造方法,它的语法结构如图5.47所示。5.6.4 Cookie操作 Cookie类中的其他常用方法如表5.3所示。方法名方法名方法描述方法描述getName方法方法用于获得Cookie的名称setValue和和getValue方法方法分别用于设置和获得Coo

16、kie的值setMaxAge和和getMaxAge方方法法分别用于设置和获得Cookie在客户机的有效时间,也就是在在客户机上的有效秒数setPath和和getPath方法方法分别用于设置和获得当前Cookie的有效Web路径setDomain和和getDomain方法方法分别用于设置和获得当前Cookie的有效域setComment和和getComment方法方法分别用于设置和返回当前Cookie的注释部分setVersion与与getVersion方法方法分别用于设置和获得当前Cookie的协议版本setSecure和和getSecure方法方法分别用于设置和获得当前Cookie是否只能使

17、用安全的协议传输Cookie5.7 Session技术 session对象用来保存每个用户的用户信息和会话状态。session对象由服务器端自动创建,可以跟踪每个用户的操作状态。用户首次登录系统时服务器会自动给用户分配唯一标识的session id,可以用来区分开其他用户。相对于Cookie,session是存储在服务器端的会话,相对安全,而且其存储长度限制也大大的扩大了。5.7.1 HttpSession接口方法 在Servlet中使用HttpSession对象来描述Session。一个HttpSession对象就是一个Session。使用HttpServletRequest接口的getSe

18、ssion方法来获得一个HttpSession对象。HttpSession接口中的主要方法如表5.4所示。方法名方法名方法描述方法描述getId方法方法用于返回当前HttpSession对象的SessionIDgetCreationTime方法方法用于返回当前的HttpSession对象的创建时间getLastAccessedTime方法方法用于返回当前HttpSession对象的上一次被访问的时间setMaxInactiveInterval和和getMaxInactiveInterval方法方法分别用来设置和返回当前HttpSession对象的可空闲的最长时间(单位:秒),这个时间也就是当前

19、会话的有效间隔isNew方法方法用来判断当前的HttpSession对象是否是新创建的,如果是则返回true,否则返回falseisvalidate方法方法用于强制当前的HttpSession对象失效,这样Web服务器可以立即释放该HttpSession对象getServletContext方法方法用于返回当前HttpSession对象所属的Web应用程序的ServletContext对象setAttribute方法方法用于将一个String类型的ID和一个对象相关联,并将其保存在当前的HttpSession对象中getAttribute方法方法用于返回一个和String类型的ID相关联的对象

20、remoteAttribute方法方法用于删除与一个String类型的ID相关联的对象5.7.1 HttpSession接口方法 getSession是HttpServletRequest接口的方法,这个方法用于返回与当前请求相关的HttpSession对象,该方法有两种重载形式,它们的定义语法如图5.52所示。5.7.2 通过Cookie跟踪Session 客户端必须通过一个SessionID才能找到以前在服务端创建的某一个HttpSession对象。通过SessionID找HttpSession对象的过程也叫做Session跟踪。一般客户端的SessionID通过HTTP请求消息头的Coo

21、kie字段发送给服务端,然后服务端通过getSession方法读取Cookie字段的值,以确定是否需要新建一个HttpSession对象,还是获得一个已经存在的HttpSession对象,或是什么都不做,直接返回null。当HttpSession对象是第一次创建时,向这个对象中写一个字符串值。如果HttpSession对象不是第一次创建,那么就将保存在HttpSession对象中的字符串值输出到客户端。5.7.3 通过重写URL跟踪Session 如果客户端浏览器不支持Cookie或是将Cookie功能关闭,那么就无法使用Cookie来传递SessionID。为了在这种情况下仍然可以使用Ses

22、sion,Servlet规范提供了一种补充会话管理机制。这种管理机制允许在Cookie无法工作的情况下使用URL参数来传递SessionID。要想通过URL来发送SessionID,必须要重写URL。HttpServletResponse提供了两个方法用于重写URL,如图5.56所示。5.8 Servlet过滤器 过滤器是小型的Web组件,它负责拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。Servlet过滤器应用非常广泛,有拦截的地方一般都可以用到过滤器。当前Web应用中过滤器已经是不可或缺的部分之一。5.8.1 过滤器的方法和配置 与过滤器相关的Servl

23、et共包含3个简单的接口,分别是Filter、FilterChain及FilterConfig。要实现过滤器功能,必须先实现Filter接口。Filter接口定义了3个方法,如图5.61所示。Servlets过滤器是一个Web应用组件,和Servlet类似,也需要在Web应用配置文件(即web.xml)中进行配置部署。5.8.1 过滤器的方法和配置 对于过滤器的映射配置,可以将过滤器映射到一个或多个Servlet和JSP文件中。以Servlet为例,我们来看其映射配置,如图5.63所示。注意:在web.xml中配置Servlet和Servlet过滤器,应该先声明过滤器元素,再声明Servlet

24、元素。5.8.2 过滤器应用实例禁止未授权的IP访问站点 在实际的应用中,可能会遇到这样的情况,需要对某些IP进行访问限制,不让非法的IP访问应用系统,这个时候就需要用到过滤器进行限制,当一个用户发出访问请求的时候,首先通过过滤器进行判断,如果用户的IP地址被限制,就禁止访问,只有合法的IP才可以继续访问。5.8.3 过滤器应用实例版权过滤器 现在的网页都会在尾部加上版权标志,对于这一操作,我们可以运用过滤器很方便地实现它。5.9 Servlet监听器 Servlet监听器是当今Web应用开发的一个重要组成部分。Servlet监听器主要用来对Web应用进行监听和控制,极大地增强了Web应用的事

25、件处理能力。一般来说,Servlet监听就是指一些特殊的Servlet类,这些类可以监听Web应用的上下文信息、Servlet会话信息、Servlet请求信息。在实际操作中,程序员需要继承或实现一些已定义好的类或接口,从而编写出自己用于监听的类。这些类对特定的信息进行监听。一旦被监听的事件发生,这些类会自动调用相应的方法去执行指定的操作。5.9.1 监听Servlet上下文信息 Servlet上下文信息主要是指关于ServletContext接口的一些信息,比如ServletContext的创建和删除,Servlet属性的增加、删除和修改等。这样就可以实现对Servlet上下文信息的跟踪和记录

26、。为了实现这样的功能,程序员需要实现ServletContextListener和ServletContextAttributeListener接口,从而编写出自己的Servlet类。ServletContext接口的主要方法如表5.4所示。方法名称方法名称方法描述方法描述getAttribute(String name)返回Servlet环境对象中指定的属性对象。如果该属性对象不存在,返回空值getAttributeNames()返回一个Servlet环境对象中可用的属性名的列表getContext(String uripath)返回一个Servlet环境对象,这个对象包括了特定URI路径的

27、Servlets和资源,如果该路径不存在,则返回一个空值getRealPath(String path)返回与一个符合该格式的虚拟路径相对应的真实路径的StringgetResource(String uripath)返回一个URL对象,该对象反映位于给定的URL地址的Servlet环境对象已知的资源getServerInfo()返回一个String对象,该对象至少包括Servlet引擎的名字和版本号void log(String msg,Throwable t)写指定的信息到一个Servlet环境对象的log文件中setAttribute(String name,Object o)给予Ser

28、vlet环境对象中你所指定的对象一个名称removeAttribute(String name)从指定的Servlet环境对象中删除一个属性5.9.1 监听Servlet上下文信息在使用这个监听器之前还需要对Web模块中的web.xml配置文件进行配置,配置代码如图5.75所示。然后我们就可以编写一个JSP程序testListener.jsp来操作ServletContext的属性,看监听器程序做出什么反应。5.9.2 监听HTTP会话信息 HTTP会话信息指的是Session对象的创建和销毁、会话中属性的设置请求、会话的状态和会话的绑定信息等。通过对HTTP会话信息的监听,可以进行一些很有用

29、的操作,比如,统计当前会话的数目、设置某个对话的属性、了解某个对话的状态等。与ServletContext监听的实现方法类似,对HTTP会话的监听也是通过实现特定的接口来完成的。监听HTTP会话信息需要使用到三个接口类:HttpSessionListener、HttpSessionActivationListener和HttpSessionAttributeListener接口。5.9.2 监听HTTP会话信息 这些接口的主要方法如表5.5所示。方法名方法名方法描述方法描述sessionCreated(HttpSessionEvent arg0)方法方法进行Http会话创建的监听,如果Http

30、会话被创建将调用该方法sessionDestroyed(HttpSessionEvent arg0)方法方法对Http会话销毁进行监听,如果某个Http会话被释放将调用该方法sessionDidActivate(HttpSessionEvent arg0)方法方法对Http会话处于active情况进行监听sessionWillPassivate(HttpSessionEvent arg0)方法方法对Http会话处于passivate情况进行监听attributeAdded(HttpSessionBindingEvent arg0)方方法法对Http会话中属性添加进行监听attributeRep

31、laced(HttpSessionBindingEvent arg0)方法方法对Http会话中属性修改进行监听attributeRemoved(HttpSessionBindingEvent arg0)方法方法对Http会话中属性删除进行监听5.9.3 对客户端请求进行监听 客户端请求信息是指请求对象的创建、销毁以及其属性的添加、更改和删除。一旦可以对客户端发向服务器的请求进行监听,就可以对它们进行识别,然后统一处理。对客户端请求信息的监听的实现方法与上面两种类似,通过实现ServletRequestListener和ServletRequestAttributeListener接口来完成。这

32、些接口的主要方法如表5.6所示。方法名方法名方法描述方法描述ServletRequestListener()方法方法监听客户端请求的创建和销毁attributeAdded(HttpSessionBindingEvent arg0)方法方法对Http会话中属性添加进行监听attributeReplaced(HttpSessionBindingEvent arg0)方法方法对Http会话中属性修改进行监听attributeRemoved(HttpSessionBindingEvent arg0)方法方法对Http会话中属性删除进行监听5.10 小结 本章首先介绍了Servlet编程方面的基础知识,然后在此基础上介绍了Servlet的配置和处理方法,接着我们为大家讲解了如何利用JSP页面调用Servlet和有关Servlet的文件操作,最后我们通过实例讲解了Servlet的具体应用和过滤器、监听器的知识。本章的重点是Servlet的文件操作以及Servlet应用方面的知识,难点是难点是Session技术以及Servlet过滤器、监听器知识的理解和应用。熟练掌握Servlet是学好Java Web技术的基本要求,所以读者要多加练习,以打好基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(轻松学JavaWeb开发之Servlet编程课件.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|