轻松学JavaWeb开发之Servlet编程.pptx
《轻松学JavaWeb开发之Servlet编程.pptx》由会员分享,可在线阅读,更多相关《轻松学JavaWeb开发之Servlet编程.pptx(42页珍藏版)》请在装配图网上搜索。
第5章Servlet编程 Servlet是JavaWeb程序的核心 JSP和几乎所有的JavaWeb框架 如Struts Webwork 在底层的实现都会看到Servlet的影子 因此 充分了解Servlet的原理和使用方法 对于以后学习Struts等Web框架将起到非常大的帮助 本章我们将为大家介绍Servlet的基础知识 并通过具体的示例介绍Servlet的强大功能 5 1Servlet基础 Servlet在本质上就是Java类 编写Servlet需要遵循Java的基本语法 但是与一般Java类所不同的是 Servlet是只能运行在服务器端的Java类 而且必需遵循特殊的规范 在运行的过程中有自己的生命周期 5 1 1什么是Servlet Servlet是运行于服务器端的 按照其自身规范编写的Java应用程序 我们可以用图5 1来解释这个概念 Servlet的主要功能是用来接受 处理客户端请求 并把处理结果返回到客户端显示 其作用过程如图5 2所示 5 1 2Servlet的生命周期 Servlet需要在特定的容器中才能运行 在这里所说的容器即Servlet运行的时候所需的运行环境 一般情况下 市面上常见的JavaWebServer都可以支持Servlet 例如Tomcat Resin Weblogic WebSphere等 在本书中采用Tomcat作为Servlet的容器 由Tomcat为Servlet提供基本的运行环境 Servlet的生命周期指的是Servlet从被Web服务器加载到它被销毁的整个生命过程 这个过程如图5 3所示 5 1 2Servlet的生命周期 从图5 3中我们呢可以看出 Servlet生命周期的执行大致分为4个步骤 如图5 4所示 在以上几个阶段中 Servlet对外提供服务阶段是最重要的 service 方法是编程人员真正要关心的方法 因为它才是Servlet真正开始响应客户端请求 并且处理业务逻辑的方法 service 接收到客户端请求后 再调用该Servlet的相应的方法去处理请求 所以程序员在编写自己的Servlet时 一般只需要重写方法 在该方法中去处理客户端请求 并把处理结果返回 5 2简单Servlet开发配置示例 在这一节中我们主要应用Servlet编写一个HelloWorld程序 实现向客户端浏览器中输出 HelloWorld 信息 在系统中创建的第一个Servlet程序系统会为我们自动生成web xml配置文件 但是以后的Servlet程序就需要我们自己来配置了 即一般情况下都需要在当前应用项目的web xml配置文件中对各个Servlet进行配置 其中web xml文件的位置在当前项目应用的WEB INF文件夹下 我们就结合图5 8的示例来讲解如何对Servlet进行配置 如图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 方法 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中用于处理Post请求的方法 如果要调用doPost 方法 必须在表单中指定Post请求 doPost 方法与doGet 方法的用法一般来说没什么区别 doGet 方法用于处理httpget请求 doPost 方法用于外理httppost请求 至于它们的不同 简单的说 get是通过httpheader来传输数据 有字数限制 而post则是通过httpbody来传输数据 没有字数的限制 doPost 方法的语法格式如图5 14所示 5 3 2处理Post请求doPost 下面我们来为大家介绍一下javax servlet http提供的HTTPServlet应用编程接口 创建Servlet 需要扩展HttpServlet类 HttpServlet类包含init destroy service 等方法 其中init 和destroy 方法是继承的 具体的方法及方法描述如表5 1所示 当服务器调用sevlet的Service doGet 和doPost 这三个方法时 均需要 请求 和 响应 对象作为参数 请求 对象提供有关请求的信息 而 响应 对象提供了一个将响应信息返回给浏览器的一个路径 5 4JSP页面调用Servlet 在上面HelloWorld的示例程序中 我们直接在浏览器中输入具体的地址进行访问 在实际的应用中 不可能让用户在浏览器中直接输入Servlet的地址进行访问 一般情况下 可以通过调用Servlet进行访问 在这里介绍通过提交表单和超链接两种方式调用Servlet 5 4 1通过表单提交调用Servlet 在通过提交表单调用Servlet的时候 只需要把表单的action指向对应的Servlet即可 5 4 2通过超链接调用Servlet 当用户有输入的内容需要提交给服务器时 我们可以用表单来调用Servlet 如果在没有输入的数据内容需要提交的情况下 我们可以直接通过超链接的方式来调用Servlet 并对其传递参数 5 5Servlet文件操作 在JSP的开发过程中 我们常常把相关内容存储为文件 在Servlet中我们可以使用输入输出流实现对文件的读写 同时 使用Servlet还可以很方便的实现文件的下载操作 这一节我们就来学习如何实现Servlet的文件操作 5 5 1Servlet读取文件 我们举一个实例FileRead java来读取一个文本文件content txt的内容 并且在页面上打印文件的内容 5 5 2Servlet写文件 Servlet写文件的处理方法和读取文件的处理方法非常类似 即把文件输入流换成文件输出流 我们也可以来看一个写文件示例 5 5 3Servlet下载文件 利用Servlet可以很方便地实现文件的下载 我们只需要对服务器的响应对象response进行简单的设置即可 5 6Servlet的应用 Servlet是与HTTP协议紧密结合的 使用Servlet几乎可以处理HTTP协议各个方面的内容 在本节的几个示例程序中 将集中展示Servlet在HTTP方面的具体应用 5 6 1获取请求信息头部内容 当用户访问一个页面的时候 会提交一个HTTP请求给服务器的Servlet引擎 在这个请求中包含了HTTP文件的详细属性信息 我们可以应用request getHeaderNames 方法来获取请求信息头部内容 5 6 2获取请求信息 在上面的Servlet示例中 我们取出了HTTP文件头信息 在Servlet中还可以很方便取出用户发出请求对象自身的信息 这些信息是和用户的请求密切相关的 例如用户提交请求所使用的协议 客户提交表单的方法是POST还是GET等 5 6 3获取参数信息 有关用户请求的参数信息 也可以通过Servlet来获取 这种参数既包括以POST方法或者是GET方法提交的表单 也包括直接使用超链接传递的参数 Servlet都可以使用request getParameter 方法取得这些参数信息并且加以处理 5 6 4Cookie操作 Cookie是一种在客户端保存信息的技术 读者在浏览网页时可能会注意到这样的现象 如在打开某个登录网页时 在第一次打开时 用户名文本框是空的 当输入一个用户名 并成功登录后 在第二次打开这个登录网页时 在第一次输入的用户名会被自动填入这个用户名文本框 就算重启计算机后 仍然如此 其实这就是Cookie所起的作用 5 6 4Cookie操作 在Servlet中 使用java servlet http Cookie类来封装一个Cookie消息 在HttpServletResponse接口中定义了一个addCookie方法来向浏览器发送Cookie消息 也就是Cookie对象 在HttpServletRequest接口中定义了一个getCookies方法来读取浏览器发送的Web服务器的所有Cookie消息 Cookie类中定义了生成和提取Cookie消息的各个属性的方法 Cookie类只有一个构造方法 它的语法结构如图5 47所示 5 6 4Cookie操作 Cookie类中的其他常用方法如表5 3所示 5 7Session技术 session对象用来保存每个用户的用户信息和会话状态 session对象由服务器端自动创建 可以跟踪每个用户的操作状态 用户首次登录系统时服务器会自动给用户分配唯一标识的sessionid 可以用来区分开其他用户 相对于Cookie session是存储在服务器端的会话 相对安全 而且其存储长度限制也大大的扩大了 5 7 1HttpSession接口方法 在Servlet中使用HttpSession对象来描述Session 一个HttpSession对象就是一个Session 使用HttpServletRequest接口的getSession方法来获得一个HttpSession对象 HttpSession接口中的主要方法如表5 4所示 5 7 1HttpSession接口方法 getSession是HttpServletRequest接口的方法 这个方法用于返回与当前请求相关的HttpSession对象 该方法有两种重载形式 它们的定义语法如图5 52所示 5 7 2通过Cookie跟踪Session 客户端必须通过一个SessionID才能找到以前在服务端创建的某一个HttpSession对象 通过SessionID找HttpSession对象的过程也叫做Session跟踪 一般客户端的SessionID通过HTTP请求消息头的Cookie字段发送给服务端 然后服务端通过getSession方法读取Cookie字段的值 以确定是否需要新建一个HttpSession对象 还是获得一个已经存在的HttpSession对象 或是什么都不做 直接返回null 当HttpSession对象是第一次创建时 向这个对象中写一个字符串值 如果HttpSession对象不是第一次创建 那么就将保存在HttpSession对象中的字符串值输出到客户端 5 7 3通过重写URL跟踪Session 如果客户端浏览器不支持Cookie或是将Cookie功能关闭 那么就无法使用Cookie来传递SessionID 为了在这种情况下仍然可以使用Session Servlet规范提供了一种补充会话管理机制 这种管理机制允许在Cookie无法工作的情况下使用URL参数来传递SessionID 要想通过URL来发送SessionID 必须要重写URL HttpServletResponse提供了两个方法用于重写URL 如图5 56所示 5 8Servlet过滤器 过滤器是小型的Web组件 它负责拦截请求和响应 以便查看 提取或以某种方式操作正在客户机和服务器之间交换的数据 Servlet过滤器应用非常广泛 有拦截的地方一般都可以用到过滤器 当前Web应用中过滤器已经是不可或缺的部分之一 5 8 1过滤器的方法和配置 与过滤器相关的Servlet共包含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元素 5 8 2过滤器应用实例 禁止未授权的IP访问站点 在实际的应用中 可能会遇到这样的情况 需要对某些IP进行访问限制 不让非法的IP访问应用系统 这个时候就需要用到过滤器进行限制 当一个用户发出访问请求的时候 首先通过过滤器进行判断 如果用户的IP地址被限制 就禁止访问 只有合法的IP才可以继续访问 5 8 3过滤器应用实例 版权过滤器 现在的网页都会在尾部加上版权标志 对于这一操作 我们可以运用过滤器很方便地实现它 5 9Servlet监听器 Servlet监听器是当今Web应用开发的一个重要组成部分 Servlet监听器主要用来对Web应用进行监听和控制 极大地增强了Web应用的事件处理能力 一般来说 Servlet监听就是指一些特殊的Servlet类 这些类可以监听Web应用的上下文信息 Servlet会话信息 Servlet请求信息 在实际操作中 程序员需要继承或实现一些已定义好的类或接口 从而编写出自己用于监听的类 这些类对特定的信息进行监听 一旦被监听的事件发生 这些类会自动调用相应的方法去执行指定的操作 5 9 1监听Servlet上下文信息 Servlet上下文信息主要是指关于ServletContext接口的一些信息 比如ServletContext的创建和删除 Servlet属性的增加 删除和修改等 这样就可以实现对Servlet上下文信息的跟踪和记录 为了实现这样的功能 程序员需要实现ServletContextListener和ServletContextAttributeListener接口 从而编写出自己的Servlet类 ServletContext接口的主要方法如表5 4所示 5 9 1监听Servlet上下文信息 在使用这个监听器之前还需要对Web模块中的web xml配置文件进行配置 配置代码如图5 75所示 然后我们就可以编写一个JSP程序testListener jsp来操作ServletContext的属性 看监听器程序做出什么反应 5 9 2监听HTTP会话信息 HTTP会话信息指的是Session对象的创建和销毁 会话中属性的设置请求 会话的状态和会话的绑定信息等 通过对HTTP会话信息的监听 可以进行一些很有用的操作 比如 统计当前会话的数目 设置某个对话的属性 了解某个对话的状态等 与ServletContext监听的实现方法类似 对HTTP会话的监听也是通过实现特定的接口来完成的 监听HTTP会话信息需要使用到三个接口类 HttpSessionListener HttpSessionActivationListener和HttpSessionAttributeListener接口 5 9 2监听HTTP会话信息 这些接口的主要方法如表5 5所示 5 9 3对客户端请求进行监听 客户端请求信息是指请求对象的创建 销毁以及其属性的添加 更改和删除 一旦可以对客户端发向服务器的请求进行监听 就可以对它们进行识别 然后统一处理 对客户端请求信息的监听的实现方法与上面两种类似 通过实现ServletRequestListener和ServletRequestAttributeListener接口来完成 这些接口的主要方法如表5 6所示 5 10小结 本章首先介绍了Servlet编程方面的基础知识 然后在此基础上介绍了Servlet的配置和处理方法 接着我们为大家讲解了如何利用JSP页面调用Servlet和有关Servlet的文件操作 最后我们通过实例讲解了Servlet的具体应用和过滤器 监听器的知识 本章的重点是Servlet的文件操作以及Servlet应用方面的知识 难点是难点是Session技术以及Servlet过滤器 监听器知识的理解和应用 熟练掌握Servlet是学好JavaWeb技术的基本要求 所以读者要多加练习 以打好基础- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 轻松 JavaWeb 开发 Servlet 编程
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文