微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Servlet继承关系--尚硅谷24

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方法

原文地址:https://www.jb51.cc/wenti/3285851.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