Servlet服务器端编程初解
Servlet是一种运行在服务器端的Java程序,也可以说是服务器端的应用程序。它能够像CGI脚本一样扩展Web服务器的功能,且比CIG具有更高的效率,功能强大与平台无关等。
1、Servlet简介
Servlet即Java服务小程序,是使用应用程序设计接口以及相关类和方法的Java程序。它可以作为一种插件,像Applet一样嵌入到Web服务器中运行。Servlet主要用于处理和客户之间的通信,当客户传来一个HTTP请求时,通过调用Servlet方法来向客户端发送一个相应。与其他的动态网页编程技术相比,Servlet技术有很多自己特有的优点:
l 高效性:在传统的CGI中,当HTTP服务器收到对CGI程序的请求时,每一个请求都将启动一个新的线程。当有大量用户请求调用CGI应用程序是,多个CGI应用程序的执行将导致服务器的大量负载,会严重影响服务器系统性能。而在Servlet中,Servlet运行在一个进程中,该进程开始于服务器首次访问该Servlet,一直运行到基于该Servlet的程序结束。每一个客户端的请求响应都是对于该进程的一个线程进行相应,即每一个请求建立一个进程,Servlet的效率自然比CGI高出很多。
l 功能强大:在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成,如Servlet能够直接和Web服务器交互,而普通的CGI却不能。Servlet能够在各个程序之间共享数据,使得数据库的功能很容易实现。
l 可移植性好:Servlet是用Java编写的,因为Java是可移植的面向对象程序设计语言,所以Servlet无须任何实质上的改动即可移植到Apache、Microsoft IIS或其他的Web服务器上。
l 使用方便:Servlet提供了大量的使用工具例程,例如自动地解析HTML表单数据、读取和设置HTTP相应头、处理Cookie、跟踪会话状态等。
2、Servlet常用接口介绍:
与Servlet有关的接口主要包括以下几种:
l Servlet异常相关
l Servlet配置相关
l Servlet实现相关
l 请求与相应相关
l 会话相关
l Servlet上下文
l 过滤
1)、异常相关
相关类主要包括ServletException和UnavailabelException。ServletException类扩展了Exception类,其构造如下:
>ServletException()
>ServletException(String message)
2)、配置相关
与Servlet配置相关的接口是java.servlet.ServletConfig接口。Servlet配置包括Servlet的名字、Servlet类的名字以及初始化参数等内容。下面的代码就是一个Servlet的配置。
Java.servlet.ServletConfig接口中提供了很多的方法,常用的如下:
方法
说明
getInitParameter(String name)
返回指定名称的参数的字符串
getInitParameterNames()
返回Servlet的所有初始化参数的名字,返回值为一个枚举类型对象
getServletContext()
返回当前Servlet正在执行的那个上下文的引用
getServletName()
返回当前Servlet实例的名字
getContext(String uripath)
返回由参数指定的一个ServletContext对象
Long(String msg)
想Servelt的日志文件中写入信息
getServerInfo()
返回当前运行的Servlet容器的名称和版本号码
getAttribute(String name)
返回由参数指定的名字
getAttributeNames()
返回容器中所有属性的名称
getServletContextName()
返回当前Web应用程序的ServletContext的名字
3)、实现相关
与Servlet实现相关的接口和类主要包括Servlet接口、GenericServlet类和HttpServlet类。
(1)、Servlet接口
Servlet接口是所有Servlet必须直接或间接实现的接口,它定义了一些方法用来初始化Servlet、接受客户端的请求、响应客户端请求以及销毁一个Servlet。下面是Servlet接口的常用方法:
方法
说明
Destroy()
销毁Servlet
getServletConfig()
获取Servlet配置相关的信息
getServletInfo()
获取Servlet的信息
Init(ServletConfig config)
用于初始化Servlet
Service(ServletRequest req , ServletResponse res)
这是运行应用程序逻辑的入口点,它接收练个参数,客户端请求信息ServletRequest和对客户端的响应ServletResponse
(2)、GenericServlet类
Javax.servlet.GenericServlet类是一个抽象类,提供了对Servlet接口的基本实现。GenericServlet的service()方法是一个抽象方法,GenericServlet类的子类必须直接或间接地实现service()方法。下面是GenericServlet类的常用方法:
方法
说明
getServletConfig()
返回一个ServletConfig对象
getServletContext()
返回Servlet上下文的引用
getServletName()
返回当前Servlet实例的名字
getServletInfo()
返回当前Servlet的有关信息
Log(String msg)
将信息写入Servlet的文件中
Service(ServletRequest req , ServletResponse res)
用来响应客户端的请求
(3)、HttpServlet类
是针对shiyongHTTP协议的Web服务器的Servlet类。HttpServlet类扩展了GenericServlet类,同时HttpServlet类也是一个抽象类。要扩展该类,需要实现以下方法中的一个或多个。下表是HttpServlet子类必须实现的方法:
方法
说明
doGet(HttpServletRequest req , HttpServletResponse res)
支持Http Get请求
doPost(HttpServletRequest req , HttpServletResponse res)
支持Http Post请求
doPut(HttpServl