最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java Servlet运行原理代码解析
时间:2020-11-10 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下Java Servlet运行原理代码解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
1、Servlet基本执行过程
Web容器(如Tomcat)判断当前请求是否第一次请求Servlet程序 。
如果是第一次,则Web容器执行以下任务:
加载Servlet类。
实例化Servlet类。
调用init方法并传入ServletConfig对象
如果不第一次执行,则:
调用service方法,并传入request和response对象
Web容器在需要删除Servlet时(例如,在停止服务器或重新部署项目时)将调用destroy方法。
2、Web容器如何处理Servlet请求
Web容器负责处理请求。让我们看看它如何处理请求。
将用户请求与web.xml文件中的Servlet进行映射。
创建请求和响应对象
创建新的线程,并在该线程上调用Servlet的service方法
在pubpc的service方法内部调用protected的service方法
protected的service方法根据请求的类型调用doGet方法。
doGet方法生成响应并将其传递给客户端。
发送响应后,Web容器将删除请求和响应对象。该线程是继续留在线程池中还是被删除取决于服务器实现。
3、pubpc的service方法部分源码
pubpc的service方法将ServletRequest对象转换为HttpServletRequest类型,而ServletResponse对象转换为HttpServletResponse类型。然后,调用传递这些对象的服务方法。让我们看一下内部代码:
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { HttpServletRequest request; HttpServletResponse response; try { request = (HttpServletRequest)req; response = (HttpServletResponse)res; } catch(ClassCastException e) { throw new ServletException("non-HTTP request or response"); } service(request, response); }
4、protected的service方法部分源码
protected的service方法判断请求的类型,如果请求类型为GET,则调用doGet方法,如果请求类型为POST,则调用doPost方法,依此类推。让我们看一下内部代码:
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if(method.equals("GET")) { long lastModified = getLastModified(req); if(lastModified == -1L) { doGet(req, resp); } .... //rest of the code } }
相关文章
- SpringBoot自定义bean绑定解析 10-24
- Javaweb工程运行报错HTTP Status 404解决教程 10-20
- JAVA获取jvm和操作系统相关信息方法 10-20
- BeanFactory和FactoryBean的区别讲解 10-20
- 微信小程序的宿主环境实现教程 10-10
- dispatchEvent解决重叠元素响应事件教程 10-10