温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java servlet执行的完整流程是什么

发布时间:2021-11-06 15:01:09 来源:亿速云 阅读:194 作者:iii 栏目:web开发

本篇内容介绍了“Java servlet执行的完整流程是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

摘要: 

主要描述了从浏览器到服务器,再从服务器到浏览器的整个执行过程

浏览器请求

浏览器向服务器请求时,服务器不会直接执行我们的类,而是到web.xml里寻找路径名 

①:第一步,浏览器输入访问路径后,携带了请求行,头,体 

②:第二步,根据访问路径找到已注册的servlet名称,既图中的demo 

③:第三步,根据映射找到对应的servlet名 

③:第四步,根据根据servlet名找到我们全限定类名,既我们自己写的类

服务器创建对象

①:服务器找到全限定类名后,通过反射创建对象,同时也创建了servletConfig,里面存放了一些初始化信息(注意服务器只会创建一次servlet对象,所以servletConfig也只有一个)

调用init方法

①:对象创建好之后,首先要执行init方法,但是我们发现我们自定义类下没有init方法,所以程序会到其父类HttpServlet里找 

②:我们发现HttpServlet里也没有init方法,所以继续向上找,既向其父类GenericServlet中继续寻找,在GenericServlet中我们发现了init方法,则执行init方法(对接口Servlet中的init方法进行了重写) 

注意: 

在GenericServlet中执行public void init(ServletConfig config)方法的时候,又调用了自己无惨无方法体的init()方法,其目的是为了方便开发者,如果开发者在初始化的过程中需要实现一些功能,可以重写此方法

调用service方法

接着,服务器会先创建两个对象:ServletRequest请求对象和ServletResponse响应对象,用来封装浏览器的请求数据和封装向浏览器的响应数据 

①:接着服务器会默认在我们写的类里寻找service(ServletRequest req, ServletResponse res)方法,但是DemoServlet中不存在,那么会到其父类中寻找 

②:到父类HttpServlet中发现有此方法,则直接调用此方法,并将之前创建好的两个对象传入 

③:然后将传入的两个参数强转,并调用HttpServlet下的另外个service方法 

④:接着执行service(HttpServletRequest req, HttpServletResponse resp)方法,在此方法内部进行了判断请求方式,并执行doGet和doPost,但是doGet和doPost方法已经被我们自己重写了,所以会执行我们重写的方法 

看到这里,你或许有疑问:为什么我们不直接重写service方法? 

因为如果重写service方法的话,我们需要将强转,以及一系列的安全保护判断重新写一遍,会存在安全隐患

向浏览器响应

最后处理完数据后,将数据响应到浏览器

“Java servlet执行的完整流程是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI