Tomcat

来源:互联网 发布:sql 2008 r2 新建实例 编辑:程序博客网 时间:2024/05/17 04:40

Web资源开发完毕后需要发布在Web服务器上才能被外界访问。在小型的应用系统或者有特殊需要的系统中,可以使用免费的Web服务器—Tomcat,该服务器支持JSP以及Servlet规范,其源代码是公开的,不仅可以和目前大部分主流的Web服务器一起工作,还可以作为独立的Web服务器软件。

Tomcat的安装和启动

这里我安装的是Tomcat7.0,在安装Tomcat之前需要安装JDK,运行Tomcat7.0建议使用JDK7.0版本。关于JDK的安装可查看JDK的下载安装及其相关配置(环境变量名一定要配置为JAVA_HOME,Tomcat服务器是由Java语言开发的,它在运行时需要根据JAVA_HOME或JRE_HOME环境变量来获得JRE的安装位置,从而利用Java虚拟机来运行Tomcat)

进入Tomcat的官方网站http://tomcat.apache.org,Download–>Tomcat7,往下翻找到

这里写图片描述

建议用绿色版本,解压就可以用,不用安装。apache-tomcat-7.0.75-windows-x86.zip这是下载完之后的文件。直接解压到指定目录即可(目录不要太深,目录不要有中文和空格),我解压到了D:\Java。若要卸载,直接把文件删了就行了。

在这个页面还可以看到一个Source Code Distributions,下载下来的文件为apache-tomcat-7.0.75-src.zip,里边是Tomcat的源码。以后会用到。

  • bin:用于存放Tomcat的可执行文件和脚本文件
  • conf:用于存放Tomcat服务器的各种配置文件
  • lib:用于存放Tomcat服务器和所有Web应用程序需要访问的JAR文件
  • logs:用于存放Tomcat的日志文件
  • temp:用于存放Tomcat运行时产生的临时文件
  • webapps:Web应用程序的主要发布目录,通常将要发布的应用程序放到这个目录。
  • work:Tomcat的工作目录,JSP编译生成的Servlet源文件和字节码文件放到这个目录下。

在bin子目录下,存放了许多脚本文件,startup.bat就是启动Tomcat的脚本文件(startup.sh是Linux系统下的启动项),双击startup.bat文件,便会启动Tomcat服务器,此时,可以在命令行看到一些启动信息。Tomcat服务器启动后,在浏览器的地址栏中输入http://localhost:8080或者http://127.0.0.1:8080(localhost和127.0.0.1都表示本地计算机)访问Tomcat服务器,如果显示如下界面,则说明Tomcat服务器安装成功。

这里写图片描述
shutdown.bat用来关闭服务器。

为了方便在任意目录启动,可以配置名为CATALINA_HOME的环境变量,变量值为Tomcat的安装目录,配置步骤和JAVA_HOME的基本一样。配置完之后,在命令行中输入startup就可以启动服务器了。当然也可以不用配置,以后也不用这种方式启动,都是在IDE中启动。

端口号占用问题

启动Tomcat时显示JVM_Bind这个错误的时候就是端口号被占用了。如何解决?

1.关闭端口号对应的进程

在命令行窗口中输入netstat -ano,找到最后一行的PID值。然后打开任务管理器,默认情况下不显示PID,在名称那儿右键,然后勾选上PID。根据PID在里边找到对应的进程,然后结束任务。

2.在conf文件夹中找到server.xml,把里边的端口号8080改成别的,比如8081

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

Web应用

在Web服务器上运行的Web资源都是以Web应用形式呈现的,所谓Web应用就是多个Web资源的集合,Web应用通常也称为Web应用程序或Web工程。一个Web应用由多个Web资源或其他文件组成,其中包括html文件、css文件、js文件、动态Web页面、java程序、支持jar包、配置文件等。

开发人员在开发Web应用时,应按照一定的目录结构来存放这些文件;否则,在把Web应用交给Web服务器管理时,不仅可能会使Web应用无法访问,还会导致Web服务器启动报错。

在webapps里边默认有五个文件夹(docs,examples,host-manager,manager,ROOT),一个文件夹就代表一个Web应用程序,其中输入http://localhost:8080默认启动的就是ROOT。运行docs这个应用,可以在浏览器中输入http://localhost:8080/docs这时候就会显示如下界面
这里写图片描述

