swrvlet技术基础知识

上传人:第*** 文档编号:61907926 上传时间:2018-12-14 格式:PDF 页数:30 大小:595.68KB
返回 下载 相关 举报
swrvlet技术基础知识_第1页
第1页 / 共30页
swrvlet技术基础知识_第2页
第2页 / 共30页
swrvlet技术基础知识_第3页
第3页 / 共30页
swrvlet技术基础知识_第4页
第4页 / 共30页
swrvlet技术基础知识_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《swrvlet技术基础知识》由会员分享,可在线阅读,更多相关《swrvlet技术基础知识(30页珍藏版)》请在金锄头文库上搜索。

1、 第 5 章 Servlet 技术基础知识 Servlet 是一种服务器端的编程语言,是 J2EE 中比较关键的组成部分,Servlet 技术的推出,扩展了 Java 语言在服务器端开发的功能, 巩固了 Java 语言在服务器端开发中的地位, 而且现在使用非常广泛的 JSP 技术也是基于 Servlet 的原理,JSP+JavaBeans+Servlet 成为实现 MVC 模式的一种有效的选择。在本 章中将介绍 Servlet 的基础知识,并通过具体的示例介绍 Servlet 的强大功能。 5.1 Servlet 简介 Servlet 在本质上就是 Java 类, 编写 Servlet 需要遵

2、循 Java 的基本语法, 但是与一般 Java 类所不同的 是,Servlet 是只能运行在服务器端的 Java 类,而且必需遵循特殊的规范,在运行的过程中有自己的生 命周期,这些特性都是 Servlet 所独有的。另外 Servlet 是和 HTTP 协议是紧密联系的,所以使用 Servlet 几乎可以处理 HTTP 协议各个方面的内容,这也正是 Servlet 收到开发人员青睐的最大原因。 5.1.1 Servlet 的工作原理 Servlet 需要在特定的容器中才能运行,在这里所说的容器即 Servlet 运行的时候所需的运行环境, 一般情况下, 市面上常见的 Java Web Ser

3、ver 都可以支持 Servlet, 例如 Tomcat、 Resin、 Weblogic、 WebSphere 等,在本书中采用 Tomcat 作为 Servlet 的容器,由 Tomcat 为 Servlet 提供基本的运行环境。 Servlet 容器环境在 HTTP 通信和 web 服务器平台之间实现了一个抽象层。Servlet 容器负责把请求 传递给 Servlet,并把结果返回结客户。容器环境也提供了配置 Servlet 应用的简单方法,并且也提供用 XML 文件配置 Servlet 的方法。当 Servlet 容器收到对用户对 Servlet 请求的时候,Servlet 引擎就会判

4、断 这个 Servlet是否是第一次被访问, 如果是第一次访问, Servlet引擎就会初始化这个 Servlet, 即调用 Servlet 中的 init()方法完成必要的初始化工作,当后续的客户请求 Servlet 服务的时候,就不再调用 init() 方法,而是直接调用 service()方法,也就是说每个 Servlet 只被初始化一次,后续的请求只是新建一 个线程,调用 Servlet 中的 service()方法。 在使用 Servlet 的过程中,并发访问的问题由 Servlet 容器处理,当多个用户请求同一个 Servlet 的时 候,Servlet 容器负责为每个用户启动一个

5、线程,这些线程的运行和销毁由 Servlet 容器负责,而在传统 的 CGI 程序中,是为每一个用户启动一个进程,因此 Servlet 的运行效率就要比 CGI 的高出很多。 5.1.2 Servlet 的生命周期 Servlet 是运行在服务器端的程序,所以 Servlet 的运行状态完全由 Servlet 容器维护,一个 Servlet 的 生命周期一般有三个过程。 1初始化初始化 当一个 Servlet 被第一请求的时候,Servlet 引擎就初始化这个 Servlet,在这里是调用 init()方法完 成必需的初始化工作。而且这个对象一致在内存中活动,Servlet 为后续的客户请求新

6、建线程,直接调用 Servlet 中的 service()方法提供服务,不再初始化 Servlet。 2提供服务提供服务 当 Servlet 对象被创建以后,就可以调用具体的 service()方法为用户提供服务。 3销毁销毁 Servlet 被初始化以后一直再内存中保存,后续的访问可以不再进行初始化工作,当服务器遇到问题 需要重新启动的时候,这些对象就需要被销毁,这时候 Servlet 引擎就会调用 Servlet 的 destroy()方法 把内存中的 Servlet 对象销毁。 5.1.3 简单 Servlet 开发配置示例 Java Servlet API 包括两个基本的包, java

7、x.servlet 和 javax.servlet.http, 其中 javax.servlet 提供了用来 控制Servlet生命周期所需的类和接口, 是编写Servlet必需要实现的。 javax.servlet.http提供了处理与HTTP 相关操作的类和接口,每个 Servlet 必需实现 Servlet 接口,但是在实际的开发中,一般情况都是通过继 承 javax.servlet.http.HttpServlet 或者 javax.servlet.GenericServlet 来间接实现 Servlet 接口。 下面这个简单的示例程序就是继承了 javax.servlet.http.

8、HttpServle,从而实现 Servlet 接口,具体的代 码如下。 /-文件名:HelloWorld.java- package servlets; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletExce

