Servlet 的工作原理及部署的分析与应用


第 3 卷 第 3 期 2010 年 6 月 清远职业技术学院学报 Journal of Qingyuan Polytechnic Vol. 3 , No. 3 June. 2010 1 什么是 Servlet Servlet 是用 Java 编写的运行在 Web 服务器中 的程序,因此它可以调用服务器端的类,也可以被 调用,它本身也是一个类。 需要特别注意区分 Servlet、JavaScript 以及 Java Applet,JavaScript 是运行在客户端浏览器中的脚本 程序,Java Applet 是运行在客户端的 Java 小程序, 而 Servlet 是运行在服务器端的。 2 Servlet 的工作原理 Servlet 由 Web 服务器引擎负责编译执行,当客 户端浏览器访问 Servlet 时,服务器将启动一个线程 来响应,而并非 CGI 技术的进程,因此相对 CGI 方 式占用的系统资源 (特别是内存)比较少,具有较 高的运行效率。 当 Web 服务器中的 Servlet 被请求访问时,此 Servlet 被加载到 Java 虚拟机中,在 Servlet 中要接受 HTTP 请求并作相应处理。由于 Servlet 是在服务器 端运行的,对客户完全透明,因此比 Java Applet 具 有更好的安全性,当服务器有防火墙的保护时, Servlet 也就受到防火墙的保护。 2.1 Servlet 的生命周期 一个 Servlet 的生命周期主要有三个过程[1]: (1) Servlet 的初始化。Servlet 实际是一个类, 当第一次被客户端请求时,Web 服务器引擎首先要 生成这个 Servlet 类的对象,并加载这个对象,通过 这个对象的 init()方法完成一些初始化的工作。 (2) 生成的 Servlet 类的对象调用 service()方法 来响应请求。 (3) Servlet 类的对象自第一次被生成后将常驻 内存直至 Web 服务被关闭,当再次被请求将直接从 内存中取出对象来响应请求。当 Web 服务被关闭时, 将调用 service 类的对象的 destroy()方法消除此对象。 在上述的三个过程中,init()方法只被调用一次, 即第一次被请求时调用;service()方法在每次 Servlet 被请求时都会被执行。具体的调用过程如图 1: 图 1 Servlet 的生命周期 2.2 Servlet 相关的类及方法 Servlet 相关的扩展程序包主要有两个:javax. Servlet 和 javax.Servlet.http [2]。对于基于 HTTP 协议的 Web 开发,只需用 javax.Servlet.http 包中的类开发即可。 当客户端请求 Servlet 时,服务器端将接收两个 类的对象,一个是 ServletRequest,描述客户端对服 务器的请求;另一个是 ServletResponse,描述服务 器端对客户端的响应。通过 ServletRequest 可以得到 收稿日期:2010- 04- 29 , 2010- 05- 06 修回 作者简介:田素贞 (1974—),女 ,河南商丘人, 讲师, 在读硕士研究生,主要研究方向:计算机应用。 Servlet 的工作原理及部署的分析与应用 田素贞 赵 康 (商丘职业技术学院计算机系 河南商丘 476000) 摘要:Servlet 技术是 Sun 公司提供的一种实现动态网页的解决方案,它是基于 Java 编程语言的 WEB 服务器端编 程技术,主要用于在 WEB 服务器端获得客户端的访问请求信息和动态生成对客户端的响应消息。Servlet 技术也是 JSP 技术 (另外一种动态网页开发技术)的基础。一个 Servlet 程序就是一个实现了特殊接口的 Java 类,用于被支持 Servlet 的 WEB 服务器调用和运行,即只能运行于具有 Servlet 引擎的 WEB 服务器端。一个 Servlet 程序负责处理它所对应的 一个或一组 URL 地址的访问请求,接收访问请求信息和产生响应内容。本文将对其工作原理及部署进行详细的分析, 并以实例对其应用进行说明。 关键词:Servlet;工作原理;部署 中图分类号:TP31 文献标识码:A 文章编号:1674- 4896 (2010) 03- 0052- 02 52 Analysis and Application on the Principle and Deployment of Servlet TIAN Suzhen ZHAO Kang (Department of Computer Science,Shangqiu Polytechnic, Shangqiu Henan,476000, China) Abstract: Servlet technology which is provided by Sun Microsystems, Inc. is an solution to the implementation of dynamic web page, which is based on the Java programming language of the WEB server-side programming techniques, mainly used in the WEB server-side access to the client's access-request information and dynamically generated response messages to the client. Servlet technology is also a basis to JSP technology (in addition to a dynamic web page development technology). A Servlet program is an implementation of a special interface to Java and is used to support WEB server's operation, which can only be run on a WEB server-side with a Servlet engine. A Servlet program deals with one or a group of its corresponding access request to URL addresses, receive access-request information and generate response. This article analyszes its working principle and deployment in details and illustrates examples of its application. Keywords: Servlet;Principle;Deployment 客户端请求的一些信息,如使用的协议、客户端主 机名。ServletInputStream 是客户端请求使用 POST 或 PUT 方法提交的数据。用 ServletResponse 可设置 响应的 mime 类型,用 ServletOutputStream 可向客户 端输出数据。 Servlet 类从 HttpServlet 类扩展而来,并已有一 些基本的方法,一般在 service()方法中调用[3]。 (1) doGet():用来处理 HTTP 的 Get 请求。 (2) doPost():用来处理 HTTP 的 Post 请求。 (3) init():这个方法用来完成一些初始化的工 作,如数据库连接初始化、设置变量的值等。当 Servlet 第一次被请求时该方法会被调用,再次请求 就不会了。当方法中出现异常时会抛出 ServletExc- epion 异常。 (4) service():用来处理对客户端的响应。 (5) destroy():当服务关闭时就会调用 Servlet 的 destroy()方法。 3 部署 Servlet 要 部 署 Servlet, 首 先 要 编 译 Servlet。 编 译 Servlet 要用到 Servlet.jar 中的相关的类。本文中假定 把 Tomcat4.0 安装在 d:/tomcat4 下,故操作如下: 在环境变量的 CLASSPATH 的值后加入如下的值: d:\tomcat4\common\lib\servlet.jar 如果只是临时编译 Servlet,可以编译之前在命 令行状态下执行如下命令: SET CLASSPATH= d:\tomcat4\common\lib\servlet.jar 编译 Servlet 的方法与编译 JavaBean 的方法一 样,即执行 javac 命令,编译源代码文件.java 到字 节码文件.class。 部署 Servlet 的方法有两种,一种是在部署后所 有的应用都可以使用,可把字节码文件.class 拷贝 至 Tomcat4.0 安装目录 classes 子目录中;另一种是 在部署后仅在当前应用有效,可把字节码文件.class 拷贝至当前应用的 WEB- INF/classes 子目录中。看 一个简单的实例[3]。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class firstServlet extends HttpServlet { public void init (ServletConfig config) throws ServletException { super.init(config); } public void service (HttpServletRequest request, HttpServletResponse response) throws IOException { // 设置 mime response.setContentType("text/html;charset=GB2312"); PrintWriter out=response.getWriter(); out.println(" "); out.println(" 这是一个简单的 servlet。"); out.println (" 客 户 端 IP 地 址 是 : "+request. getRemoteAddr()+"
"); out.println(" "); } } 程序中的 init()方法直接使用父类的 init()方法, 用 setContentType()设置 mime 类型,以支持中文显 示,用 HttpServletResponse 类对象 response 的 getWriter ()得到输出流,用 HttpServletRequest 类对象 request 的 getRemoteAddr()方法得到客户端的 IP 地址。 编译 Servlet 后,把.class 文件拷贝至 Tomcat4.0 安 装目录 classes 子目录中,在浏览器中输入地址:http: //localhost:8080/servlet/firstServlet,即可运行 Servlet。 参考文献: [1] 王强. jsp 开发技术[M]. 北京:高等教育出版社,2005. [2] 余芳. jsp 动态网站开发案例指导[M]. 北京:电子工业出版 社,2009. [3] 李尊朝. java 语言程序设计例题解析与实验指导[M]. 北京: 中国铁道出版社,2008. 第 3 卷 清远职业技术学院学报 2010 年 53
还剩1页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

672381992

贡献于2014-08-29

下载需要 2 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf