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必须处理并发请求,并且要谨慎处理同步访问共享资源。共享资源包括内存数据比如实例或者类变量,外部对象比如文件、数据库连接和网络连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值