Tomcat

本文详细介绍了Tomcat的定义、作用以及常见的网页类型。深入讲解了Tomcat的安装、配置,包括JDK、MySQL连接器的安装,以及JVM、服务器端口和关键配置文件的设置。此外,还探讨了Tomcat架构的两大核心组件Connector和Container,以及HTTP请求处理流程。最后,介绍了如何部署基于域名的虚拟主机,并展示了通过JSP连接MySQL数据库的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

tomcat

什么是Tomcat

  Tomcat 服务器是一个免费的开放源代码的Web 应用服务器, 按照Sun提供的技术规范,实现了对Servlet和Java Server Page(JSP)的支持,使用HTTP或https协议与客户端(通 常是浏览器)进行通信。

  Tomcat 和 apache、nginx 等 Web 服务器一样,具有处理 HTML 页面的功能。不过,Tomcat 处理静态 HTML 的能力不如 Apache和nginx 服务器。

Web server只能完成静态资源的请求;

Servlet 容器能够进行动态资源的请求;

官方网站:http://tomcat.apache.org/

了解jsp

  JSP:全名为Java Server Pages,中文名叫java服务器页面,是一种动态网页开发技术。JSP技术是在传统的网页HTML(文件(*.htm,*.html)中插入Java程序和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

支持 JSP 网站,收费版 web 服务器:oracle 的 weblogic;IBM 的 websphere。

了解servlet

 Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。

Servlet架构,在软件里面位置如下:

 

这个过程为:

客户端发送请求至服务器端;

服务器将请求信息发送至 Servlet;

Servlet 生成响应内容并将其传给服务器;

服务器将响应返回给客户端。

了解java

JDK : java development kit  (套件)

  JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。简单的说 JDK 是面向开发人员使用的 SDK,它提供了 Java的开发环境和运行环境。就是Java开发工具,是进行Java开发的基础。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。

JDK有三个版本,分别是:

SE(JavaSE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。

EE(JavaEE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。从2018年2月26日开始,J2EE改名为Jakarta EE [1]  。

ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。

安装目录介绍:

bin:主要存放的是java的编译器、解析器等工具

jre:java runtime environment ——java运行时环境。在jre 子目录中,JDK使用的Java运行时环境(JRE)的实现。JRE包括Java虚拟机(JVM),类库以及支持用Java编程语言编写的程序执行的其他文件。

jre/bin:java平台所使用的的工具或者可执行程序

jre/lib:jre在运行的时候需要的一些类库、属性设置、资源文件

lib:java开发工具要是用的一些类库,包含了支持JDK工具的核心类库,tools.jar、dt.jar……

src.zip:源代码。在src.zip中,构成Java核心API的所有类的Java编程语言源文件(即java.*,javax.和一些org.包的源文件,但不包括com.sun.的源文件包)

JRE:java Runtime Enviroment

  JRE是指 Java 的运行环境,是面向 Java 程序的使用者,而不是开发者,运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

JVM:java virtual machine

  JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是java的核心和基础,JVM是一种用于计算设备的规范,它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机。可以在上面执行java的字节码程序。java编译器只需面向JVM,生成JVM能理解的字节码文件。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行,这就是Java的能够“一次编译,到处运行”的原因。

  从这张图中我们可以看出,JVM是运行在操作系统之上的,它与硬件没有直接的交互。

在 JDK的安装目录里你可以找到 jre目录里面有两个文件夹bin 和 lib,在这里可以认为 bin 里的就是 jvm, lib 中则是 jvm 工作所需要的类库,而 jvm 和 lib 合起来就称为 jre。

常见的网页类型:

HTML&HTM:HyperText Markup Language 超文本连接标示语言  .html .htm

ASP:        Active Server Page 动态服务器页面(微软开发)  .asp

ASP.net:    ASP的下一个版本,也是建立在通用语言上的程序架构,网页后缀如.aspx

PHP:       Hypertext Preprocessor 超级文本预处言  .php  .php5  .phps

JSP:       JAVA Server Pages  Sun Microsystems公司倡导

部署Tomcat使用jsp链接Msql

Tomcat工作模式和端口

模式:B/S模式

端口:8080

Tomcat所有软件

dk工具下载:

https://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html

Tomcat下载页面

http://tomcat.apache.org/

MySQL-Connector-Java:

http://dev.mysql.com/downloads/connector/         #官网下载网站

 

选择5.1.47版本,因为我们mysql是5.7版本的,选择tar包下载

Tomcat-native:

 Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。就是用tomcat-native这个软件来提高tomcat处理静态页面的性能。这个软件在tomcat的bin目录下已经提供,不用单独去下载了!使tomcat处理静态的性能略逊于apache!

所有软件的版本如下:

MySQL-Connector-Java:                  mysql-connector-java-5.1.47

Tomcat:                               apache-tomcat-8.5.42

JDK:                                  jdk-8u171-linux-x64

MySQL:                               mysql-5.7.26

安装JDK

卸载openjdk

安装之前需要查看下系统是否安装了openjdk,如果安装了openjdk,请先卸载,否则安装不了oracle官方的jdk

[root@wzy ~]# yum remove java-* -y

上传所有所需的软件包

解压JDK

[root@wzy ~]# tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/

配置JDK环境变量

[root@wzy ~]# vi /etc/profile  #在文件最后加入一下行

JAVA_HOME=/usr/local/jdk1.8.0_171

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

export PATH JAVA_HOME CLASSPATH

[root@wzy ~]# source /etc/profile   #使环境变量生效

查看java环境

[root@wzy ~]# java -version

安装tomcat

解压软件包

[root@wzy ~]# tar -zxvf apache-tomcat-8.5.42.tar.gz -C /usr/local/

重命名目录

[root@wzy ~]# cd /usr/local/

[root@wzy local]# mv apache-tomcat-8.5.42/  tomcat

注意:Tomcat有两种安装方式,一种是直接解压就可以使用的二进制文件,第二种是编译安装,我们这里采用了第一种方法,下载的tomcat软件直接解压就可以执行的二进制文件,因为在官方默认下载的便是使用第一种方法安装。

查看tomcat目录

[root@wzy tomcat]# ll

各目录文件用途

tomcat

    |---bin:存放启动和关闭tomcat执行脚本;

    |---conf :存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml;

    |---lib: 存放Tomcat运行需要的库文件(jar),包含Tomcat使用的jar文件。unix平台此目录下的任何文件都被加到Tomcat的classpath中;

    |---logs:存放Tomcat执行时的LOG文件;

    |---webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录,即供外界访问的web资源的存放目录;

    |--- webapps/ROOT:tomcat的家目录

    |--- webapps/ROOT/ index.jsp:Tomcat的默认首页文件

    |---work:存放jsp编译后产生的class文件或servlet文件存放

    |---temp:存放Tomcat运行时所产生的临时文件

conf目录中一些关键文件说明:

server.xml文件:该文件用于配置和server相关的信息,比如tomcat启动的端口号、配置host主机、配置Context

web.xml文件:部署描述文件,web.xml 文件有两部分:Servlet 类定义和Servlet 映射定义。这个web.xml中描述了一些默认的servlet,部署每个webapp时,都会调用这个文件。

这个文件中也注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!

tomcat-users.xml文件:配置tomcat的用户密码与权限。

context.xml:每个webapp都可以使用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置;例如context.xml里设置tomcat数据源,用来连接数据库。

catalina.policy:当使用-security选项启动tomcat时,用于为tomcat设置安全策略;

catalina.properties:Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;

logging.properties:日志系统相关的配置;

bin目录中一些关键程序说明:

[root@wzy tomcat]# ls bin/

#bat为windows下的脚本(批处理)

#sh为Linux下的脚本,Shell

#catalina.sh是一个最关键的脚本,其他的启动脚本如startup.sh,shutdown.sh,都是使用了不同的参数调用了该脚本,startup.sh是以start参数调用了catalina.sh脚本,shutdown.sh使用stop调用了catalina.sh脚本。

Tomcat启动脚本

[root@wzy tomcat]# vi /etc/init.d/tomcat

#!/bin/bash

# Tomcat init script for Linux

# chkconfig: 2345 96 14

# discription: The Apache Tomcat Server/JSP container

JAVA_HOME=/usr/local/jdk1.8.0_171/

CATALINA_HOME=/usr/local/tomcat

start_tomcat=$CATALINA_HOME/bin/startup.sh       #tomcat启动文件

stop_tomcat=$CATALINA_HOME/bin/shutdown.sh     #tomcat关闭文件

start() {

        echo -n "Starting tomcat: "

        ${start_tomcat}

        echo "tomcat start ok."

}

stop() {

        echo -n "Shutting down tomcat: "

        ${stop_tomcat}

        echo "tomcat stop ok."

}

# See how we were called

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  restart)

        stop

        sleep 5

        start

        ;;

  *)

        echo "Usage: $0 {start|stop|restart}"

esac

exit 0

注释:

其中2345是默认启动级别,级别有0-6共7个级别。是指tomcat在2345级别自动启动。

96启动优先级,14停止优先级,优先级范围是0-100,数字越大,优先级越低。

JAVA_HOME=/usr/local/jdk1.8.0_171/       指定JAVA目录

CATALINA_HOME=/usr/local/tomcat   #指定tomcat路径

$CATALINA_HOME/bin/catalina.sh $*  #指定tomcat运行脚本

启动脚本添加执行权限

[root@wzy tomcat]# chmod +x /etc/init.d/tomcat

建立系统服务文件

除了chkconfig可以添加系统服务,centos7开始使用systemd来管理系统服务,我们可以在/lib/systemd/system目录下创建tomcat.service文件把tomcat添加为系统服务,我们就可以使用systemctl来管理tomcat

[root@wzy ~]# vi /lib/systemd/system/tomcat.service

[Unit]

Description=tomcat

After=network.target


[Service]

Type=forking

Environment=JAVA_HOME=/usr/local/jdk1.8.0_171/

Environment=CATALINA_HOME=/usr/local/tomcat

ExecStart=/etc/init.d/tomcat start

ExecStop=/etc/init.d/tomcat stop

ExecRestart=/etc/init.d/tomcat restart

PrivateTmp=true


[Install]

WantedBy=multi-user.target

[root@wzy ~]# systemctl daemon-reload  #重载service文件

注意只要修改了.service文件都需要执行这条命令,重载service文件

启动tomcat

添加开机自启动

[root@wzy ~]# systemctl enable tomcat

查看是否启动

[root@wzy ~]# ps -ef | grep tomcat

查看端口

[root@wzy ~]# netstat -antup | grep java

三个端口:8080为提供web服务的端口,侦听来自客户端的请求。8005为管理端口,这个端口负责监听关闭Tomcat的请求,shutdown会向该端口发送的关闭服务器的命令字符串。8009端口为第三方服务调用的端口,负责和其他HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时就需要用到这个。

测试tomcat

http://192.168.10.5:8080

点击manager app

拒绝访问,因为这个页面需要我们配置一个账号密码,来访问。

注:如果你需要查看 Tomcat 的运行状态可以配置tomcat管理员账户,然后登陆 Tomcat 后台进行查看。

创建管理manger app 用户

修改tomcat-users.xml配置文件

[root@wzy ~]# vi /usr/local/tomcat/conf/tomcat-users.xml

在44行上tomcat-users模块中添加内容

<role rolename="admin-gui"/>

 <role rolename="admin-script"/>

 <role rolename="manager-gui"/>

 <role rolename="manager-script"/>

 <role rolename="manager-jmx"/>

 <role rolename="manager-status"/>

 <user username="admin" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>

角色说明:

1:“manager-gui”:Allows access to the html interface(允许通过web的方式登录查看服务器信息)。

2:“manager-script”: Allows access to the plain text interface(允许以纯文本的方式访问)。

3:“manager-jmx”: Allows access to the JMX proxy interface(允许jmx的代理访问)。

4:“manager-status”: Allows access to the read-only status pages(允许以只读状态访问)。

5:  admin-gui: 允许访问HTML GUI

6 : admin-script: 允许访问文本接口

tomcat8以上还要增加以下配置

[root@wzy ~]# vi /usr/local/tomcat/conf/Catalina/localhost/manager.xml

<Context privileged="true" antiResourceLocking="false"

         docBase="${catalina.home}/webapps/manager">

    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />

</Context>

[root@wzy ~]# vi /usr/local/tomcat/webapps/host-manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true" >

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"

         allow="^.*$" />   #修改allow部分

重启tomcat

[root@wzy ~]# systemctl restart tomcat

测试

查看当前配置的jvm大小:

查看jvm大小配置可以到控制台“Server Status”那个页面去,由于tomcat默认没有用户的所以无法登录控制台,所以我们需要先配置用户以使能登录控制台(参考上面的配置)。

Free memory--当前分配给jvm的内存中还剩余的内存;

Total memory--当前分配给jvm的内存大小;

Max memory--最大可分配给jvm的内存大小。

修改jvm的内存大小:

编缉vi /usr/local/tomcat/bin/catalina.sh,在最前面(注释除外)添加:

JAVA_OPTS='-Xms512m -Xmx1024m'

-Xms:表示java虚拟机堆内存初始内存分配的大小,虚拟机在启动时向系统申请的内存的大小,-Xmx表示最大可分配给jvm的内存大小,根据自己需要修改。一般建议堆的最大值设置为可用内存的最大值的80%。

重启tomcat使配置生效,然后再登录“Server Status”,再次查看jvm配置是否生效

执行ps查看JVM参数设置

Tomcat架构与术语

Tomcat结构图:

Tomcat主要组件:服务器Server,服务Service,连接器Connector、容器Container。连接器Connector和容器Container是Tomcat的核心。

Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。

Service主要包含两个部分:Connector和Container。从上图中可以看出 Tomcat 的心脏就是这两个组件,它们的作用如下:

Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;

Container用于封装和管理Servlet,以及具体处理Request请求。

多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了。但 Service 还要一个生存的环境,必须要有人能够给它生命、掌握其生死大权,而这就非 Server 莫属。所以,整个 Tomcat 的生命周期由 Server 控制。

Tomcat 还有其它重要的组件,如安全组件 security、logger 日志组件、session、mbeans、naming 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。

两大组件:Connector和Container

1、Connector

一个Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理Engine(Container中的一部分),从Engine出获得响应并返回客户。

一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接,示意图如下(Engine、Host、Context下边会说到):

Connector 最重要的功能就是接收连接请求然后分配线程让 Container 来处理这个请求,所以这必然是多线程的,多线程的处理是 Connector 设计的核心。

Tomcat中有两个经典的Connector,一个直接侦听来自Browser的HTTP请求,另外一个来自其他的WebServer请求。HTTP/1.1 Connector在端口8080处侦听来自客户Browser的HTTP请求,AJP/1.3 Connector在端口8009处侦听其他Web Server(其他的HTTP服务器)的Servlet/JSP请求。

Web客户访问Tomcat服务器上JSP组件的两种方式如图所示。

http协议访问端(默认为8080),负责建立HTTP连接。在通过浏览器访问Tomcat

服务器的Web应用时,使用的就是这个连接器。

AJP协议访问端口(默认为8009端口),负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。

2、Container

Container用于封装和管理Servlet,以及具体处理Request请求,在Container内部包含了4个子容器,结构图如下:

4个子容器的作用分别是:

(1)Engine:引擎,用来管理多个站点,一个Service最多只能有一个Engine;Engine用来接收并处理从Connector发来的请求,并将处理结果返回Connector。一个Engine可以包含一个或多个Host。

Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名,当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理。Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理。

(2)Host:代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配,每个虚拟主机下都可以部署一个或者多个Web App,每个Web App对应于一个Context,有一个Context path。当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理。匹配的方法是“最长匹配”,所以一个path=""的Context将成为该Host的默认Context,所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配

(3)Context:一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成。Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类,当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类,如果找到,则执行该类,获得请求的回应,并返回

(4)Wrapper:每一Wrapper封装着一个Servlet。

Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了。

Context和Host的区别是Context表示一个应用,我们的Tomcat中默认的配置下webapps下的每一个文件夹目录都是一个Context,其中ROOT目录中存放着主应用,其他目录存放着子应用,而整个webapps就是一个Host站点。

我们访问应用Context的时候,如果是ROOT下的则直接使用域名就可以访问,例如:www.abc.com,如果是Host(webapps)下的其他应用,则可以使用www.abc.com/docs进行访问。当然默认指定的根应用(ROOT)是可以进行设定的,只不过Host站点下默认的主营用是ROOT目录下的。

HTTP请求过程

Tomcat Server处理一个HTTP请求的过程

1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。

2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。

3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。

4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为path=””的Context去处理)。

