zoukankan      html  css  js  c++  java
  • tomcat的配置使用详细版

    摘要:

    开发者开发部署web应用时通常使用tomcat服务器,很多初学者只懂得在开发工具上配置,但离开了开发工具,自己手动配置部署,并让一个项目跑起来,你会了吗。小编也遇到过这样的困扰。网上查找的资料说法不一,小编就亲自动手实验

    一. 下载

    tomcat服务器直接到官网下载就好,根据自己的电脑系统选择对应的版本下载,window系统下载zip包,下载后解压

    二. 配置

    我们下载完成后,我们试图启动tomcat,启动有两种方式

    1. 直接到tomcat服务器的bin目录下双击startup.bat
    2. 通过cmd进入bin目录,输入命令startup.bat

    但这时会出现的问题是,服务器启动程序只是一闪而过,为什么呢?

    其实问题就是,没有Java的JDK,我们需要到环境变量配置系统变量JAVA_HOME。我们都知道,1.5 以上的版本的JDK只需要配置path变量就可以了。但是如果你想在机器上使用tomcat的话,你就必须配置JAVA_HOME,指向JDK的安装位置。

    配置好之后我们就可以正常打开tomcat了,双击startup.bat,tomcat正常启动。启动完成后,我们在浏览器地址栏上输入:http://localhost:8080,会得到以下的界面

           这样就能使用tomcat部署应用了吗,还不行。我们还需要另外的一些配置

    2.1 配置环境变量

    我们需要配置三个系统环境变量

    • CATALINA_BASE:指向tomcat的安装位置
    • CATALINE_HOME:指向tomcat的安装位置
    • Path:%CATALINA_HOME%lib;%CATALINA_HOME%in

    2.2 配置tomcat的服务端口

    tomcat的默认服务端口是8080。可以通过配置文件来改变该服务端口,甚至通过修改配置文件让tomcat同时在多个端口提供服务

    tomcat的配置文件都放在conf目录下。使用无格式文本编辑器打开该目录下的server.xml文件,定位到68行处

        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    其中,port="8080"就是web应用的服务端口,将8080改为任意端口,建议使用1024以上的端口,避免与公用端口冲突。

    如果需要让tomcat运行多个服务,只需要复制server.xml中的<serverce>元素,并修改相应的参数,便可以实现一个tomcat运行多个服务,当然在不同端口提供服务

    在web应用的开发阶段,通常希望Tomat能列出Web应用根目录下的所有页面,这样能更方便的调试JSP页面。默认情况下,出于安全考虑,tomcat并不会这样做。我们可以手动打开conf目录下的web.xml文件,修改第110,111两行的listing参数,改为true即可,改为如下形式

    <init-param>
                <param-name>listings</param-name>
                <param-value>true</param-value>
     </init-param>

    2.3 进入控制台

    tomcat有三个控制台,分别是Server Status控制台、Manager App控制台和Host Manager控制台。Status控制台用来监控服务器状态,而manager控制台可以部署、监控web应用,因此通常使用Manager控制台即可。

    登陆控制台,我们需要用户和密码。控制台的用户和密码是通过Tomcat的JAAS控制的。

    我们登陆Manager控制台需要不同的角色,参考webappsmanagerWEB-INF目录下的web.xml文件知道,登录控制台可能需要不同的角色。对于普通开发者来说,通常需要访问匹配/html/*、/status/*的资源,因此我们创建一个manager-gui角色即可。

    tomcat默认没有配置任何用户。我们可以打开conf目录下的tomcat-users.xml文件,添加user元素增加用户,修改如下

    <?xml version="1.0" encoding="UTF-8"?>
    
    <tomcat-users xmlns="http://tomcat.apache.org/xml"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
                  version="1.0">
    <!--
      <role rolename="tomcat"/>
      <role rolename="role1"/>
      <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
      <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
      <user username="role1" password="<must-be-changed>" roles="role1"/>
    -->
    <user username="manager" password="manager" roles="manager-gui"/>
    </tomcat-users>

     上面配置文件增加了一个manager用户

    成功登录之后,可以看到

    控制台下方的Deploy区用于部署web应用。tomcat提供两种方式部署web应用:一种是将整个路径部署成web应用;另一种是将war文件部署成web应用

     

    四. 部署web应用

    部署web应用的方式主要有以下几种

    1. 利用tomcat的自动部署
    2. 利用控制台部署
    3. 增加自定义的Web部署文件
    4. 修改server.xml文件部署Web应用

    4.1 利用tomcat的自动部署

    利用tomcat的自动部署是最简单,最常用的方式,只需要将一个web应用复制到Tomcat的webapps下,系统就会把该应用部署到tomcat中。

    4.2 利用控制台部署

    利用控制台部署也很简单,在web应用的控制台按如下方式输入即可

    输入后,点击Deploy按钮,将会看到Tomcat的webapps目录下多了一个名为aaa的文件夹,该文件夹的内容和E:webDemo文件夹下的内容完全相同。这表明:当利用控制台部署应用时,实际依然是利用tomcat的自动部署

    4.3 增加自定义的Web部署文件

    这种方式操作步骤是:在conf目录下新建Catalina目录,再在该Catalina目录下新建localhost目录,最后在该localhost目录下新建一个任意名字的xml文件——该文件就是部署web应用的配置文件,该文件的主文件名将作为web应用的虚拟路径。例如在confCatalinalocalhost目录下增加一个dd.xml文件,该文件内容如下

    <Context docBase="E:/webDemo" debug="0" privileged="true">
    </Context>

         该文件指定了web应用的绝对路径,再次启动tomcat,tomcat会把/路径下的webDemo文件夹部署成web应用

    4.4 修改server.xml文件部署Web应用

    这种方式是修改conf目录下的server.xml文件,修改该文件可能破坏Tomcat的系统文件,不建议采用

    五. 配置数据源

    从tomcat 5.5开始,tomcat内置了DBCP的数据源实现,可以非常方便的配置DBCP数据源。

    Tomcat提供了两种配置数据源的方式,一种是全局数据源,可以让所有的web应用都能访问;一种是局部数据源,只能让单个数据源访问。

    不管配置那种数据源,都需要提供特定数据库的JDBC驱动程序,将它复制到Tomcat的lib路径下。例如将MySQL的JDBC驱动程序复制到lib路径下 

    局部数据源无需修改系统的配置文件,只需用户修改自己的Web部署文件,不会造成系统的混乱,而且数据源被封装在一个Web应用之内,防止被其他应用访问,提供了良好的封装性。例如修改dd.xml文件。为Context元素增加一个子元素Resource,文件内容如下

    <Context docBase="E:/webDemo" debug="0" privileged="true">
    
    <!--其中name指定数据源在容器中的JNDI名
    driverClassName指定连接数据库的驱动
    url指定数据库服务的URL
    maxActive指定数据库最大活动连接数
    maxIdle指定数据池中最大的空闲连接数
    maxWait指定数据池中最大等待获取连接的客户端
    -->
    <Resource name="jdbc/dstest" auth="sherman"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/tb_test"
    username="sherman" password="a123" maxActive="5"
    maxIdle="2" maxWait="10000">
    
    </Context>
    <Context docBase="E:/webDemo" debug="0" privileged="true">
    <Resource 
            name="jdbc/mysql"
            auth="Container" 
            type="javax.sql.DataSource"       
            maxActive="100" 
            maxIdle="30" 
            maxWait="10000"
            username="sherman" 
            password="a123"
            driverClassName="com.mysql.jdbc.Driver"         
            url="jdbc:mysql://localhost:3306/tb_test"/>
    </Context>

    再次启动tomcat,该web应用即可通过JNDI名字来访问该数据源下面是测试访问数据源代码的JSP页面代码。

    <%@ page session="false" contentType="text/html; charset=UTF-8" language="java" %>
    <%@ page import="javax.naming.Context" %>
    <%@ page import="javax.naming.InitialContext" %>
    <%@ page import="javax.sql.DataSource" %>
    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.Statement" %>
    <%@ page import="java.sql.ResultSet" %>
    
    <html>
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
    </head>
    <body>
    <%
        Context ctx = null;
        DataSource ds = null;
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
    
        try{
            ctx = new InitialContext();
            ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
            conn = (Connection)ds.getConnection();
            st = conn.createStatement();
            rs = st.executeQuery("select * from fruits");
            while(rs.next()){
                out.println(rs.getString("f_name")+"<br/>");
            }
        }catch(
                Exception e
                ){
            e.getStackTrace();
        }finally{
            if(null != rs){
                rs.close();
            }
            if(null != st){
                st.close();
            }
            if(null != conn){
                conn.close();
            }
        }
    %>
    Java 中国
    </body>
    </html>

    输出

    六. 一些注意点

    • 手动编写jsp,xml文件时,保存文件时应另存为字符编码utf-8格式,否则显示乱码,或者出错
    • 部署配置文件跟web应用的配置文件不一样,要区分开

    关于tomcat的使用和介绍就分享到这里了,操作上有不懂或指正,欢迎大家留言评论

  • 相关阅读:
    打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法
    基于 Windows Server 2008 的计算机对 Microsoft Dynamics CRM 4.0 的支持
    Microsoft Dynamics CRM 4.0 如何添加自定义按钮
    Microsoft Dynamics CRM 4.0 Plugin 取值,赋值,查询
    C# 中的 enum(枚举) 类型使用例子
    vue事件的绑定
    表单验证2
    node中模块
    node模块的引入
    node中的读文件
  • 原文地址:https://www.cnblogs.com/yumiaoxia/p/9028785.html
Copyright © 2011-2022 走看看