Servlet、GenericServlet、HttpServlet基础知识

Servlet接口

Servlet是用Java编写的服务器端的程序,其主要功能在于交互式地浏览和修改数据,生成动态的web内容。

狭义的Servlet指的是Java语言实现的一个接口,广义的Servlet指任何实现了Servlet接口的类。Servlet源码如下:

public interface Servlet {
    public void init(ServletConfig config) throws ServletException;
    public ServletConfig getServletConfig();
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
    public String getServletInfo();
    public void destroy();
}

Servlet的生命周期:

1.装载Servlet:Servlet是一个Java文件,运行时需要装载Servlet的class文件。

2.创建Servlet实例:调用Servlet的init()方法创建Servlet实例,该方法只会在第一次访问Servlet时被调用一次,之后的多次请求中,该方法将不会被调用。

3.调用服务service()方法:当访问Servlet的请求到达服务器时,Servlet的service()方法就会被调用。该方法有两个非常重要的参数:Request用于获取客户端信息,Respone用于向客户端返回信息。每一次请求都会重新调用service(),因此在该方法内定义的变量是线程安全的,但是该方法之外的变量不是线程安全的。

4销毁:调用Servlet的destroy()方法可以销毁Servlet实例。该方法在两种情况下被调用,(1)Tomcat重启,(2)Tomcat在运行过程中重新部署该程序

Servlet不能独立运行,它的运行完全由Servlet引擎来控制和调度。

GenericServlet抽象类

public abstract class GenericServlet implements Servlet, ServletConfig, Serializable{

......

}

GenericServlet抽象类为Servlet接口提供了通用实现。它与任何网络应用层协议无关。

GenericServlet实现了Servlet接口的init(ServletConfig config)初始化方法。但也自定义了一个不带参的init( )方法,然后通过init(ServletConfig)调用init()方法。因此在实现子类重写init进行初始化时,最好重写init( )方法。若重写init(ServletConfig)方法,还需要先调用父类init(ServletConfig)方法(super.init(config))。

HttpServlet抽象类

HttpServlet类是GenericServlet类的子类。HttpSerlvet类为Servlet接口提供了与HTTP相关的通用实现。也就是说,HttpServlet对象适合运行在与客户端采用HTTP通信的Servlet容器中。

在我们自己开发的Javaweb应用中,自定义的Servlet类一般都扩展自HttpServlet类。

HttpServlet类实现了Servlet接口的service(ServletRequest , ServletResponse),但实际上是调用了它的重载方法service(HttpServletRequest  , HttpServletResponse) 。而它的重载方法中,首先调用HttpServletRequest类型的参数的getMethod()方法,获得客户端的请求方法,然后根据该请求方式调用匹配的服务方法;如果为GET方式,则调用doGet( )方法,如果为POST方式,则调用doPost( )方法。

 

 

 

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值