5、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。

6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。

7、Context把执行完之后的HttpServletResponse对象返回给Host。

8、Host把HttpServletResponse对象返回给Engine。

9、Engine把HttpServletResponse对象返回Connector。

10、Connector把HttpServletResponse对象返回给客户Browser。

搭建于域名的虚拟主机

[root@wzy ~]# ls /usr/local/tomcat/conf/

server.xml是Tomcat的主配置文件(全局),服务器设置的,例如端口设置,路径设置。

修改server.xml配置文件

[root@wzy ~]# vi /usr/local/tomcat/conf/server.xml

在末尾</Engine>上面添加内容     

 <Host name="www.wzy.com"  appBase="/www/html">

         <Context path="" docBase="/www/html/web1" />

      </Host>

      <Host name="www.wzy.cn"  appBase="/www/html">

         <Context path="" docBase="/www/html/web2" />

      </Host>

    </Engine>

  </Service>

</Server>

name指定虚拟主机的名称,那么使用对应的ip将无法访问,如果需要使用 ip 来访问,需要把 host 的name属性改成ip即可。

appBase指定应用程序(网站)的根目录,这里可以存放多个程序(网站),一般是相对路径,相对于tomcat的安装目录。

Context path=""为虚拟目录,如果是空,表示直接就是/,如果是如path="aa",那么访问的时候就是site:8080/aa

