本文主要是介绍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方法。
这篇关于Servlet体系、与继承HttpServlet的类的执行过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!