一般写servlet只需要继承HttpServlet类,重写doGet/doPost方法。
包含了Servlet生命周期4要素:创建(构造器),初始化(init),运行(service),销毁(destory)
要想了解Servlet,必须先了解两个类:
javax.servlet.Servlet.(接口)
javax.servlet.http.HttpServlet(抽象类)
Servlet是一个接口。
主要的方法是init() service() destory()
还有getServletConfig()方法和 getServletInfo()方法
其中init()方法为servlet初始化时执行的方法。
service()为每次请求执行的方法。
HttpServlet继承自GenericServlet
HttpServlet中主要的方法service()和doXXX();
其中service()方法有两个,第一个service()把ServletRequest和ServletResponse转换层HttpServletRequest和HttpServletResponse
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);
}
}
第二个service()则根据get/post等调用doXXX()方法。
doXXX方法默认返回的是error。
所以如果不重写serivce()的话,必须重写doXXX方法。
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String protocol = req.getProtocol();
String msg = lStrings.getString("http.method_get_not_supported");
if (protocol.endsWith("1.1")) {
resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
} else {
resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
}
}