docBase="……" 为实际目录,可以是绝对路径,如果是相对路径就是基于appBase

<Host> 元素的其他属性如下:

其余属性的含义可以参考

https://tomcat.apache.org/tomcat-8.5-doc/config/host.htm

创建测试网页

[root@wzy ~]# mkdir -p /www/html/{web1,web2}

[root@wzy ~]# echo "wzy.com web1" > /www/html/web1/index.html

[root@wzy ~]# echo "wzy.cn web2" > /www/html/web2/index.html

修改hosts

[root@wzy ~]# vi /etc/hosts

192.168.10.5 www.wzy.com

192.168.10.5 www.wzy.cn

windows客户端修改hosts

C:\Windows\System32\drivers\etc

192.168.10.5 www.wzy.com

192.168.10.5 www.wzy.cn

重启tomcat

[root@wzy ~]# systemctl restart tomcat

测试

http://www.wzy.com:8080

http://www.wzy.cn:8080

安装tomcat-native

   Tomcat 可以使用 apr 来提供更好的伸缩性、性能和集成到本地服务器技术。用来提高 tomcat 的性能。 tomcat native 在具体的运行平台上,提供了一种优化技术,它本身是基于 ARP(Apache Portable(轻便) Runtime)技术,我们应用了 tomcat native 技术之后,tomcat 在跟操作系统级别的交互方面可以做得更好,并且它更像apache 一样,可以更好地作为一台 web server。 tomcat 可以利用 apache 的 apr 接口,使用操作系统的部分本地操作,从而提升性能APR 提升的是静态页面处理能力.

