读书人

Servlet学习(1)

发布时间: 2012-12-20 09:53:21 作者: rapoo

Servlet学习(一)

一、基础接口——javax.servlet.Servlet

?

Servlet接口定义了所有servlet都必须实现的方法。

?

Servlet是一个小型的运行在web服务器上的java程序。Servlet通过通过HTTP协议接收和响应客户端的请求。

要实现这个接口,可以编写一个通用的继承了 javax.servlet.GenericServlet类的servlet,或者是编写一个继承了javax.servlet.http.HttpServlet类的HTTP的servlet。

这个接口定义了初始化servlet的方法,service请求,以及从服务器中移除servlet的方法。这些是servlet的生命周期方法,它们按照下面的顺序被调用:

??? servlet类初始化之后,则会调用init()方法进行初始化。??? 任何客户端对service()方法的调用都会被处理.??? servlet从服务中被移除并且使用destroy()方法销毁该servlet,之后垃圾收集器会回收该servlet资源。


除了生命周期方法之外,这个接口还提供了getServletConfig()方法,servlet可以使用这个方法获得任何启动的信息。而getServletInfo()方法则可以允许servlet返回有关servlet本身的基本信息,比如作者、版本以及版权信息等。

?

javax.servlet.Servlet接口定义的方法如下所示:

?

public void init(ServletConfig config) throws ServletException——初始化方法public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException——处理客户端请求的方法public void destroy()——销毁servlet的方法public ServletConfig getServletConfig()——返回包含了关于该servlet本身的初始化和启动参数信息的ServletConfig对象,该ServletConfig对象会被传递给init()方法使用。public String getServletInfo()——返回有关servlet本身的基本信息,比如作者、版本以及版权信息。

二、通用的servlet类——javax.servlet.GenericServlet

?

javax.servlet.GenericServlet是一个实现了javax.servlet.Servlet接口以及javax.servlet.ServletConfig接口的抽象类。

?

javax.servlet.GenericServlet抽象类定义了一个通用的、与协议无关的servlet。如果要编写一个在Web上使用的HTTP servlet,则这个servlet需要继承javax.servlet.http.HttpServlet类,而不是继承javax.servlet.GenericServlet类。

?

javax.servlet.GenericServlet类可以直接被其他servlet继承,虽然更普遍的是继承一个指定协议的javax.servlet.GenericServlet类的子类,比如javax.servlet.http.HttpServlet类。

?

?

javax.servlet.GenericServlet类使得servlet更容易编写。它提供了生命周期方法init()和destroy()的简单实现版本,也实现了javax.servlet.ServletConfig接口中的方法的简单实现。javax.servlet.GenericServlet类也实现了log()方法,这个方法在javax.servlet.ServletContext接口中进行了声明。

?

?

因此,要编写一个通用的servlet,你必须实现的方法只有抽象方法service()。.

?

三、HTTP协议使用的servlet——javax.servlet.http.HttpServlet

?

javax.servlet.http.HttpServlet类是抽象类javax.servlet.GenericServlet的子类,这个HttpServlet类是一个适合于web网站的HTTP servlet。javax.servlet.http.HttpServlet的子类必须至少重写下面这些方法中的一个:

?

doGet()方法——如果这个servlet支持HTTP GET请求。doPost()方法——如果这个servlet支持HTTP POST请求。doPut()方法——如果这个servlet支持HTTP DELETE请求。init()和destroy()方法——如果这个servlet需要管理生命周期的资源。getServletInfo()方法——用来提供有关servlet本身的信息。

这里没有什么理由需要重写service()方法。service()方法通过为每个HTTP请求类型分配处理器方法(上面列出来的doXXX方法)来处理标准的HTTP请求。

?

同样地,这里也没有理由需要重写doOptions()和doTrace()方法。

Servlet往往运行在多线程的服务器上,因此要意识到一个servlet必须处理并发请求,并且要谨慎处理同步访问共享资源。共享资源包括内存数据比如实例或者类变量,外部对象比如文件、数据库连接和网络连接。

读书人网 >编程

热点推荐