Java_servlet实现类

1、直接实现Servlet接口

class MyServlet implements javax.servlet.Servlet{
   //需要将5个方法都实现
}

2、继承通用实现类GenericServlet

2.1、通用实现类与协议无关的,抽象类,实现了4方法,但service方法是抽象的

abstract class GenericServlet implements Servlet{
   public void init(ServletConfig){
  }
  …
  public abstract void service(ServletRequest,ServletResponse);
}

2.2、通用实现类,缓存了ServletConfig

abstract class GenericServlet implements Servlet{
   private ServletConfig config;
   public void init(ServletConfig config){
     this.config = config;
  }
  
  public ServletConfig getServletConfig(){
    return this.config;
  }
}

2.3、通用实现类,实现接口ServletConfig,提供4个api方便使用

abstract class GenericServlet implements Servlet,ServletConfig{

   public String getServletName(){              //servletconfig接口
       return getServletConfig().getServletName();
  }
  
  public String getInitParameter(String name){
      return getServletConfig().getInitParameter(name);  //从缓存的ServletConfig获得实际内容
  }
  
  public ServletContext getServletContext(){
     return getServletConfig().getServletContext();
  }
  ….

  public ServletConfig getServletConfig(){    //servlet接口
  return  this.config;  //缓存初始化的实际参数
 }
}

2.4、继承通用实现类

class OneServlet extends GenericServlet{
  public void service(ServletRequest,ServletResponse){
     //1 获得ServletConfig对象
     ServletConfig config = this.getServletConfig();
  
     //2 获得ServletContext对象
    ServletContext sc = config.getServletContext();    //先获得ServletCofing ,在获得sc
    
    ServletContext sc = this.getServletContext();    //从父类获得需要对象
  
  }


}

2.5、进行初始化

方法一:自己实现初始化

class OneServlet extends GenericServlet{
   public void init(ServletConfig config ){
     // 如果自己实现了初始化,父类的方法将不执行,父类缓存的对象null,必须手动的执行父类方法
     super.init(config);
  }

   service{
      this.getServletContext();
  }

}

方法二:实现通用实现类(父类)的初始化方法

abstract class GenericServlet implements Servlet {
   public void init(ServletConfig config ){
      this.config = config;
      this[OneServlet 当前运行类].init();  //提供没有参数的方法
  }
  public void init(){
  }
}


class OneServlet extends GenericServlet{
   public void init(){
1 先执行父类的
   init(ServletConfig)
2 父类调用init(),将执行子类]{  //注意:不是生命周期,init(ServletConfig)
     //操作 ,
  }

   service{
      this.getServletContext();
  }

}

3、继承HttpServlet

3.1、与协议有关的servlet实现,继承GenericServlet

HttpServlet 通过请求方式(get/post),将程序进行分流(细化)
get请求:将执行doGet方法
post请求:将执行doPost方法

class HttpServlet extends GenericServlet{
   public void service(ServletRequest req,ServletResponse res){ //生命周期的方式
   }
}



class HttpServlet extends GenericServlet{
   public void service(ServletRequest req,ServletResponse res){ //生命周期的方法
      //使用结论
      HttpServletRequest request = (HttpServletRequest)req;
      HttpServletResponse response = (HttpServletResponse)res;
   
      service(request,response);
   }
   
   public void service(HttpServletRequest request,HttpServletResponse response){
       //使用与http协议有关的api
       String method = request.getMethod();   //获得请求方式 GET/POST ….
       if(“GET”.equals(method)){
          doGet(request,response);
     } else if(“POST”.equals(method)){
       doPost(request,response);
     }
   }
   
   doPost {
       抛异常
       response.sendError(“405”,”提示信息”);//405  ;1.0   400
   }
   doGet{
   }
}


class TwoServlet extends HttpServlet{


   public void doGet(HttpServletRequest request,HttpServletResponse response){
         
   }


   public void doPost(HttpServletRequest request,HttpServletResponse response){
         
   }




}

//******只有get请求才会出现304页面缓存。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值