tomcat-native下载地址

Apache Tomcat® - Tomcat Native Downloads

Tomcat8.5 在bin下已有tomcat-native.tar.gz,我们不需要去下载

安装依赖

[root@wzy ~]# yum install -y apr apr-devel gcc gcc-c++ openssl-devel openssl

解压

[root@wzy ~]# cd /usr/local/tomcat/bin/

[root@wzy bin]# tar zxf tomcat-native.tar.gz -C /usr/local/src/

预编译

[root@wzy bin]# cd /usr/local/src/tomcat-native-1.2.21-src/native/

[root@wzy native]# ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/local/jdk1.8.0_171/ --with-ssl

编译安装

[root@wzy native]# make && make install

添加库文件:

[root@wzy native]# vi /etc/ld.so.conf

/usr/local/apr/lib  #在文档最后添加这一行

使配置文件生效

[root@wzy native]# ldconfig

[root@wzy native]# echo "ldconfig" >>/etc/rc.local  #添加开机生效

[root@wzy native]# chmod +x /etc/rc.d/rc.local

其实添加完ldconfig并无法立即引用类库变量,我们可以做软连接解决:

[root@wzy native]# ln -s /usr/local/apr/lib/*  /usr/lib/

重启tomcat

[root@wzy native]# systemctl restart tomcat

