分析Servlet运行原理
2020-03-28 16:01:03来源:博客园 阅读 ()
分析Servlet运行原理
原文链接:http://www.yiidian.com/servlet/servlet-how-work.html
接下来我们有必要了解下Servlet的工作原理,这样才能更好地理解Servlet。本文我们将以之前开发过的Servlet程序来讲解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方法
- 在public的service方法内部调用protected的service方法
- protected的service方法根据请求的类型调用doGet方法。
- doGet方法生成响应并将其传递给客户端。
- 发送响应后,Web容器将删除请求和响应对象。该线程是继续留在线程池中还是被删除取决于服务器实现。
3 public的service方法部分源码
public的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
}
}
欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。
如果您对我的系列教程感兴趣,也可以关注我的网站:yiidian.com
原文链接:https://www.cnblogs.com/yiidian/p/12585265.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Invalid [xxx] in servlet mapping 、 <url-pattern& 2020-06-07
- 数据结构:用实例分析ArrayList与LinkedList的读写性能 2020-06-04
- 数据分析 | 数据可视化图表,BI工具构建逻辑 2020-06-02
- Docker Swarm与Kubernetes对比分析如何选择? 2020-06-02
- 数据分析 | 基于智能标签,精准管理数据 2020-05-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash