Servlet

本文详细阐述了Servlet的工作原理、生命周期、文件操作、HTTP操作方法等核心内容,并通过示例展示了如何使用Servlet实现MVC开发模式、调用方法、过滤器及应用示例。重点突出了Servlet与HTTP协议的紧密联系,以及其实现MVC模式的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet
2010年02月21日
  第五章 Servlet技术基础知识
  Servlet是一种服务器端的编程语言,是J2EE中比较关键的组成部分,Servlet技术的推出,扩展了Java语言在服务器端开发的功能,巩固了Java语言在服务器端开发中的地位,而且现在使用非常广泛的JSP技术也是基于Servlet的原理,JSP+JavaBeans+Servlet成为实现MVC模式的一种有效的选择。在本章中将介绍Servlet的基础知识,并通过具体的示例介绍Servlet的强大功能。
  5.1 Servlet简介
  Servlet在本质上就是Java类,编写Servlet需要遵循Java的基本语法,但是与一般Java类所不同的是,Servlet是只能运行在服务器端的Java类,而且必需遵循特殊的规范,在运行的过程中有自己的生命周期,这些特性都是Servlet所独有的。另外Servlet是和HTTP协议是紧密联系的,所以使用Servlet几乎可以处理HTTP协议各个方面的内容,这也正是Servlet收到开发人员青睐的最大原因。
  5.1.1 Servlet的工作原理
  Servlet容器环境在HTTP通信和web服务器平台之间实现了一个抽象层。Servlet容器负责把请求传递给Servlet,并把结果返回结客户。在使用Servlet的过程中,并发访问的问题由Servlet容器处理,当多个用户请求同一个Servlet的时候,Servlet容器负责为每个用户启动一个线程,这些线程的运行和销毁由Servlet容器负责,而在传统的CGI程序中,是为每一个用户启动一个进程,因此Servlet的运行效率就要比CGI的高出很多。
  5.1.2 Servlet的生命周期
  Servlet是运行在服务器端的程序,所以Servlet的运行状态完全由Servlet容器维护,一个Servlet的生命周期一般有三个过程。
  1.初始化
  2.提供服务
  3.销毁
  5.1.3 简单Servlet开发配置示例
  Java Servlet API包括两个基本的包,javax.servlet 和javax.servlet.http,其中javax.servlet提供了用来控制Servlet生命周期所需的类和接口,是编写Servlet必需要实现的。javax.servlet.http提供了处理与HTTP相关操作的类和接口,每个Servlet必需实现Servlet接口,但是在实际的开发中,一般情况都是通过继承 javax.servlet.http.HttpServlet或者javax.servlet.GenericServlet来间接实现Servlet接口。
  5.1.4 使用Servlet实现MVC开发模式
  Java语言之所以受到开发人员支持,是因为Java语言实现科学方便的开发模式,在这些开发模式中,最出色而且应用最广的就是MVC模式,对于MVC模式的研究由来已久,但是一直没有得到很好的推广和应用,随着J2EE技术的成熟,MVC逐渐成为了一种常用而且重要的设计模式。MVC(Model-View-Controller)把应用程序的开发分为三个层面:视图层、控制层、模型层。
  5.2 JSP页面调用Servlet的方法
  在上面HelloWorld的示例程序中,我们直接在浏览器中输入具体的地址进行访问,在实际的应用中,不可能让用户在浏览器中直接输入Servlet的地址进行访问,一般情况下,可以通过调用Servlet进行访问,在这里介绍通过提交表单和超链接两种方式调用Servlet。
  5.2.1 通过表单提交调用Servlet
  在通过提交表单调用Servlet的时候,只需要把表单的action指向对应的Servlet即可,下面是一个简单的表单,通过这个表单可以调用指定的Servlet。(具体内容请参照书。)
  5.2.2 通过超链接调用Servlet
  在上面这个例子中,用户有输入的内容需要提交给服务器,所以需要用表单来调用Servlet,但是在没有输入的数据内容需要提交的情况下,使用表单就不是很合理了,在这里介绍Servlet的第二种调用方法,直接通过超链接的方式来调用Servlet,在这种情况下还可以给Servlet传递参数。(具体内容请参照书。)
  5.3 Servlet中的文件操作
  在JSP的开发过程中,经常会遇到需要把相关内容存储为文件的情况,在JSP中是用输入输出流进行操作的,在Servlet中也可以使用输入输出流实现对文件的读写,同时,使用Servlet还可以很方便的实现文件的上传下载。接下来的内容将通过具体的示例展示Servlet文件操作的方法。
  5.3.1 Servlet读取文件
  在这个例子中将要读取一个文本文件的内容,并且在页面上打印文件的内容。
  5.3.2 Servlet写文件
  Servlet写文件的处理方法和读取文件的处理方法非常类似,只是把文件输入流换成文件输出流,在下面这个示例程序中,将在指定位置生成文件。(具体内容请参照书。)
  5.3.3 Servlet上传文件
  文件的上传下载在Web开发中会经常遇到,使用基本的IO输入输出流当然可以完成这项操作,但是出于对开发的效率和程序运行的效率方面的考虑,在实际的开发过程中一般采用第三方的组件来完成这个上传的功能。在实际开发过程中用的比较多的是commons-fileupload组件和jspSmartUpload组件,这两个组件都可以很好地完成文件上传的功能,
  5.3.4 Servlet下载文件
  用Servlet下载文件的时候,并不需要第三方组件的帮助,只需要对服务器的响应对象response进行简单的设置即可,(具体内容请参照书。)
  5.4 Servlet过滤器
  在Web应用中可以使用过滤器对所有的访问和请求进行统一的处理,IP访问限制,用户发送请求的字符编码转换等,在进行具体的业务逻辑处理之前,首先要经过过滤器的统一处理,然后才开始进入真正的逻辑处理阶段。在本节内容中,将介绍过滤器的原理的实际应用。
  5.4.1 过滤器的基本原理
  过滤器的功能就是在服务器和客户中间增加了一个中间层,可以对两者之间的交互进行统一的处理,每一个从客户端提交的请求都需要通过过滤器的处理,然后再进行其他的操作。在实际开发中,过滤器器可以用来对用户进行统一的身份判断、IP访问限制,用户发送请求的字符编码转换、对请求和响应进行加密和解密、记录用户登录日志等。当然过滤器的用途不仅仅这些,读者可以根据过滤器的实现原理,思考过滤器更多的用途。
  5.4.2 IP访问filter
  在实际的应用中,可能会遇到这样的情况,需要对某些IP进行访问限制,不让非法的IP访问应用系统,这个时候就需要用到过滤器进行限制,当一个用户发出访问请求的时候,首先通过过滤器进行判断,如果用户的IP地址被限制,就禁止访问,只有合法的IP才可以继续访问。(具体内容请参照书。)
  5.4.3 转换字符编码filter
  在Java语言中,默认的编码方式是ISO-8859-1,这种编码格式不支持中文的显示,我们可以用类似这样的方式来规定页面字符编码格式,但是如果要显示的内容是表单提交、或者是经过Servlet处理,这时候字符内容本身的编码格式就是ISO-8859-1,所以尽管页面指定的字符编码方案为gb2312,在这种情况下中文内容仍然不能正常显示。在第四章中已经对中文处理的问题做了详细的介绍,所以在本章仅仅对其中使用过滤器解决中文乱码问题进行详细的分析。
  5.5 Servlet应用示例
  在上面的内容中已经提到,Servlet是与HTTP协议紧密结合的,使用Servlet几乎可以处理HTTP协议各个方面的内容,在本节的几个示例程序中,将集中展示Servlet在HTTP方面的具体应用。
  5.5.1 获取请求信息头部内容
  当客户访问一个页面的时候,会提交一个HTTP请求给服务器的Servlet引擎,在这个请求中有HTTP的文件头信息,其中包含这个请求的详细属性信息,在下面这个示例Servlet中将取出HTTP头部内容,并在页面打印,这个Servlet的具体代码如下。(具体内容请参照书。)
  5.5.2 获取请求信息
  在上面这个Servlet示例中,我们取出所有的HTTP文件头信息,在Servlet中还可以很方便取出客户发出请求对象自身的信息。这些信息是和客户的请求密切相关的,例如客户提交请求所使用的协议,客户提交表单的方法是POST还是GET等,在下面这个示例程序中将介绍集中常见属性的取值方法。这个示例程序的具体代码如下。(具体内容请参照书。)
  5.5.3 获取参数信息
  在Servlet中,同样可以很方便的取出用户请求中的参数信息,这种参数包括以POST方法或者是GET方法提交的表单,也包括直接使用超链接传递的参数,Servlet都可以取出这些信息并且加以处理,在下面的例子中将具体展示Servlet获取各种参数的方法。
  5.5.4 Cookies操作
  Cookies是指在Web应用中,为了辨别用户身份而存储在用户本地计算机上的数据。Servlet API提供了Cookie操作类,封装了操作Cookie常用的方法,在(具体内容请参照书。)
  5.5.5 Session操作
  在JSP中有内置的Session对象,可以用来保持服务器与用户之间的会话状态,在Servlet中间,同样可以对Session进行方便的操作,在现面的例子中,将详细介绍Servlet中处理Session的具体方法。
  5.6 小结
  在本章的内容中,详细讲解了Servlet的工作原理,并且通过实际的示例程序详细介绍了Servlet的调用方法,对Servlet常见的文件操作也做了比较详细的介绍,Servlet是和HTTP协议密切联系的,所以在本章最后的部分对Servlet的HTTP操作方法做了细致的讲解。通过本章内容的讲解,读者已经可以对Servlet有一个总体上的把握,Servlet在本质上就是Java类,在了解这Servlet的基本原理和基本使用方法以后,如果要想在Servlet领域有更大的提高,还是需要回头巩固Java的基础,这才是学习Servlet的最根本的途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值