黑马程序员技术交流社区

标题: Servlet小问题 [打印本页]

作者: 王秋霞0812    时间: 2014-1-23 16:36
标题: Servlet小问题
本帖最后由 王秋霞0812 于 2014-1-23 23:49 编辑

Servlet执行时一般实现那几个方法?
作者: 俞帅明    时间: 2014-1-23 23:25
Servlet类要继承的GenericServlet与HttpServlet类和一般要实现的几个方法:
GenericServlet与HttpServlet类,GenericServlet类是一个实现了Servlet的基本特征和功能的基类,其完整名称为javax.servlet.GenericServlet,它实现了Servlet和ServletConfig接口。HttpServlet类是GenericServlet的子类,其完整名称为javax.servlet.HttpServlet,它提供了处理HTTP协议的基本构架。如果一个Servlet类要充分使用Http协议的功能,就应该继承HttpServlet。在HttpServlet类及其子类中,除可以调用HttpServlet类内部新定义的方法外,还可以调用包括Servlet,ServletConfig接口和GenericServlet类中的一些方法。
Servlet执行时一般要实现的方法
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()

init ()方法在servlet的生命周期中仅执行一次,在servlet引擎创建servlet对象后执行。Servlet在调用init方法时,会传递一个包含servlet的配置和运行环境信息的ServletConfig对象。如果初始化代码中要使用到ServletConfig对象,则初始化代码就只能在Servlet的init方法中编写,而不能在构造方法中编写。缺省的init()方法通常是符合要求的,不过也可以根据需要进行 override,比如管理服务器端资源,初始化数据库连接等,缺省的inti()方法设置了servlet的初始化参数,并用它 的ServeltConfig对象参数来启动配置,所以覆盖init()方法时,应调用super.init()以确保仍然执行这些任务。

service ()方法是servlet的核心,用于响应对Servlet的访问请求。对于HttpServlet,每当客户请求一个 HttpServlet对象,该对象的service()方法就要被调用,HttpServlet缺省的service()方法的服务功能就是调用与 HTTP请求的方法相应的do功能,doPost()和doGet(),所以对于HttpServlet,一般都是重写doPost()和doGet() 方法。

destroy()方法在servlet的生命周期中也仅执行一次,即在服务器停止卸载servlet之前被调用,把servlet作为 服务器进程的一部分关闭。缺省的destroy()方法通常是符合要求的,但也可以override,来完成与init方法相反的功能。比如在卸载servlet时将统计数字保存在文件 中,或是关闭数据库连接或IO流。

getServletConfig()方法返回一个servletConfig对象,该对象用来返回初始化参数和servletContext。servletContext接口提供有关servlet的环境信息。

getServletInfo()方法提供有关servlet的描述信息,如作者,版本,版权。可以对它进行覆盖。

doxxx方法  客户端可以用HTTP协议中规定的各种请求方式来访问Servlet,Servlet采取不同的访问方式进行处理。不管那种请求方式访问Servlet,Servlet引擎都会调用Servlet的service方法,service方法是所有请求方式的入口。
   doGet 用于处理Get请求
  doPost用于处理Post请求
doHead用于处理Head请求
doPut 用于处理Put请求
doDelete 用于处理Delete请求
doTrace 用于处理Trace请求
doOptions用于处理OPTIONS请求
作者: 俞帅明    时间: 2014-1-24 14:34
俞帅明 发表于 2014-1-23 23:25
Servlet类要继承的GenericServlet与HttpServlet类和一般要实现的几个方法:
GenericServlet与HttpServlet ...

谢谢刘老师,好不容易得到个技术分,真是雪中送炭呀。
作者: Crist    时间: 2014-1-24 15:48
俞帅明 发表于 2014-1-24 14:34
谢谢刘老师,好不容易得到个技术分,真是雪中送炭呀。

同学好厉害 !学完了 也不记得这么清楚~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2