Servlet体系、与继承HttpServlet的类的执行过程
Servlet体系结构
Servlet接口
在其整个生命周期中,Init是初始化Servlet时调用的方法,Service是处理用户请求、响应用户结果的方法,destroy是Servlet正常销毁时执行的方法。
内部方法:
ServletConfig接口
内部方法
GenericServlet抽象类
实现了Servlet接口,并在此基础上,增强实现了ServletConfig接口,具备了ServletConfig内的方法,主要是getServletContext()方法,由此直接方法可拥有直接获得ServletContext的能力。
且该抽象类内还单独提供了无参的init()方法,可将初始化功能和数据的代码在此处处理(不要借用有参的init()方法)。
内部方法:
HttpServlet抽象类
继承了GenericServlet抽象类,其处理用户请求的方法与原本的Servlet一样在Service()方法中。在HttpServlet中提供了两个Service方法:
一个是
本方法目的是增强ServletRequest和ServletResponse为HttpServletRequest和HttpServletResponse,将其通过this传入本类中的另一个专门接收Http类型对象的方法,即下面的Service方法:
本次增强的目的,是因为为了调用HttpServletRequedoPostst和HttpServletResponse对应的doGet方法和doPost方法,两个方法对外提供,并最终被我们重写。
当一个类继承了HttpServlet后,其执行流程为:
1、通过浏览器的地址栏输入的url地址的末尾,如本例的/aim,定位到web.xml配置文件(如下图)或者注解。
2、在web.xml配置文件中,url地址末尾定位到url-pattern,获得servlet的自定义名称“demo”,通过该名称在servlet中找到其对应类“com.test.servlet.Demo”,去执行Demo。
3、该类继承了HttpServlet,因此会先执行其父类的Service方法。(想象如果Demo不重写任何方法,其就是HttpServlet,则在完成其父类GenericServlet内的init()方法后,接着就是完成Service方法)。
该service方法如下:
4、上面的Service方法强转ServletRequest和ServletResponse,接着调用本类下的Http的Service方法,如下
本方法判断请求方式是get还是post,并最终回到我们创建的Demo中,调用我们重写的doGet和doPost方法。
- C++ 虚基类问题、继承体系中的构造函数执行过程。(
- javaWeb-Servlet的继承体系和HttpServletRequest中常用的方法+HttpServletResponse对中文乱码的处理
- HttpServlet请求响应过程(继承HttpServlet类的Servlet,Tomcat容器)
- C#构造函数在继承过程中的执行顺序
- Java 自定义servlet 继承httpservlet时 需要引入那些jar包
- JavaWeb之 Servlet执行过程 与 生命周期
- c#问答篇:继承类变量初始化和构造器执行的过程
- C#构造函数在继承过程中的执行顺序(转)
- servlet三种实现方式之三通过继承HttpServlet开发servlet
- Servlet学习(一)——Servlet的生命周期、执行过程、配置
- 【Servlet学习】继承HttpServlet简单示例
- SpringMvc如何学习框架技术? 就像如上的图示一样,先掌握新技术的体系流程图。在快速弄明白程序执行流程后,在使用过程中 了解细节。
- java 父类访问子类对象的实例变量 继承过程中的执行顺序
- Servlet,GenericServlet和HttpServlet的继承关系
- 继承ViewGroup:重写onMeasure方法和onLayout方法 及 方法执行过程
- Servlet,GenericServlet和HttpServlet的继承关系
- Servlet执行过程及生命周期
- servlet的执行过程
- Servlet自学第9讲:使用继承HttpServlet的方法开发Servlet
- Servlet执行过程和声明周期