精华内容
下载资源
问答
  • Tomcat是什么

    2020-04-25 10:50:43
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat ...
     Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
      Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
    
    展开全文
  • tomcat 是什么

    2021-03-04 22:45:04
    这个软件用来装载你的javaweb程序,可以称它为web容器,你的jsp/servlet程序需要运行在Web容器上,Web容器有很多种,JBoss、WebLogic等等,Tomcat是其中一种。tomcat是一种web服务器,也可以称作运行在服务器(物理...

    这个软件用来装载你的javaweb程序,可以称它为web容器,你的jsp/servlet程序需要运行在Web容器上,Web容器有很多种,JBoss、WebLogic等等,Tomcat是其中一种。tomcat是一种web服务器,也可以称作运行在服务器(物理意义上的计算机)上的一种软件包。用来对服务器上的HTML文档提供访问权限控制。
    以上的说法可能太专业化,一时难以理解。其实用通俗的语言来讲,万维网本质上就是“超文本文档”(HTML文档)组成的一个通过超级链接互相访问交互网络。你从甲计算机上的文档A通过超链接访问乙计算机上的文档B,而B必须放在Web服务器(Tomcat)里才能被访问。Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。
    与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
    Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。

     

    总结:就是web应用放到tomcat里面才能跑得起来,而tomcat里面对项目有规定特定的格式,就是war包的格式,这就是为什么我们需要把项目打成war才能丢进去

     

     

    简单总结下,tomcat是一个中间件,在B/S架构中,浏览器发出的http请求经过tpmcat中间件,转发到最终的目的服务器上,响应消息再通过tomcat返回给浏览器。

    tomcat所做的事情主要有:开启监听端口监听用户的请求,解析用户发来的http请求然后访问到你指定的应用系统,然后你返回的页面经过tomcat返回给用户。

    展开全文
  • Tomcat是什么。Tomcat入门介绍

    千次阅读 2017-10-09 21:43:46
    2.tomcat服务器其实也一个应用程序(软件),而服务器主机的意思:一台电脑上如果运行了tomcat服务器,我们就概称这台主机为服务器。 3.凡是实现了应用层协议的软件,都可以称作web服务器。而目前我们只关心http...

    (本人小白,有些地方也是参考查询理解而来,如有错误,欢迎各位大神指正)

    1.什么是web应用服务器?应用服务器其实也是一个应用程序。tomcat服务器也是web应用服务器之一。

    2.tomcat服务器其实也是一个应用程序(软件),而服务器主机的意思:一台电脑上如果运行了tomcat服务器,我们就概称这台主机为服务器。
    3.凡是实现了应用层协议的软件,都可以称作web服务器。web服务器是安装在服务端主机上实现了http协议的软件,也叫http服务器,如微软的IIS,当前排名第一开源免费的Apache(个人认为,凡是实现了应用层协议的软件都可以叫web服务器,如ftp服务器,smtp服务器,只不过我目前只关心http服务)。而目前我们只关心http服务,而一个web服务器必备的功能就是对某个端口进行循环监听,被动的接收客户端发送到该端口的http请求并响应。根据上述原理,我们自己也可以去编写web服务器。由于客户端是浏览器,我们就要根据http协议去自己解析和封装要交互的数据。
    4.tomcat服务器本身也是由java语言开发的。
    5.tomcat目录结构
    bin  脚本目录  用于存放启动和配置tomcat的可执行文件
    conf  (config) 配置目录  存放tomcat服务器的全局的配置文件(下面为两个重要文件)
               cong中有一个核心配置文件 server.xml
                所有的web项目的默认配置文件web.xml
    lib  (library) 依赖的jar库。存放tomcat服务器运行以及部署在tomcat上面的web项目运行所需要的jar包  该目录被所有web项目共享
    logs  日志目录 存放tomcat服务器运行产生的一些日志文件
    temp 临时文件 可以随意删除
    webapps  web应用发布目录  存储部署在tomcat的所有web项目
    work  tomcat处理jsp文件的工作目录
    6.一个web应用的目录结构以及web应用是如何部署到tomcat服务器的?


    web项目发布到tomcat中的过程:
    (1).首先tomcat先在web apps下面建立一个与web应用工程名同名的文件夹
    (2).然后将web content下的所有文件原封不动的拷贝到web应用的文件夹下(web content是eclipse中创建的动态web项目内一个文件夹)
    注意:web-INF目录是受保护的,外界不能直接访问
    7.项目发布后,浏览器端访问是怎样一个过程?
     客户端直接访问的是servlet文件。如下图:


    url-pattern的配置有三种,即完全匹配,目录匹配,扩展名匹配。如果什么都没写,只写了一个“/”,为缺省路径匹配。即所有服务器找不到的都来找缺省路径。web应用中所有资源的响应都是由servlet配置负责的,也包括所有的静态资源。不管是访问什么,都是先去web项目下的web.xml文件中通过servlet配置查找该资源。
    如果客户端访问的是html 等静态页面。访问过程:
    由上所述。如果访问1.html这个静态资源,tomcat首先会拿着这个1.html去指定的web项目下的web.xml中找一个<url-pattren>为1.html的配置。如果找不到,就去找缺省的。如果web.xml中也没有配置缺省的路径。就会去tomcat服务器中的全局web.xml中去寻找。最终找到全局web.xml中的缺省路径。然后这个缺省的servlet会去找一个1.html的静态源,然后读取1.html的内容,逐行输出到浏览器。所以我们就看到了1.html的页面。如果连1.html的静态资源也没有,就会报404错误。那么这个404错误的这个页面,当然也是全局web.xml中的缺省servlet帮你输出的。
    tomcat服务器的全局web.xml配置文件中根据<>url-pattern>找到<servlet>名称为default.再根据default找到缺省servlet的配置如下:





    当前项目的web.xml没有配置客户端访问的路径,如何处理?(缺省路径问题)
       (见上)

    8.浏览器访问tomcat中的项目整个过程中,tomcat都做了一些什么事情?
           1.客户端先根据访问地址找到tomcat服务器,找到服务器后,也就是把http请求发给了tomcat
            2.然后tomcat服务器根据http请求,解析请求内容,获得客户端要请求的资源的地址。并找到该资源
            3.创建servlet的实例对象。
            4.第一次访问,tomcat服务器会调用该servlet的init方法。每次访问,服务器都会调用service方法。而service方法需要两个参数,requst和response。所以tomcat服务器会创建requst和response对象用于调用service方法传递参数.


    关于servlet的入门介绍,servlet的声明周期参考:

    1.servlet是什么?其实servlet是一个接口。是sun公司提供的一套规范(接口)。用来处理客户端请求、响应给浏览器的动态资源。而我们通常提到的servlet,就是指实现了servlet接口的类。所以对于实现了servlet接口的类,我们都概称为servlet。所以servlet的实质就是一套java代码,通过javaAPI  动态的向客户端输出内容。这个写好的servlet最后要放到一个web应用服务器中运行,以供外界访问。

    2.servlet的实现有三种方式。实现接口或继承类

    3.servlet的生命周期:

            web应用成功发布到tomcat中后。当外界第一次访问该servlet的时候。创建servlet对象,并调用servlet类的init方法进行初始化。每一次访问servlet类的时候,tomcat引擎都会调用servlet类的service方法。服务器关闭的时候,调用distory方法,servlet对象被销毁。(而对于servlet对象的创建,默认是第一次访问的时候创建,其实也可以在服务器一启动的时候就创建。这时需要在自己的web项目,web.xml文件中 <servlet>下面配置一个 <load-on-startup>

    4.域对象的介绍:

    域对象之一 servletcontext: servletcontext是整个web应用的一个域对象。它里面存的东西,整个web项目中任意地方都可以去访问到。在服务器启动或该web应用一发布tomcat服务器的时候就被创建。在web应用被移除或服务器关闭时消失。一个域对象必备的三个方法:

    setAtrribute(String name,Object obj);

    getAttribute(String name);

    removeAttribute(String name);


    域对象就是用来存储数据的。以供内部存取访问



    展开全文
  • 一言不合就是一个shutdown.sh,或者来个shutdown.bat,但是你知道你的启动startup.bat,和startup.sh他们的启动过程是什么过程么?接下来我们就开始进入分析吧。2.Tomcat的整体结构图这个整体...

    1.Tomcat分析

    作为一个 Java 资深开发人员,对 Tomcat 那是再熟悉不过了,bin目录、conf目录、webapps目录,对这些目录熟悉的简直不能再熟悉了。一言不合就是一个shutdown.sh,或者来个shutdown.bat,但是你知道你的启动startup.bat,和startup.sh他们的启动过程是什么过程么?接下来我们就开始进入分析吧。

    2.Tomcat的整体结构图

    这个整体结构图可不是大家想的目录结构图,目录结构图就不给大家展示了,自己去打开你的 Tomcat,里面就有你想看到目录结构图,那么整体结构图是什么样子的呢?

    45f21007b0576688add2380a3bc87811.png

    给大家解释一下这个图的意思,

    • Server:整个服务器。
    • Service:具体的服务。
    • Connector:提供Socket和request,response的连接。
    • Container:用于封装和管理Servlet,以及具体的处理请求。

    这个图就把里面的包含关系说的是明明白白了,为什么这么说呢?因为一个Server中可以存在多个服务,也就是多个Service,而一个Service中可以存在多个Connector,但是只能存在一个Container,是不是就非常的清晰了呢?

    3.Tomcat的启动过程

    接下来我们就来看看源码里面的启动过程吧,Bootstrap类中的启动过程。

    这个类的位置是在tomcat的catalina的包里面,大家看一下主方法也就是所谓的main方法,

      public static void main(String[] args) {        //对象初始化        if (daemon == null) {            Bootstrap bootstrap = new Bootstrap();            try {                bootstrap.init();            } catch (Throwable var3) {                handleThrowable(var3);                var3.printStackTrace();                return;            }            daemon = bootstrap;        } else {            Thread.currentThread().setContextClassLoader(daemon.catalinaLoader);        }        try {            String command = "start";            if (args.length > 0) {                command = args[args.length - 1];            }            if (command.equals("startd")) {                args[args.length - 1] = "start";                //加载                daemon.load(args);                //启动                daemon.start();            } else if (command.equals("stopd")) {                args[args.length - 1] = "stop";                //停止                daemon.stop();            } else if (command.equals("start")) {                daemon.setAwait(true);                //加载并且启动                daemon.load(args);                daemon.start();                if (null == daemon.getServer()) {                    System.exit(1);                }            } else if (command.equals("stop")) {                daemon.stopServer(args);            } else if (command.equals("configtest")) {                daemon.load(args);                if (null == daemon.getServer()) {                    System.exit(1);                }                System.exit(0);            } else {                log.warn("Bootstrap: command "" + command + "" does not exist.");            }        } catch (Throwable var4) {            Throwable t = var4;            if (var4 instanceof InvocationTargetException && var4.getCause() != null) {                t = var4.getCause();            }            handleThrowable(t);            t.printStackTrace();            System.exit(1);        }    }

    main方法里面的存在也很简单,先进行init的操作,然后再执行start,也就是说,启动过程中,首先要进行初始化,然后接下来再进行启动,最后阶段在来个stop,这样才算完整嘛。

    • load方法:其实说白了load方法就是根据server.xml文件创建Server并且调用Server的init方法进行初始化。
    • start方法:start方法很直白,启动服务器。
    • stop方法:stop方法同样,停止服务器。

    在这里的start方法和stop方法调用的分别就是调用了Server内部的start和stop方法,而这三个方法都是按照图中的层级结构来的,先从Server的load,start,stop,然后Server的start再调用Service的start,而Service的start调用的就是Connector和Container的start方法了,这从外到内的启动,就可以把Tomcat完整的启动起来了。

    我们在接下来就继续从外到内的启动开始分析一波。

    3.1 Catalina启动过程

    上面的启动入口我们已经成功找到了,那么我们就继续来,对象初始化完成后,执行了init的方法

      Bootstrap bootstrap = new Bootstrap();            try {                bootstrap.init();            } catch (Throwable var3) {

    就是上面的这个,如果参数为空了,那么就开始调用start了,那么start方法是什么呢?

     public void start() throws Exception {        if (this.catalinaDaemon == null) {            this.init();        }        Method method = this.catalinaDaemon.getClass().getMethod("start", (Class[])null);        method.invoke(this.catalinaDaemon, (Object[])null);    }

    上面的start方法就是直接使用invoke的方法映射到了catalinaDaemon,也就是到了Catalina的start的方法上,

    而这个Catalina的启动无非也就是调用了同样的方法,setAwait方法,load方法,start方法,

    • setAwait方法:用于设置Server启动完成时,是否进入等待,如果是true,那就等待,如果不是false,那就不进入等待。
    • load方法:创建并且初始化Server,
    • start方法:同样是启动服务器

    同样的setAwait方法比较少,阿粉就不给大家看了,无非就是个判断,而load方法一定得看,

    if (!this.loaded) {            this.loaded = true;            long t1 = System.nanoTime();                    try {                        inputSource.setByteStream((InputStream)inputStream);                        digester.push(this);                        digester.parse(inputSource);                        break label242;                    } catch (SAXParseException var28) {                        log.warn("Catalina.start using " + this.getConfigFile() + ": " + var28.getMessage());                        return;                    } catch (Exception var29) {                        log.warn("Catalina.start using " + this.getConfigFile() + ": ", var29);                    }                } finally {                    if (inputStream != null) {                        try {                            ((InputStream)inputStream).close();                        } catch (IOException var23) {                            ;                        }                    }                }                return;            } try {    //此处同样调用的Server的init方法,                this.getServer().init();            } catch (LifecycleException var24) {                if (Boolean.getBoolean("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE")) {                    throw new Error(var24);                }                log.error("Catalina.start", var24);            }            long t2 = System.nanoTime();            if (log.isInfoEnabled()) {                log.info("Initialization processed in " + (t2 - t1) / 1000000L + " ms");            }        }

    而从这里就开始进入下一步了,Server的启动过程,因为从Catalina里面已经找到了getServer的初始化方法,接下来就是要进行Server的初始化,然后加载,然后启动的过程了。

    3.2 Server的启动过程

    Server是Tomcat里面的接口,而不是类,那么我们就只能去找实现它的子类来于是就找到了StandardServer extends LifecycleMBeanBase implements Server。

    一看有继承,还有实现,那就先看看LifecycleMBeanBase这个被继承的类,于是再次去看了它,

    public abstract class LifecycleMBeanBase extends LifecycleBase implements JmxEnabled {

    嗯?还有继承?继续往下扒拉,

    public abstract class LifecycleBase implements Lifecycle {

    终于算是找到了,

    91b6624e779acf6d8769be464640047c.png
    f8d711eb0b995e08e9e6cd30f1caaf2b.png

    一看这init方法和start方法又调用了initInternal()和startInternal(),找来找去又回去了,而我也从这里知道了,模板方法,是有自己的子类具体实现

    于是回到了StandardServer自己的init和start方法,

     protected void startInternal() throws LifecycleException {        this.fireLifecycleEvent("configure_start", (Object)null);        this.setState(LifecycleState.STARTING);        this.globalNamingResources.start();        Object var1 = this.servicesLock;        synchronized(this.servicesLock) {            for(int i = 0; i 
    41319035fd2db25f6cffdc37b4436f46.png

    总得来说就是,StandardServer继承自LifecycleMBeanBase,而LifecycleMBeanBase继承自LifecycleBase,而LifecycleBase类中的模板方法,又让自己的子类去进行具体的实现,但是我们要知道他的Tomcat生命周期中存在这些内容才行。

    图中都说了,Server里面有Service,那么一定就有,我们得去找找看,于是阿粉再次去找并且去看它到底是个什么意思,

        public void addService(Service service) {        service.setServer(this);        Object var2 = this.servicesLock;        synchronized(this.servicesLock) {            Service[] results = new Service[this.services.length + 1];            System.arraycopy(this.services, 0, results, 0, this.services.length);            results[this.services.length] = service;            this.services = results;            if (this.getState().isAvailable()) {                try {                    service.start();                } catch (LifecycleException var6) {                    ;                }            }            this.support.firePropertyChange("service", (Object)null, service);        }    }

    位置是在Server的接口中出现了增加和删除Service的方法,Server的init方法和start方法循环去调用每个Service的init方法和start方法。

    接下来我们看看Service的具体实现,找到StandardService:

      protected void initInternal() throws LifecycleException {        super.initInternal();        if (this.engine != null) {            this.engine.init();        }        Executor[] arr$ = this.findExecutors();        int len$ = arr$.length;        int len$;        for(len$ = 0; len$ 

    而在方法中主要调用Executor,mapperListener,executor的init方法。

    connector之前已经有了,而这个mapperListener就是Mapper的监听器,用来坚挺container容器的变化。

    26c0eb6b483efc13d645d5cedea0e0e9.png
    展开全文
  • tomcat系列之 什么是tomcat

    千次阅读 2017-09-26 22:59:55
    Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和...
  • 什么是tomcat

    2013-09-26 16:53:02
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在...
  • Tomcat探秘(1):Tomcat是什么

    万次阅读 2016-05-15 00:05:12
    作为一个java软件开发者,接触到的很多项目都web项目,而跟Web项目密切相关的就是Web容器了,目前市面上可以免费试用的性能不错的当属Tomcat了,所以决定对Tomcat进行详细的了解一下,在接下来的文章中,将会陆续...
  • tomcat是什么

    2020-11-08 23:13:20
    这个软件用来装载你的javaweb程序,可以称它为web容器,你的jsp/servlet程序需要运行在Web容器上,Web容器有很多种,JBoss、WebLogic等等,Tomcat是其中一种。tomcat是一种web服务器,也可以称作运行在服务器(物理...
  • 什么是tomcat

    千次阅读 2016-01-04 13:50:24
    Tomcat是一个免费的开源的Servlet/JSP容器(也就是负责解析和运行JSP)容器,(这个软件用来装载你的java web程序,可以称它为web容器,你的jsp/servlet程序需要运行在Web容器上,Web容器有很多种,JBoss、WebLogic...
  • Tomcat 软件架构概述

    2020-06-02 22:35:54
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat ...
  • Tomcat软件 目录介绍

    2020-07-22 10:05:43
    什么是Tomcat?...Tomcat是一个Apache软件基金会Jakarta项目中的核心项目;是一个免费的开放源代码的轻量级Web应用服务器;运行时占用资源小,支持负载均衡与邮件服务等开发应用系统常用功能。 下载地址: ...
  • Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,...反之不然)。...Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun M...
  • Apache和Apache Tomcat的区别是什么

    万次阅读 2019-08-13 13:38:26
    Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP) Apache是一款Web服务器软件,有多种产品,可以支持SSL技术,支持多个虚拟主机。它快速、可靠并且可通...
  • 什么是Tomcat和Servlet?

    2020-11-12 00:40:10
    在开始聊Tomcat之前,我们先了解一下web的相关概念。 软件架构 C/S:客户端/服务器端 B/S:浏览器/服务器端 资源分类 静态资源:所有用户访问后,得到的结果都一样的,称为静态资源,静态资源可以直接被...
  • 1. 首先,Apache是web服务器,而Tomcat是应用服务器;这里什么是web服务器,应用服务器,简单说明下:web你可以简单理解为你所看到的HTML页面就是web的数据元素,处理这些数据元素的应用软件就叫WEB服务器,如apache、...
  • tomcat是一个jsp服务器,可以单独运行jsp程序,也就是说一个jsp网站可以直接部署在tomcat下面,tomcat不支持ejb.不带JDK。svn一般应该是指版本服务器,可以在apache下配置。支付远程访问(外网访问),支持加密传输....
  • tomcat

    2019-10-08 00:35:28
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多...
  • Tomcat

    2020-03-16 10:56:30
    Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用...
  • Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到...
  • Apache Tomcat是一个长期存在的开源Java Servlet容器,它实现了几个核心Java企业规范,即Java Servlet,JavaServer Pages(JSP)和WebSockets API。 一个Apache软件基金会的项目,Tomcat的于1998年首次发布,Java...
  • Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在...
  • 转载地址: http://hi.baidu.com/luckytimes/blog/item/335f7106619f1a7e02088103.html 1)... jakartaapache组织下的一套Java解决方案的开源软件的名称,它包括了很多子项目。Tomcat,ant,struts等等也apache下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,258
精华内容 503
关键字:

tomcat是什么软件