Web应用

  • html文件,jsp文件,css文件,图片

  • WEB-INF目录

    • web.xml
    • classes
    • lib

一个Web应用需要包含多个目录,这些目录来存储不同类型的文件。其中,所有的Web资源都可以直接存放在Web应用的根目录下,在Web应用的根目录中还有一个特殊的目录WEB-INF,所有的配置文件都直接存放在这个目录中,WEB-INF还有两个子目录,classes目录用于存放.class文件,lib目录用于存放Web应用所需要的各种jar文件。在WEB-INF这个目录下的文件不能被外部直接访问

用MyEclipse建一个Web应用

打开MyEclipse,File–>New–>Web Project

这里写图片描述
在src里边编写Java代码。WebRoot就相当于应用程序的根目录,在里边放一些html,css,js什么的。

接下来,我把index.jsp删了(现在先弄个静态网页,不弄动态的),新建一个1.html。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link href="css/myStyle.css" type="text/css" rel="stylesheet"><link></head><body>    <p>hello</p></body></html>

再建一个css文件,里面建一个myStyle.css

p{    color:red;}

在src里建一个HelloWeb.java,存在com.eaglezsx.demo包里

package com.eaglezsx.demo;public class HelloWeb {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub    }}

为了看的更清楚,Window–>Show View–>Other–>Navigator

这里写图片描述

之后选中项目,

这里写图片描述
点击菜单中的这个按钮,找到项目的文件。把WebRoot里边的文件复制一份(META-INF可以不复制,它是myeclipse自己的配置信息)。然后找到Tomcat里的webapps,先在里边建一个文件夹FirstWeb,然后把刚才复制的文件放到里边。

这里写图片描述

启动服务器,在浏览器中输入网址http://localhost:8080/FirstWeb/1.html,显示结果为
这里写图片描述

集成Tomcat和自动部署应用

Windows–>Preferences–>MyEclipse–>Servers–>Tomcat–>Tomcat 7.x。(也可以直接在搜索栏搜索)

然后找到其安装路径,选择Enable,点击OK即可。

这里写图片描述
这样Tomcat就已经集成在Myeclipse上了。

如何部署Web应用?

这里写图片描述
点击这个按钮,选择HelloWeb这个项目,点击Add,选择Tomcat 7.x这个服务器。

这里写图片描述
然后点击OK。

30-12
这里写图片描述
在服务器中会添加如下文件,HelloWeb就是我项目的名称。

30-13
这里写图片描述
点击Start启动服务器。之后就可以在浏览器中输入http://localhost:8080/HelloWeb/1.html来访问了。

想要停止的话,就点击Start下边的Stop Server。

在集成了Tomcat后,也可以在Servers视窗中部署

30-14
这里写图片描述
Tomcat 7.x右键–>Add Deployment

还有一种部署方式是打成war包。进入到WebRoot目录,输入命令jar -cvf MyWeb.war .

c是Create,f是file,v是view,可以看到添加的过程,也可以写成cf,最后加的.代表把当前目录的所有文件都添加进去。添加完成后,会在当前目录生成一个MyWeb.war文件。把他丢到webapps里边,当启动服务器的时候会自动将其解压,想删除的话,直接把MyWeb.war删除即可,其解压文件过一会儿会自动删除。

C:\Users\YZ>g:G:\>cd G:\Workspaces\MyEclipse 10\HelloWeb\WebRootG:\Workspaces\MyEclipse 10\HelloWeb\WebRoot> jar -cvf MyWeb.war .已添加清单正在添加: 1.html(输入 = 341) (输出 = 242)(压缩了 29%)正在添加: css/(输入 = 0) (输出 = 0)(存储了 0%)正在添加: css/myStyle.css(输入 = 18) (输出 = 20)(压缩了 -11%)正在忽略条目META-INF/正在忽略条目META-INF/MANIFEST.MF正在添加: WEB-INF/(输入 = 0) (输出 = 0)(存储了 0%)正在添加: WEB-INF/classes/(输入 = 0) (输出 = 0)(存储了 0%)正在添加: WEB-INF/classes/com/(输入 = 0) (输出 = 0)(存储了 0%)正在添加: WEB-INF/classes/com/eaglezsx/(输入 = 0) (输出 = 0)(存储了 0%)正在添加: WEB-INF/classes/com/eaglezsx/demo/(输入 = 0) (输出 = 0)(存储了 0%)正在添加: WEB-INF/classes/com/eaglezsx/demo/HelloWeb.class(输入 = 403) (输出 = 263)(压缩了 34%)正在添加: WEB-INF/lib/(输入 = 0) (输出 = 0)(存储了 0%)正在添加: WEB-INF/web.xml(输入 = 404) (输出 = 218)(压缩了 46%)G:\Workspaces\MyEclipse 10\HelloWeb\WebRoot>

