Tomcat详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat详解相关的知识,希望对你有一定的参考价值。

解压缩下载的Tomcat压缩包,呈现的目录结构如下。

bin:目录存放一些启动和关闭Tomcat的可执行程序和相关内容。
conf:存放关于Tomcat服务器的全局配置。
lib:目录存放Tomcat运行或者站点运行所需的jar包,所有在此Tomcat上的站点共享这些jar包,如果需要扩展Tomcat功能,可以将第三方类库复制到该路径下。
logs:这是一个空路径,该路径用于保存Tomcat每次运行后产生的日志。
temp:保存Web应用运行过程中生成的临时文件。
wabapps:目录是默认的站点根目录,可以更改,用于自动部署Web应用,将Web应用复制到该路径下,Tomcat会将应用自动部署到容器中。
work:目录用于在服务器运行时过度资源,简单来说,就是存储jsp、servlet翻译、编译后的结果(class文件),该文件夹可以删除,但每次启动Tomcat服务器时,系统将再次建立该路径。
LICENSE等相关文档不怎么需要使用,故就不一一介绍。

修改默认端口

用文本编辑器打开conf目录下的server.xml,会发现下面这么一段,其中的8080就是默认端口,需要修改的话修改之后保存(建议使用1024以上的端口,避免与公用端口冲突),我设置的是8888,重启Tomcat即可!

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

输入http://localhost:8888/,如下所以表现修改端口成功!

技术分享

如上图所示,显示三个控制台:一个市Server Status控制台,另一个是Manager App控制台,还有一个市Host Manager控制台。Status控制台用于监控服务器的状态,而Manager控制台可以部署、监控Web应用,因此我们通常只使用Manager控制台即可。点击Manager App,显示登录界面,这个对应用户名和密码需要自己事先设置好,是通过Tomcat的JAAS(JAAS,全称Java Authentication Service,Java验证和授权API,它用于控制对Java Web应用的授权访问)控制的,设置方法如下:

进入conf文件夹,用文本编辑器打开tomcat-users.xml,在<tomcat-user></tomcat-user>之间添加如下代码:

<role rolename="manager-gui"/>
<user username="tufujie" password="123456" roles="manager-gui"/>

其中username对应用户名,password对应密码,可以自行修改。

修改后重启Tomcat登录Manager App,显示如下:

技术分享

显示Web应用根路径下的所有页面

在Web应用的开发阶段,通常希望Tomcat能列出Web应用根路径下的所有页面,这样能更方便地选择需要调试的JSP页面。但是出于安全考虑,Tomcat并不会列出Web应用根路径下的所有页面,所有打开Tomcat的conf目录下的web.xml文件,搜索listings,将参数对应的值从false改为true,这样就能让Tomcat列出Web应用根路径下的所有页面。

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

部署Web应用

-》利用Tomcat自动部署->最常见、最简单的方式:将Web应用复制到Tomcat的webapps下,系统将会将该应用部署到Tomcat中。

-》利用控制台部署,实质依然是利用Tomcat的自动部署。

技术分享

-》添加自定义的Web部署文件

部署相对复杂,在conf目录下新建Catalina文件夹,再在Catalina文件夹中新建localhost文件夹,在localhost文件夹中添加名字任意的XML文件,该文件就是部署Web应用的配置文件,该文件的主文件名将作为Web应用的虚拟路径。例如,我们在conf/Catalina/localhost下添加一个test.xml文件,该文件的内容如下:

<Context docBase-"G:\Eclipse\jsptest" debug="0" privileged="true">

</Context>

上面的配置文件中粗体字指定了Web应用的绝对路径,重启Tomcat,Tomcat将会把G:\Eclipse\路径下的servlettest文件夹部署成Web应用,我的该应用的地址是:http://localhost:8888/jsptest/。

-》修改server.xml,修改conf文件夹下的server.xml,修改该文件可能会破坏Tomcat的系统文件,不建议使用

配置Tomcat数据源

Tomcat提供两种配置数据源的方式,这两种方式所配置的数据源访问范围不同:一种数据源可以让所有的Web应用都访问,被称为全局数据源,使用全局数据源需要修改Tomcat原有的server.xml文件,所以可能导致破坏Tomcat系统,因此尽量避免使用全局数据源。另一种只能在单个的Web应用中访问,被称为局部数据源,局部数据源无需修改系统的配置文件,只需修改用户自己的Web部署文件,不会造成系统的的破坏,而且数据源被封装在一个Web应用之中,防止被其它的Web应用访问,提供了更好的封装性。建议采用这种。无论哪种方式,都需要提供特定数据库的JDBC驱动,将JDBC驱动程序也就是对应数据库的架包复制到Tomcat的lib路径下。例如:为上面的名为jsptest的应用添加局部数据源,修改Tomcat下conf/Catalina/localhost下的test.xml文件即可。为Context元素添加一个Resource子元素,增加的内容如下:

<!--其中name指定数据源在容器中的JNDI名,从而让其它程序可以通过改名字访问数据源对象,driverClassName指定链接数据库的驱动,url指定数据库服务的URL,username指定链接数据库的用户名,password指定链接数据库的密码,maxActive指定数据源最大活动连接数,maxIdle指定数据池中最大的空闲连接数,maxWait指定数据池中最大等待获取链接的客户端-->
<Resource name="jdbc/dstest" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javaee" username="root" password="123456" maxActive="5" maxIdle="2" maxWait="10000"/>

其中javaee数据库中的代码如下:

drop database javaee;
create database javaee;
use javaee;

create table news_inf
(
 news_id int primary key auto_increment,
 news_title varchar(255)
);

insert into news_inf
values
(null , Java核心技术卷一),
(null , Java核心技术卷二);

测试的JSP代码片段如下:

技术分享

 

以上是关于Tomcat详解的主要内容,如果未能解决你的问题,请参考以下文章

详解Android WebView加载html片段

Tomcat 项目代码上线步骤详解

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool

Tomcat与IIS集成详解

Tomcat基础详解

Tomcat使用详解