HttpServlet

来源:互联网 发布:结构体中的数组赋值 编辑:程序博客网 时间:2024/04/28 22:59

什么是HttpServlet

sun公司为Servlet定义了一个抽象类HttpServlet

HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法

封装的service方法可以看下,不需要记

protected void service(HttpServletRequest req, HttpServletResponse resp)    throws ServletException, IOException  {    String method = req.getMethod();    if (method.equals("GET")) {      long lastModified = getLastModified(req);      if (lastModified == -1L)      {        doGet(req, resp);      } else {        long ifModifiedSince = req.getDateHeader("If-Modified-Since");        if (ifModifiedSince < lastModified)        {          maybeSetLastModified(resp, lastModified);          doGet(req, resp);        } else {          resp.setStatus(304);        }      }    }    else if (method.equals("HEAD")) {      long lastModified = getLastModified(req);      maybeSetLastModified(resp, lastModified);      doHead(req, resp);    }    else if (method.equals("POST")) {      doPost(req, resp);    }    else if (method.equals("PUT")) {      doPut(req, resp);    }    else if (method.equals("DELETE")) {      doDelete(req, resp);    }    else if (method.equals("OPTIONS")) {      doOptions(req, resp);    }    else if (method.equals("TRACE")) {      doTrace(req, resp);    }    else    {      String errMsg = lStrings.getString("http.method_not_implemented");      Object[] errArgs = new Object[1];      errArgs[0] = method;      errMsg = MessageFormat.format(errMsg, errArgs);      resp.sendError(501, errMsg);    }  }

HttpServlet的实现

package com.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Servlet2 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        doPost(req, resp);    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {    }}
0 0
原创粉丝点击