• JavaWeb Tomcat


    1. Web相关概念

    1.1. RCPTCP

    我们经常使用的桌面程序叫做胖客户端程序(Rich Client Program,简称RCP),例如QQExcelWord等软件。这类桌面软件需要安装到电脑上才能运行,并会导致占用电脑硬盘空间越来越大,因此我们称这类桌面程序为胖客户端程序。

    与胖客户端程序相对的是瘦客户端程序。瘦客户端程序(Thin Client Program,简称TCP)一般都是Web程序,例如Web QQ、网上银行等。这类瘦客户端程序不需要在电脑安装,只需要打开浏览器就可以运行。

    1.2. C/SB/S

    常见的的软件系统结构分别为C/S结构和B/S结构,C/S结构意思是客户端/服务器端体系结构,B/S结构意思是浏览器/服务器端体系结构。

    C/SClient/Server)即客户端/服务器端:

    • 优点:安全性比较好。
    • 缺点:软件更新时同时更新服务器端和客户端,比较麻烦。

    B/SBrowser/Server)即浏览器/服务器端:

    • 优点:只需编写服务器端程序。
    • 缺点:安全性比较差。

    1.3. Web资源

    在打开浏览器访问某个网站或打开某个程序时,都是访问Web程序的相关资源。而Web资源可以分为静态资源和动态资源。

    所谓静态资源就是指访问的网页内容是始终不改变的,例如网页中显示的文本、图片、视频或视频等内容都属于静态资源。而动态资源就是指访问的网页内容是可以通过服务器端呈现动态变化的,例如显示用户信息的列表、显示本月消费记录等内容都属于动态资源。我们所学习的技术中例如HTML技术就属于静态资源内容,而例如ServletFilter就属于动态资源内容。当然,除了Java Web技术外,还有很多技术是属于动态资源的,例如ASPPHP技术等。

    无论是静态资源还是动态资源,我们在访问时都需要打开浏览器,在浏览器的地址栏中输入对应的地址(URL)。该地址是由“协议名://域名:端口号/路径”组成的,就像访问某个网站的页面,例如http://www.baidu.com:80/index.html

    1.4. Web服务器

    对于静态资源或者动态资源,需要存储在Web服务器中,方便用户访问。Web服务器的作用是接收用户的请求信息,并为用户做出响应。

    当然,对于Java Web程序而言,不仅需要Web服务器,还需要JSP/Servlet容器的。

    我们常见使用的都是Web服务器和JSP/Servlet容器集成在一起的,下列就是比较流行的Web服务器:

    • Tomcat服务器:Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由ApacheSun 和其他一些公司及个人共同开发而成。也是目前应用最广泛的Web服务器。
    • JBoss服务器:是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。
    • GlassFish服务器:是用于构建 Java EE 5应用服务器的开源开发项目基于 Sun Microsystems 提供的 Sun Java System Application Server PE 9 的源代码以及 Oracle 贡献的 TopLink 持久性代码
    • Weblogic服务器:是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE架构的中间件,BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
    • Websphere服务器: IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具

    2. 安装Tomcat

    2.1. Tomcat服务器介绍

    Tomcat服务器是一个免费的开放源代码的Web应用服务器,它是Apache软件基金会(Apache Software Foundation)的jakarta项目中的一个核心项目,由ApacheSun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的ServletJSP规范总是能在Tomcat中得到体现。因为Tomcat技术先进、性能稳定、而且免费,因此深受Java开发人员的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

    下面给出Tomcat服务器接收用户请求并做出响应的图解:

    ① 客户端(通常是浏览器)访问Web服务器,发送HTTP请求。

    ② Web服务器接收到请求后,传递给Servlet容器。

    ③ Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。

    ④ Servlet实例使用请求对象得到客户端的请求信息,然后进行响应的处理。

    ⑤ Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。

    2.2. 安装Tomcat服务器

    首先访问Tomcat的官方网站,http://tomcat.apache.org/

    在左边菜单中,可以找到Download”选项,其下面包含Tomcat 8.0Tomcat 7.0Tomcat 6.0三个版本。选择Tomcat 7.0

     

    从上图中看到“32-bit Windows zip”表示32位的Tomcat服务器,“64-bit Windows zip”表示64位的Tomcat服务器,根据操作系统选择对应版本。

    将下载的压缩包解压缩到指定的系统目录中即可。

    2.3. Tomcat目录说明

    目    录

    用    途

    /bin

    存放启动和关闭Tomcat的脚本文件

    /conf

    存放Tomcat服务器的各种配置文件,其中包括server.xml、tomcat-users.xml和web.xml等配置文件

    /lib

    存放Tomcat服务器及所有Web应用程序都可以访问的Jar文件

    /logs

    存放Tomcat服务器的日志文件

    /temp

    存放Tomcat服务器运行时产生的临时文件

    /webapps

    当发布Web应用程序时,通常把Web应用程序的目录及文件放到这个目录下

    /work

    Tomcat将JSP生成的Servlet源文件和字节码文件到这个目录下

    2.4. 启动Tomcat服务器

    Tomcat安装目录下的bin目录中,鼠标双击startup.bat文件,启动Tomcat服务器。

    这时有可能出现上面的错误提示,“Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program”表示没有设置JAVA_HOME环境变量或JRE_HOME环境变量没有设置。要运行Tomcat服务器的前提是,需要先安装JDK环境,并设置相关环境变量。

    JDK环境变量设置需要以下三个:

    • JAVA_HOME:设置为JDK安装目录,例如C:ToolsJavajdk1.7.0_10。
    • CLASSPATH%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;
    • Path; %JAVA_HOME%in;%JAVA_HOME%jrein;

    JDK环境变量设置成功后,我们再次鼠标双击startup.bat文件

    这时,打开浏览器,在地址栏中输入http://localhost:8080,将出现以下页面(Tomcat服务器的欢迎页面)。

     

    Tomcat安装目录的bin目录下,鼠标双击shutdown.bat文件,可以关闭Tomcat服务器。

    2.5. Tomcat启动分析

    利用文本编辑器打开Tomcat安装目录中的bin目录中startup.bat文件,我们可以看到这样一段代码:

     

    通过上面代码,我们可以知道:在启动Tomcat服务器之前,先判断CATALINA_HOME环境变量是否为空。如果为空,就将当前目录设为CATALINA_HOME的值,并判断当前目录下是否存在bincatalina.bat文件。所以,如果将startup.bat文件放置到其他目录中,再启动Tomcat服务器时,就会报错。

     

    所以,我们需要设置CATALINA_HOME环境变量的值为Tomcat安装目录。

    2.6. 启动常见问题

    访问Tomcat服务主页的地址是http://localhost:8080,其中localhost是指向本主机,8080表示端口号。端口号可能出现被其他程序占用的情况,如果出现这种情况,会提示以下错误:

    上面的错误提示可以在Tomcat安装目录中的logs目录中的catalina.xxxx-xx-xx.log日志文件找到,其中“java.net.BindException: Address already in use: JVM_Bind”该错误提示表示Tomcat服务的端口号已被占用。

    我们可以启动操作系统的命令行窗口,然后在命令行窗口中输入netstat –ano”命令,查看是哪个程序占用了8080端口。

     

    通过上面命令行窗口的提示,我们可以发现是被PID7872的程序占用。然后我们可以打开系统任务管理器,找到PID7872的程序进程。

    选中PID7872的程序进程,鼠标右键选择结束进程即可。这时可以再次正常启动Tomcat服务器。

    也可以修改Tomcat服务器地址的端口号,在Tomcat安装目录的conf目录的server.xml文件中,可以找到这样一段代码:

     

    将上面的代码中,port改为“80”即可。这时再次启动Tomcat服务器,在浏览器的地址栏输入http://localhost:80即可访问Tomcat服务的主页。由于80端口是HTTP协议的默认端口,所以可以省略不写,直接输入http://localhost即可访问。

    但是,操作系统的IIS服务或其他服务可能占用80端口,同样导致Tomcat服务器启动失败。可以打开系统服务窗口,关闭占用80端口的服务即可。

    3. 创建Web应用

    3.1. 创建Web静态应用

    通过Tomcat安装目录说明我们知道,Tomcat安装目录的webapps目录是用于存放Web应用程序的。所以,我们可以将创建的Web静态应用放置到该目录中,具体步骤如下:

    • 进入到Tomcat安装目录的webapps目录中,新建一个文件夹为“mydemo”。
    • 进入到新建的文件夹mydemo”中,创建一个HTML页面“index.html”。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>MyDemo.html</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      </head>
      <body>
        <h1>Hello Tomcat!</h1>
      </body>
    </html>
    • 进入到Tomcat安装目录的bin目录中,鼠标双击startup.bat文件,启动Tomcat服务器。
    • 打开浏览器,在地址栏中输入http://localhost:8080/mydemo/index.html即可访问。

    3.2. 创建Web动态应用

    HTML页面属于静态资源,我们更多使用Web应用多为动态资源。想要创建Web动态应用,首先我们需要了解Web动态应用的目录结构:

    • Web应用目录下存放各种静态资源,例如HTML页面等。
    • Web应用目录/WEB-INF目录:这个目录名称必须是大写,并且该目录中的内容是无法通过浏览器访问的。一般情况下,我们会将私有的或安全性高的内容放置在该目录中。
    • Web应用目录/WEB-INF/classes目录:用于存放Java编译后的class文件。
    • Web应用目录/WEB-INF/lib目录:存放该Web动态应用所使用的Jar包。
    • Web应用目录/WEB-INF/web.xml文件:Web动态应用的部署描述文件,可以在该文件中对Web应用进行配置。例如,可以配置Web应用的默认主页。

    了解了Web动态应用的目录结构,我们就可以尝试在Tomcat安装目录的webapps目录中创建一个Web动态应用。

    • 进入到Tomcat安装目录的webapps目录中,新建一个文件夹为“mydemo”。
    • 进入到新建的文件夹mydemo”中,创建一个HTML页面“index.html”。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>MyDemo.html</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      </head>
      <body>
        <h1>Hello Tomcat!</h1>
      </body>
    </html>
    • mydemo”目录中,鼠标右键新建一个文件夹“WEB-INF”。
    • 进入到WEB-INF”目录中,鼠标右键新建一个文件夹“classes”。默认情况下,我们可以不编写Java文件,该目录为空。
    • WEB-INF”目录中,鼠标右键新建一个文件夹“lib”,默认情况下,该目录也可以为空。
    • WEB-INF”目录中,鼠标右键新建一个XML文件“web.xml”,具体内容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>    
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
    </web-app>
    • 进入到Tomcat安装目录的bin目录中,鼠标双击startup.bat文件,启动Tomcat服务器。
    • 打开浏览器,在地址栏中输入http://localhost:8080/mydemo/index.html即可访问。

    3.3. Tomcat配置外部应用

    我们将创建的Web应用全部放置在Tomcat安装目录的webapps目录中,会导致Tomcat安装目录的体积越来越大。所以,我们还可以将创建的Web应用放置到其他目录中,具体有两种配置方式:

    1. 通过修改Tomcat安装目录的conf目录中的server.xml方式完成。
    • 将创建的Web应用拷贝到本地磁盘的任意目录中,例如C盘下。
    • 打开Tomcat安装目录的conf目录中的server.xml文件,在<Host>标签内添加如下内容:
    <Context path="mydemo" docBase="c:/mydemo" />
      • ² path属性:设置当前Web应用的名称。
      • ² docBase属性:设置Web应用的物理位置。
    • 进入到Tomcat安装目录的bin目录中,鼠标双击startup.bat文件,启动Tomcat服务器。
    • 打开浏览器,在地址栏中输入http://localhost:8080/mydemo/index.html即可访问。

    这种方式的问题在于每次配置外部的Web应用,都需要修改Tomcat安装目录下的server.xml文件。所以,每次修改完成之后,需要重新启动Tomcat服务器。

    1. 通过在Tomcat安装目录的conf目录中创建相关配置信息方式完成。
    • 将创建的Web应用拷贝到本地磁盘的任意目录中,例如C盘下。
    • 进入到Tomcat安装目录confCatalina localhost目录中,鼠标右键新建一个XML文件“mydemo.xml”,具体内容如下:
    <Context docBase="c:/mydemo" />

    需要注意的是:创建的XML文件名称为当前Web应用的名称。

    • 进入到Tomcat安装目录的bin目录中,鼠标双击startup.bat文件,启动Tomcat服务器。
    • 打开浏览器,在地址栏中输入http://localhost:8080/mydemo/index.html即可访问。

    这种方式是Tomcat官方推荐的,因为不需要每次修改server.xml文件。每次配置外部Web应用后不需要重新启动Tomcat服务器。

    3.4. 配置映射虚拟主机

    之前我们配置到Web应用到Tomcat服务器,访问地址都是要先访问到Tomcat服务的地址才可以。如果我们要配置像访问百度网站一样的Web应用应该怎么做呢?

    • 进入到C:WINDOWSsystem32driversetc目录中,打开并编辑host文件,内容如下:
    127.0.0.1    www.baidu.com

    这一步的作用是将百度网站地址映射到本主机。

    • 进入到Tomcat安装目录的conf目录中,打开并编辑server.xml文件,内容如下:
    <Host name="www.baidu.com"  appBase="mywebapps" 
      unpackWARs="true" autoDeploy="true">
    </Host>
    • Tomcat安装目录中,鼠标右键创建一个文件夹“mywebapps”,将此文件夹作为Web应用在本地的存储位置。
    • 进入到mywebapps”目录中,鼠标右键创建一个文件夹“ROOT”,将Web应用的所有内容拷贝到此文件夹中。
    • 打开Tomcat安装目录的conf目录中的server.xml文件,修改Tomcat服务的端口号为80
    • 进入到Tomcat安装目录的bin目录中,鼠标双击startup.bat文件,启动Tomcat服务器。
    • 打开浏览器,在地址栏中输入http://www.baidu.com即可访问。

    3.5. Tomcat管理平台

    当启动Tomcat服务器,通过浏览器访问Tomcat服务的主页,我们会发现首页中含有“Manager App”选项,该功能是Tomcat的管理平台,用于管理Tomcat下已发布的Web应用。

    但是,当点击Manager App”时,会提示输入用户名和密码。我们需要设置用户名和密码才能进入Tomcat管理平台,具体步骤如下:

    • 打开Tomcat安装目录的conf目录中的tomcat-users.xml文件,配置Tomcat管理平台的用户名和密码,具体配置信息如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <tomcat-users>
    <role rolename="manager-gui"/>
    <user username="tomcat" password="tomcat" roles="manager-gui"/>
    </tomcat-users>
    • 进入到Tomcat安装目录的bin目录中,鼠标双击startup.bat文件,启动Tomcat服务器。
    • 打开浏览器,在地址栏中输入http://localhost:8080访问Tomcat服务的主页,点击“Manager App”,输入用户名和密码,进入Tomcat管理平台。

    4. Eclipse配置Tomcat

    4.1. 配置Tomcat

    使用MyEclipse配置Tomcat服务器后,就可以使用MyEclipse来启动和关闭Tomcat服务器。首先,我们需要先来配置Tomact服务器。

    MyEclipse自带了Tomcat服务器,但通常都不会使用,而是使用外部独立的Tomcat服务器。所以,首先需要关闭MyEclipse自带的Tomcat服务器。

    • 打开MyEclipse开发工具,进入开发主操作页面。
    • 点击window”菜单下的“Preference”选项。
    • 弹出MyEclipse配置窗口。
    • 在左栏菜单中选择MyEclipse->Servers->Integrated Sandbox->MyEclipse Tomcat 6”选项。
    • MyEclipse Tomcat 6”配置界面中,选择“Disable”选项,关闭自带的Tomcat服务器。

    关闭MyEclipse自带的Tomcat服务器后,就可以配置外部独立的Tomcat服务器了,具体步骤如下:

    • 打开MyEclipse开发工具,进入开发主操作页面。
    • 点击window”菜单下的“Preference”选项。
    • 弹出MyEclipse配置窗口。
    • 在左栏菜单中选择MyEclipse”下的“Servers”的“Tomcat”,选择对应的版本(例如Tomcat 7.x)。在Tomcat配置主页面中,选择“Enable”开启当前的Tomcat,并选择对应Tomcat的安装目录。

     

    • 选择Tomcat菜单下的“JDK”选项,选择对应的JDK版本。
    • 选择Tomcat菜单下的“Launch”选项,选择启动Tomcat的方式(默认为debug)。

    4.2. 创建Web工程

    利用MyEclipse来创建Web工程,具体操作如下:

    • 打开MyEclipse开发工具,进入开发主操作页面。
    • 在菜单栏中选择File->New->Web Project”来创建新的Web工程。
    • 点击Finish”按钮,完成Web工程的创建。但会弹出一个警告窗口。

    选择Yes”表示使用JavaEE 5.0编译级别,选择“No”表示使用JavaEE 6.0编译级别。两者区别不大,选择“Yes”或“No”都可以。

    • 创建之后的Web工程目录如下:

     

    • Web工程目录中的web.xml文件说明:
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 
        web-app标签:Web工程的web.xml文件的根标签.
         * xmlns:xsi - W3C提供的Schema约束.
         * xmlns - 默认命名空间.
         * xmlns:web - 命名空间.
         * xsi:schemaLocation - 指定Schema文件.
     -->
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://java.sun.com/xml/ns/javaee" 
            xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
            version="2.5">
      <!-- 设置显示的名称 -->
      <display-name></display-name>
      <!-- Web工程默认主页列表 -->
      <welcome-file-list>
          <!-- 设置Web工程默认主页 -->
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    4.3 发布Web工程

    MyEclipse中的Web工程发布到Tomcat服务器下运行,具体操作步骤如下:

    • Package Explore”区域选择要发布的Web工程。
    • 选择Web工程名称后,鼠标右键弹出工程配置列表。
    • 在工程配置列表中,选择MyEclipse->Add and Remove Project Deployments”选项,弹出发布配置界面。
    • 在发布配置界面中,点击Add”按钮,为要发布的Web工程选择Tomcat服务器。
    • Server”一栏,选择对应版本的Tomcat服务器,点击“Finish”按钮,回到发布配置界面。
    • 点击OK”按钮,完成Web工程的发布。这时启动Tomcat服务器,即可访问Web工程。

    4.4. Web工程打包

    JavaSE程序可以打包成Jar包运行,而JavaWeb程序可以打包成War包,然后发布到Tomcat服务器的webapps目录下运行(Tomcat服务器会自动解压缩War包)。具体将JavaWeb程序打包成War包的步骤如下:

    • Package Explore”区域选择要打包的Web工程。
    • 选择Web工程名称后,鼠标右键弹出工程配置列表。
    • 在工程配置列表中,选择Export”选项,弹出导出界面。
    • 找到WAR file(MyEclipse)”选项,点击“Next”按钮。
    • 点击Finish”按钮,完成打包过程。
  • 相关阅读:
    applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.
    HTML
    c# Path路径类
    C# 继承
    C# 结构体
    c# 类
    c#方法
    wpf开源控件MahApps.Metro
    c#数组类型
    c#类型转换
  • 原文地址:https://www.cnblogs.com/aaron911/p/8034434.html
Copyright © 2020-2023  润新知