tomcat学习之一:tomcat的安装以及基本配置

1、Tomcat的安装

     1.1、下载Tomcat
        到 https://tomcat.apache.org/download-80.cgi 下载Tomcat压缩包,注意下载的版本要与电脑位数相对应。
     1.2、启动与停止tomcat
      将1.1步骤中下载的压缩包解压,然后进入到bin目录中,windows则运行startup.bat启动tomcat,运行shutdown.bat关闭tomcat。linux则运行./startup.sh启动tomcat,运行./shutdown.sh关闭tomcat。
      注意:如果启动错误请检查JDK是否已安装,或者Java路径是否设置正确,要保证在环境变量中设置了JAVA_HOME。
                  如果错误信息为Address already in use: JVM_Bind,进入到conf目录下,打开server.xml将connector的port改为其他数字,范围在(1024 ~ 65535)。在重新启动。
     
      如果启动没有报错,打开浏览器输入:localhost:8080/ 可以看到以下画面表示启动成功。

 
          注意:如果启动报错端口号报错,改了之后相应的要把8080改为对应的端口号。这儿8080是tomcat配置文件默认的端口号。
          然后关闭tomcat后,刷新浏览器,浏览器提示无法连接到localhost

2、tomcat的目录结构

        进入tomcat的目录,tomcat的目录结构如下图所示:


   补充说明:work目录存放的是jsp编译过后的java文件以及class文件。
                       webapps目录是项目部署目录,可以直接将项目打包成war包,放进该目录,tomcat在启动时会自动解压部署。

      2.1、tomcat的conf目录


      Catalina目录:暂时先不管
      Catalina.policy: 权限相关,例如是否允许获取java版本。
      Catalina.properties: 定义了tomcat启动时要加载哪些jar,以及使用哪一个类加载器加载。
      
      context.xml:配置很简单,定义web.xml存放路径
      logging.properties:定义日志的输出格式,记录日志的级别,日志存放路径等。
      server.xml:tomcat的核心配置文件之一,下面详解。
      tomcat-users.xml:登录用户配置
      web.xml:tomcat核心配置文件之一,且在webapps中部署的项目的web.xml与之存在继承关系。

      2.2、server.xml
       server.xml配置了tomcat监听的端口号,部署了哪些服务以及访问服务路径。一般来讲,访问服务路径为项目名,即war包名。除此之外,还可以配置域名,如上面访问的路径localhost是server.xml中的默认配置。
       配置如下:
<?xml version='1.0' encoding='utf-8'?>
<!--注意:所有配置全部在server标签内部-->
<Server port="8005" shutdown="SHUTDOWN">
  <!--配置了一系列tomcat启动时的监听器-->
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <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,在一个server里面,可以配置多个service-->
  <Service name="Catalina">
	
	<!--在一个service里面,可以配置多个connector,它的作用是用来监听端口-->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
	<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!--port表示监听端口号,但port不能重复,而且port的值要在1024 ~ 65535之间
		protocol表示协议,现大多数都为http协议,connectionTimeout连接超时时间
		maxPostSize=0表示取消对请求参数的限制
	-->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
	<!--引擎,service中只能有一个Engine-->
	<Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
		
	  <!--appBase表示Host所代表的应用目录,结构要与webapps一致
	  
	  -->
	  <!--<Host name="www.yamikaze.com"  appBase="G:/mywebapps"
            unpackWARs="true" autoDeploy="true">
	  </Host> -->
	
	  <!--可以配置多个Host-->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
		<!-- 一个Context对应一个项目,path为访问项目的路径名,docBase为项目所在位置-->
		<!-- <Context path = "/word" docBase = "G:\java\web\hello" /> -->
		
		<!--添加阈,这个阈的作用是输出访问日志-->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

3、tomcat部署项目

3.1、使用context标签部署
         可以在server.xml中host标签内部使用context标签部署项目,其中path表示访问项目的路径,docBase表示项目所在位置:
<Context path = "/word" docBase = "G:\java\web\hello" />
         然后重启tomcat,输入localhost:端口号/word即可访问。
       3.2、最简单方式
       直接将需要部署的服务打成war包,拷贝到webapps目录下,然后启动tomcat,在浏览器输入localhost:端口号/项目名 即可访问。
这种方式最终也会在server.xml中生成一条context标签,只不过区别在于这种方式需要将war拷贝到webapps目录下。
       3.3、外部xml方式
       还记得tomcat的conf目录下面有个catalina目录吗? tomcat启动后会以server.xml中的host标签的name属性建立文件夹。这种方式部署,可以在localhost目录建立hello.xml,文件名任意,然后在里面编辑
<Context  docBase="项目路径" />
       然后保存启动tomcat,在浏览器输入localhost:端口/hello即可访问。
      3.4、虚拟主机配置
      经常上网的肯定会留意浏览器地址栏的变化,比如输入:http://www.baidu.com/ 就会跳转到百度首页,这儿没有加端口是因为http协议默认端口为80,所以当connector配置的port为80时可以不用加上端口。在看http://www.baidu.com/只输入了域名,而没有输入项目路径,这是因为不加路径会访问webapps下ROOT目录的内容,这儿的ROOT相当于tomcat自带的一个项目,所以可以将ROOT删掉,将要发布的项目文件名改为ROOT,这样输入localhost/就可以直接访问了。
    
      除此之外,tomcat也是可以将多个域名映射到同一个项目去的。
     首先,在server.xml中加入以下代码,注意:一定要放在Engine标签里面
<Host name="www.yamikaze.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
</Host>
      这儿的appBase为项目部署路径,文件夹可以不在tomcat的文件夹下。
      然后修改C:\Windows\System32\drivers\etc\hosts文件,在文件中加上这么一行
127.0.0.1       www.yamikaze.com
      保存后重启tomcat,在浏览器地址栏输入:www.yamikaze.com:8880/得到如下结果:


            实验完成后记得将hosts文件中添加的配置删除掉。
            但这个域名以及localhost只能在本机才能达到这个效果,如果你在另一台电脑上输入相同链接是无法访问的,这涉及到DNS解析顺序,建议百度了解一下。

4、其他

         4.1、如果访问get请求乱码的话,可以在connector加上uriEncoding="utf-8"解决。但这种方式代码就与tomcat粘连在一起了,换一个服务器依旧乱码,所以建议在代码中先解码再以utf-8编码。
         4.2、在IDE中修改代码后,想让tomcat重新加载,可以在Host标签上加上reloadable="true"。

         最后,因个人经历以及经验,可能存在不足之处,欢迎评论留言指正,谢谢!φ(>ω<*) 
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值