看日志是否支持native

[root@wzy native]# cat /usr/local/tomcat/logs/catalina.out | grep Native

安装MySQL

开启wzy2的MySQL,没有可以参考MySQL安装文档

创建测试数据

[root@wzy2 ~]# mysql -uroot -p123456

mysql> create database tomcat;    #创建tomcat数据库

mysql> use tomcat;

mysql> create table tt(id int,name varchar(128)); #创建tt测试表

mysql> insert into tt values (1,"come on boy"),(2,"come on girl");  #插入数据

mysql> grant all on tomcat.* to tomcat@'192.168.10.%' identified by 'tomcat'; #授权

mysql> flush privileges;  #刷新权限

测试jsp链接mysql(wzy)

Jsp链接mysql,官方提供了工具: mysql-connector

安装mysql-connector(wzy)

解压缩软件包

因为之前已经上传过软件包,这里直接解压软件包

[root@wzy ~]# tar -zxvf mysql-connector-java-5.1.47.tar.gz -C /usr/local/src/

[root@wzy ~]# cd /usr/local/src/mysql-connector-java-5.1.47/

复制jar文件到tomcat的lib目录下

[root@wzy mysql-connector-java-5.1.47]# cp mysql-connector-java-5.1.47-bin.jar /usr/local/tomcat/lib/

