Servlet继承关系(405错误原因)
1.servlet继承关系(重点查看的是服务方法service()方法)
java.servlet.Servlet接口:
java.servlet.GenericServlet抽象子类:
java.servlet.http.HttpServlet抽象子类
2.相关方法:
**javax.servlet.Servlet接口:
void init(config) --初始化方法
void service(request,response) --服务方法
void destroy() --销毁方法
javax.servlet.GenericService抽象类
void service(request,response) --仍是抽象类
java.servlet.http.HttpServlet抽象子类
void service(request,response) --不是抽象类
①.String method = req.getMethod(); --获取请求的方式
②.各种if判断,根据请求方式不同,决定调用不同的do方法
if (method.equals("GET")) {
this.doGet(req, resp);
} else if (method.equals("HEAD")) {
this.doHead(req, resp);
} else if (method.equals("POST")) {
this.doPost(req, resp);
} else if (method.equals("PUT")) {
this.doPut(req, resp);
}
......
③.在Http中do方法都差不多
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(405, msg);
} else {
resp.sendError(400, msg);
}
}
3.小结:
1)继承关系:HttpServlet–>GenericServlet -->Servlet
2)Servlet中的核心方法:
init()
service()
destroy()
3)服务方法:
有请求过来时,
service方法自动响应(其实时tomcat容器调用的)
HTTPServlet会去分析请求方式:到底是get,post,head还是delete等等(共8种)
分析后决定调用那个do开头的方法
在HttpServlet中这些do方法默认都是405实现风格-要我们子类去实现对应方法,否则默认报405错误
4)在新建servlet时,才考虑请求方法,从而决定重写哪个do方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。