从源码可以看到Servlet的继承关系为:
- jakarta.servlet.Servlet接口
- jakarta.servlet.GenericServlet抽象类
- jakarta.servlet.http.HttpServlet抽象类
- jakarta.servlet.GenericServlet抽象类
jakarta.servlet.Servlet:
- void init(ServletConfig):初始化方法
- void service(ServletRequest, ServletResponse):服务方法。客户端发送过来的请求,service方法会被tomcat容器自动调用
- void destroy():销毁方法
jakarta.servlet.GenericServlet:
- public abstract void service(ServletRequest, ServletResponse):抽象方法
jakarta.servlet.http.HttpServlet:
- protected void service(HttpServletRequest, HttpServletResponse):方法进行了具体实现
service方法中,先通过req.getMethod()获取到客户端的请求方式method,然后对method分GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE等不同的请求方式进行不同的处理
现在我们重点对POST请求的this.doPost(req, resp)方法进行学习。因为其它请求方式的doXXXX(req, resp)方法处理过程类似
可以看到doPost就是获取一个post不支持的字符串消息,然后将消息进行输出。因为这是Servlet的405的默认实现,如果我们自己没有实现,则会抛出默认的异常
其中lStrings的获取方式如下:
LocalStrings配置文件如下