重启tomcat

[root@wzy ~]# systemctl restart tomcat

建立测试页面

[root@wzy ~]# vi /usr/local/tomcat/webapps/ROOT/mysql.jsp

注意修改mysql的IP地址

<%@ page contentType="text/html;charset=utf-8"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%

Class.forName("org.gjt.mm.mysql.Driver").newInstance();

String url ="jdbc:mysql://192.168.10.6/tomcat?user=tomcat&password=tomcat&useUnicode=true&characterEncoding=utf-8";

Connection conn= DriverManager.getConnection(url);

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql="select * from tt";

ResultSet rs=stmt.executeQuery(sql);

while(rs.next()){%>

step:<%=rs.getString(1)%>

context:<%=rs.getString(2)%><br><br>

<%}%>

<%out.print("Congratulations!!! JSP connect MYSQL IS OK!!");%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>

#代码复制注意核对,由于编码问题,复制到vi中可能会增加多余的%号,记得删除

测试

http://192.168.10.5:8080/mysql.jsp

创建并发布WAR文件

    Tomcat既可以运行采用开放式目录结构的Web应用,也可以运行WAR文件。我有一个java网站项目叫helloapp,只要把整个网站目录helloapp拷贝到/webapps目录下,即可运行开放式目录结构的helloapp应用。在Web应用的开发阶段,为了便于调试,通常采用开放式的目录结构来发布Web应用,这样可以方便地更新或替换文件。如果开发完毕,进入产品发布阶段,应该将整个Web应用打包为WAR文件,再进行发布。

在本例中,按如下步骤发布helloapp。

(1)进入helloapp应用的根目录/webapps/helloapp。

(2)把整个Web应用打包为helloapp.war文件,命令如下:

jar cvf  helloapp.war  ./*

在JDK的bin目录下提供了打包程序jar。如果要展开helloapp.war文件,命令为:

jar  xvf  helloapp.war

(3)把helloapp.war文件拷贝到/webapps目录下。

(4)删除原先的helloapp目录。

(5)启动Tomcat服务器。

    Tomcat服务器启动时,会把webapps目录下的所有WAR文件自动展开为开放式的目录结构。所以服务器启动后,会发现服务器把helloapp.war展开到 /webapps/helloapp目录中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值