9、ption response.setContentType(“text/html“); PrintWriter out = response.getWriter(); out.println(“); out.println(“); out.println(“Hello World!“); out.println(“); out.println(“); out.println(“Hello World!“); out.println(“); out.println(“); 在上面这个简单的示例程序中,继承了 HttpServlet,而 HttpServlet 是一个实现了 Servlet 接口的

10、类, 所以这个 Servlet 就间接地实现了 Servlet 的接口,从而可以使用接口提供的服务。 在这个程序中,并没有具体的 init()方法和 destroy()方法,这里使用 Servlet 容器默认的方式对 这个 Servlet 进行初始化和销毁动作,而在这里的 doGet()方法就是具体的功能处理方法,这个方法可 以对以 get 方法发起的请求进行处理,在这里这个方法的功能就是打印出一个 HTML 页面。 上面这个程序编译以后会生成对应的 Servlet 类文件,把编译生成的类文件拷贝到当前应用项目的 WEB-INF/classes 文件夹中,Servlet 引擎会到这个目录下面寻

11、找 Servlet 的类文件。这里需要注意,如果 Servlet 有包名, 这时候把需要把整个包拷贝, 而不是仅仅拷贝类文件。 负责 Servlet 引擎就会找不到 Servlet 类文件 Servlet 引擎需要通过配置文件来找到具体的 Servlet,在一般情况下都需要在当前应用项目的 web.xml 配置文件中对各个 Servlet 进行配置,其中 web.xml 文件的位置在当前项目应用的 WEB-INF 文 件夹下。对于上面这个简单的 Servlet 示例,可以在 web.xml 中进行如下的配置。 HelloWorld servlets.HelloWorld HelloWorld

12、/HelloWorld 对于每一个 Servlet 都需要像上面这样的配置信息,这时 Servlet 引擎初始化 Servlet 所必需的信息, 这个配置信息可以分为两个部分,第一部分是配置 Servlet 的名称和类,第二部分是配置 Servlet 的访问 路径,其中是这个 Servlet 的名称,这个名字可以任意命名,但是要和 节点中的保持一致, 是 Servlet 对应类的路径, 在这里要注意, 如果有 Servlet 带有包名,一定要把包路径写全,否则 Servlet 引擎就找不到对应的 Servlet 类。节点是 对 Servlet 的访问路径进行配置,定义了 Servlet 的访问

13、路径。 经过上面的步骤,就可以使用类似 http:/localhost:8080/chapt5/HelloWorld 这样的网址访问这个 Servlet,其中 http:/localhost:8080/是本机 Tomcat 服务器的访问地址,chapt5 是当前应用项目的名称, HelloWorld 是 Servlet 的访问路径,当 Servlet 引擎接收到这样的请求的时候,就会初始化 HelloWorld 这 个 Servlet,然后调用其中的方法为用户提供服务。 上面这个简单的示例程序的运行效果如图 5.1 所示。 图 5.1 HelloWorld 示例程序运行效果 总之,编写一个 S

14、ervlet 要经过以下几个步骤。 (1)编写 Servlet 的功能代码,即实现功能的代码类。 (2)把编译成功的 Servlet 功能代码类文件拷贝到当前应用项目的 WEB-INF/classes 目录下。 (3)在当前应用项目的 web.xml 文件中对 Servlet 进行配置,即在 web.xml 中添加配置信息。 经过这样三个步骤就可以通过浏览器访问这个 Servlet。 注意:Servlet 的配置信息需要添加在标签之间。 5.1.4 使用 Servlet 实现 MVC 开发模式 Java 语言之所以受到开发人员支持, 是因为 Java 语言实现科学方便的开发模式, 在这些开发模

15、式中, 最出色而且应用最广的就是 MVC 模式,对于 MVC 模式的研究由来已久,但是一直没有得到很好的推 广和应用,随着 J2EE 技术的成熟,MVC 逐渐成为了一种常用而且重要的设计模式。 MVC(Model-View-Controller)把应用程序的开发分为三个层面:视图层、控制层、模型层。其中 视图层负责从用户获取数据和向用户展示数据,在这层中不负责对业务逻辑的处理和数据流程的控制。 而模型层负责处理业务逻辑和数据库的底层操作,其中视图层和模型层之间没有直接的联系。控制层主 要负责处理视图层和模型层的交互,控制层从视图层接收请求,然后从模型层取出对请求的处理结果, 并把结果返回给视图

16、层。在控制层中只负责数据的流向,并不涉及具体的业务逻辑处理。 MVC 三层结构的内部关系如图 5.2 所示。 图 5.2 MVC 三层结构的内部关系 从图 5.2 中可以看出,Servlet 在 MVC 开发模式中承担着重要的角色,在 MVC 结构中,控制层就 是依靠 Servlet 实现,Servlet 可以从浏览器端接收请求,然后从模型层取出处理结果,并且把处理结果 返回给浏览器端的用户。在整个结构中,Servlet 负责数据流向控制的功能。 虽然现在用很多开源框架都很好的实现了 MVC 的开发模式,例如 Struts、WebWork 等,这些开源 框架对 MVC 的实现都是非常出色的,在这些框架中,处理数据控制流向的时候,采用的还是 Servlet, 例如在 Struts 中,对应每一个用户请求都有一个 Action,这个 Action 就是继承了 Servlet 的类,所以在 MVC 架构中,Servlet 是不可替代的。 5.2 JSP 页面调用 Servlet 的方法 在上

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号