GenericServlet,HttpServlet

一、GenericServlet:

 

1、 是一个 Serlvet. 实现了Servlet接口和ServletConfig接口,service()方法为抽象方法,是一个抽象类。

 

2、继承这个类会使开发更简洁。

    比如 获取初始化参数,要先声明config 然后再在service方法中,用config获取初始化参数。

private ServletConfig config;
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config); //To change body of generated methods, choose Tools | Templates.
        
        this.config=config;
    }
service()方法中:
ServletContext context=config.getServletContext();
        String user1=context.getInitParameter("user1");
        String pwd1=context.getInitParameter("password1");

但是继承这个类 就可以直接写

ServletContext context=getServletConfig().getServletContext();
        String user1=context.getInitParameter("user1");
        String pwd1=context.getInitParameter("password1");

 

3、 具体实现:

 

public abstract class GenericServlet implements Servlet, ServletConfig {




 /** 以下方法为 Servlet 接口的方法 **/
 @Override
 public void destroy() {}




 @Override
 public ServletConfig getServletConfig() {
  return servletConfig;
 }




 @Override
 public String getServletInfo() {
  return null;
 }




 private ServletConfig servletConfig;
 
 @Override
 public void init(ServletConfig arg0) throws ServletException {
  this.servletConfig = arg0;
  init();
 }




 public void init() throws ServletException{}




 @Override
 public abstract void service(ServletRequest arg0, ServletResponse arg1)
   throws ServletException, IOException;




 /** 以下方法为 ServletConfig 接口的方法 **/
 @Override
 public String getInitParameter(String arg0) {
  return servletConfig.getInitParameter(arg0);
 }




 @Override
 public Enumeration getInitParameterNames() {
  return servletConfig.getInitParameterNames();
 }




 @Override
 public ServletContext getServletContext() {
  return servletConfig.getServletContext();
 }




 @Override
 public String getServletName() {
  return servletConfig.getServletName();
 }

 

二、HttpServlet:

 

1、 是一个 Servlet, 继承自 GenericServlet. 针对于 HTTP 协议所定制.

 

2、在 service() 方法中直接把 ServletReuqest 和  ServletResponse 转为 HttpServletRequest 和 HttpServletResponse.并调用了重载的 service(HttpServletRequest, HttpServletResponse)

     在 service(HttpServletRequest, HttpServletResponse) 获取了请求方式: request.getMethod(). 根据请求方式有创建了doGet, doPost方法

3、直接继承 HttpServlet, 并根据请求方式复写 doGet() 或doPost()方法即可. 可以直接使用HttpServletRequest和HttpServletResponse,不需要强转。

实现方法:

@Override
 public void service(ServletRequest req, ServletResponse res)
    throws ServletException, IOException {




    HttpServletRequest  request;
    HttpServletResponse response;
    
    try {
        request = (HttpServletRequest) req;
        response = (HttpServletResponse) res;
    } catch (ClassCastException e) {
        throw new ServletException("non-HTTP request or response");
    }
    service(request, response);
}


}




public void doPost(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException{
 // TODO Auto-generated method stub
 
}




public void doGet(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException {
 // TODO Auto-generated method stub
 
}









 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值