zoukankan      html  css  js  c++  java
  • tomcat访问所有的资源,都是用Servlet来实现的

    感谢大佬:https://www.zhihu.com/question/57400909

    tomcat访问所有的资源,都是用Servlet来实现的。

    在Tomcat看来,资源分3种

    1. 静态资源,如css,html,js,jpg,png等 2. Servlet 3. JSP

    对于静态资源,Tomcat最后会交由一个叫做DefaultServlet的类来处理

    对于Servlet ,Tomcat最后会交由一个叫做 InvokerServlet的类来处理

    对于JSP,Tomcat最后会交由一个叫做JspServlet的类来处理

    所以Tomcat又叫Servlet容器嘛,什么都交给Servlet来处理。

    那么什么时候调用哪个Servlet呢? 有一个类叫做org.apache.tomcat.util.http.mapper.Mapper,它一共进行了7个大的规则判断,第7个,就是判断是否是该用DefaultServlet。

    简单地说。。。先看是不是servlet,然后看是不是jsp,如果都不是,那么就是你DefaultServlet的活儿了。
    在这里插入图片描述
    到了DefaultServlet之后,就是一个普通的HttpServlet了,doPost方法会交由doGet处理:
    在这里插入图片描述
    doGet又交由一个叫做 serveResource的方法处理
    在这里插入图片描述
    在serveResource方法里又瞎搞八搞了许多事情,最后在一个叫做copy()方法里,把静态资源对应的输入流 读取出来,扔到了输出流里,这样你的浏览器就看到数据了。
    在这里插入图片描述

    补充:

    正规的项目前面都有一个静态服务器?(一般是nginx,apache,他们除了了做负载均衡这些,最重要的是处理静态文件)如果没有前面的静态服务器,所有的资源都用tomcat的静态资源servlet处理,都会占掉了一个tomcat的线程池的一个线程,这样tomcat的性能就会受到非常大的影响。

    示例:

    感谢大佬:https://zhidao.baidu.com/question/1051681077751531179.html

    apache和tomcat区别
    经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总结了一下:
    解析一
    apache支持静态页,tomcat支持动态的,比如servlet等,
    一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。
    apche可以支持phpcgiperl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。
    apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。
    这两个有以下几点可以比较的:
    1、两者都是apache组织开发的
    2、两者都有HTTP服务的功能
    3、两者都是免费的
    不同点:
    Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
    Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器
    Runtime r=Runtime.getRuntime();
    Process p=null;
    try
    {
    p=r.exec(“notepad”);
    }
    catch(Exception ex)
    {
    System.out.println(“fffff”);
    }
    解析二:
    APACHE是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页 如(asp,php,cgi,jsp)等动态网页的就不行
    如果要在APACHE环境下运行jsp 的话就需要一个解释器来执行jsp网页 而这个jsp解释器就是TOMCAT, 为什么还要JDK呢?因为jsp需要连接数据库的话 就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK
    整合的好处是:
    如果客户端请求的是静态页面,则只需要Apache服务器响应请求
    如果客户端请求动态页面,则是Tomcat服务器响应请求
    因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销
    C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
    解析三:
    apache:侧重于http server
    tomcat:侧重于servlet引擎,如果以standalone方式运行,功能上与apache等效 , 支持JSP,但对静态网页不太理想;
    apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。
    换句话说,apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。

  • 相关阅读:
    Photoshop色阶、曲线命令图解和编程实现(附源码)
    苹果Mac OS X快捷键大全
    lucene Field部分参数设置含义
    图片管理下载逻辑
    Lucene.Net无障碍学习和使用:索引篇 (转)
    Firebug 调试器开发中的12个技巧
    Lucene.Net 多线程操作建议(转)
    如何在ASP.NET中下载文件
    Lucene.Net 2.3.1开发介绍 —— 简介 (转)
    JS打开图片另存为对话框 (转)
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621534.html
Copyright © 2011-2022 走看看