• Tomcat和IDEA


    笔者安装的tomcat目录为: D:programfilesapache-tomcat-8.5.55-windows-x64apache-tomcat-8.5.55

    在IDEA中创建maven web项目

     

     其中,java目录和resources目录是自己建立的

    配置Tomcat

     引入相应Tomcat的jar包

     运行,浏览器会自动打开网页,显示 Hello World.

    到Tomcat的安装目录,发现没有我们的项目。

     我们项目在哪里呢?

    打开IDEA项目目录

    发现有有个target目录,这个目录是在idea设置的输出目录,打开该目录

    最下面就是我们的项目,发现其正好是Tomcat部署应有的目录格式

     我们在IDEA控制台可以发现最初打印了

    D:programfilesapache-tomcat-8.5.55-windows-x64apache-tomcat-8.5.55incatalina.bat run
    [2020-09-07 07:00:30,152] Artifact manager-web:war exploded: Waiting for server connection to start artifact deployment...
    Using CATALINA_BASE:   "C:UsersMyAppDataLocalJetBrainsIntelliJIdea2020.1	omcatUnnamed_crowdfunding-system"
    Using CATALINA_HOME:   "D:programfilesapache-tomcat-8.5.55-windows-x64apache-tomcat-8.5.55"
    Using CATALINA_TMPDIR: "D:programfilesapache-tomcat-8.5.55-windows-x64apache-tomcat-8.5.55	emp"
    Using JRE_HOME:        "D:programfilesjdk8"
    Using CLASSPATH:       "D:programfilesapache-tomcat-8.5.55-windows-x64apache-tomcat-8.5.55inootstrap.jar;D:programfilesapache-tomcat-8.5.55-windows-x64apache-tomcat-8.5.55in	omcat-juli.jar"

    Throughout the docs, you’ll notice there are numerous references to CATALINA_HOME. This represents the root of your Tomcat installation. When we say, “This information can be found in your CATALINA_HOME/README.txt file” we mean to look at the README.txt file at the root of your Tomcat install. Optionally, Tomcat may be configured for multiple instances by defining CATALINA_BASE for each instance. If multiple instances are not configured, CATALINA_BASE is the same as CATALINA_HOME.

    CATALINA_HOME 是Tomcat安装的根目录,全局唯一

    CATALINA_BASE 每个Tomcat实例会创建一个,可以有多个

    IDEA创建了自己的Tomcat实例。

    这个实例的相关文件就在上面的BASE目录中

    打开conf下的配置文件server.xml

    <Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
      <GlobalNamingResources>
        <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
      </GlobalNamingResources>
      <Service name="Catalina">
        <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
        <Engine name="Catalina" defaultHost="localhost">
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
          </Realm>
          <Host name="localhost" appBase="D:programfilesapache-tomcat-8.5.55-windows-x64apache-tomcat-8.5.55webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="false" deployIgnore="^(?!(manager)|(tomee)$).*">
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
          </Host>
        </Engine>
      </Service>
    </Server>

    发现没有IDEA项目路径的踪影

    接着找,在conf/Catlina/localhost下发现有ROOT.xml

    <Context path="" docBase="D:gitprojectscrowdfunding-systemmanager-web	argetmanager-web" />

    正是我们想要的项目路径

    我们设置虚拟目录和主目录,都会在.../conf/Catalina/localhost目录下生成相应的xml文件,因此,当我们在server.xml里面删除了主目录和虚拟目录的设置后,如果系统还没有生效,这时候我们就要察看一下这个目录下的xml文件是不是已经被删除了,如果没有被删除,他还是对tomcat起作用的,我们必须手动删除。
    通过测试我发现,每当我们访问一个地址的时候,tomcat首先是到.../conf/Catalina/localhost目录下去察看有没有存在主目录或虚拟目录的xml文件,如果有xml文件,就按xml里的路径进行访问,如果没有xml文件,就到server.xml文件里去察看是否配置context标签,如果配置了context标签,则在.../conf/Catalina/localhost目录下生成一个对应的xml文件,以便于下次直接验证而不再访问server.xml,与此同时打开context里指定的路径,如果server.xml里没有配置context标签,则返回访问错误页面。
    可以直接在.../conf/Catalina/localhost下建立一个xml文件,用于主目录或者虚拟目录,而不需要去修改server.xml就可以达到配置主目录和虚拟目录的目的,具体xml的格式可以如下:

    <?xml version='1.0' encoding='utf-8'?>
    <Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="" reloadable="true">
    </Context>

    具体是主目录的配置还是虚拟目录的配置取决于path的值。另外主目录文件名必须是ROOT.XML(root大写)

  • 相关阅读:
    asp.net mvc(2013424)——基本知识
    asp.net mvc(2013425)——使用模板页
    jquery实现tab切换核心代码
    asp.net mvc(2013422 )——准备入门
    也说C#串行化
    Net Assembly.GetExecutingAssembly() 和 Assembly.GetCallingAssembly()的区别
    log (一)
    C# 重载和从写的区别
    log4net
    C# 反射
  • 原文地址:https://www.cnblogs.com/aidata/p/13628944.html
Copyright © 2020-2023  润新知