配置虚拟目录

将所有的Web应用都放在webapps目录下可能空间不够用,会将Web应用放置在其他目录下。但Tomcat无法管理webapps目录以外的Web应用程序,在这种情况下,Web应用要想被外界访问,就需要手动配置虚拟目录,在Tomcat服务器中配置虚拟目录有两种方式。

1.在server.xml文件中配置虚拟目录

conf目录下的server.xml文件,在元素中添加一个元素

 <Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true">            <Context path="/HelloWeb" docBase="g:\HelloWeb"/>

这样我把HelloWeb这个应用放到了g盘也能访问到

path-虚拟目录:http://localhost:8080/HelloWeb

docBase-真实目录:g:\HelloWeb

Host的父节点是Engine,Engine可以管理多个Host(主机),默认只有一个,就是localhost,访问的是webapps下的应用,unpackWARs和autoDeploy是用来配置是否要自动解压部署war文件。

Tomcat的体系架构如下

30-15
这里写图片描述
这种方式需要重新启动服务器,不建议这样做。

2.在自定义xml文件中配置虚拟目录

进入conf\Catalina\localhost目录,在该目录中创建一个HelloWeb.xml的配置文件(文件名就代表应用的虚拟目录名,可以任意起,建议和应用名相同),在里边填写

<?xml version="1.0" encoding="utf-8"?><Context docBase="g:\HelloWeb"/>

配置默认应用

将配置虚拟目录的时候弄的那个HelloWeb.xml改名为ROOT.xml即可,这样写地址时就不用写应用名了。

配置默认主页

在web.xml中的这个节点中添加节点

  <welcome-file-list>    <welcome-file>1.html</welcome-file>  </welcome-file-list>

这样只需要输入http://localhost:8080/HelloWeb就可以访问到1.html了,可以写多个节点,找的时候会从上往下找,直到找到为止。

配置默认端口

浏览网页服务默认的端口号都是80

在conf文件夹中找到server.xml,把里边的端口号改成80

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

这样以后再写地址的时候就不用写端口号了

配置虚拟主机

Tomcat服务器允许用户在同一台计算机上配置多个Web站点,在这种情况下,需要为每个Web站点配置不同的主机名,即配置虚拟主机。现实生活中,为了提高硬件资源的利用率,有很多网站通过配置虚拟主机的方式实现服务器的共享。

在sever.xml文件中,元素代表一个虚拟主机,它的属性name和appBase分别表示虚拟主机的名称和路径

<Engine name="Catalina" defaultHost="localhost">        ...      <Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true">        ...      </Host></Engine>

默认情况下,虚拟主机的名称为localhost,路径为

127.0.0.1       localhost

这行文本的作用就是建立IP地址(127.0.0.1)和主机名(localhost)的映射关系,这也是在浏览器地址栏中可以使用localhost访问本地Web服务器的原因。如果要增加更多的主机名与IP地址的映射关系,只需要在这个hosts文件中进行配置即可。

127.0.0.1       www.eaglezsx.com

Tomcat的管理平台

在浏览器中输入网址打开http://localhost.8080/打开Tomcat首页,点击首页的Manager App。会弹出框让输入用户名和密码。

这个需要在conf\tomcat-users.xml文件中添加具有管理员权限的账号。Tomcat定义了四个不同的角色

  • manager-gui:允许访问HTML图形管理控制台和状态页面。
  • manager-script:允许访问文本接口和状态页面。
  • manager-jmx:允许访问JMX代理和状态页面。
  • manager-status:只允许访问状态页面。

由于Tomcat管理平台是一个HTML页面,只需在配置文件中添加gui角色。

<tomcat-users>    <role rolename="manager-gui"/>    <user username="eaglezsx" password="1" roles="manager-gui"/></tomcat-users>

之后重新启动Tomcat服务器,输入用户名和密码后就可以看到Tomcat管理平台的页面了。

0 0