zoukankan      html  css  js  c++  java
  • Tomcat常用操作

    • Tomcat简介

    TOMCAT是APACHE JAKARTA软件组织的一个子项目,TOMCAT是一个JSP/SERVLET容器,它是在SUN公司的JSWDK(JAVA SERVER WEB DEVELOPMENT KIT)基础上发展起来的一个JSP和SERVLET规范的标准实现,使用TOMCAT可以体验JSP和SERVLET的最新规范。经过多年的发展,TOMCAT不仅是JSP和SERVLET规范的标准实现,而且具备了很多商业JAVA SERVLET容器的特性,并被一些企业用于商业用途。 

    Tomcat在严格意义上并不是一个真正的应用服务器,它只是一个可以支持运行Serlvet/JSP的Web容器,不过Tomcat也扩展了一些应用服务器的功能,如JNDI,数据库连接池,用户事务处理等等。Tomcat 是一种具有JSP环境的Servlet容器。Servlet容器是代替用户管理和调用 Servlet的运行时外壳。

    • 在这里有一个概念,就是说什么是servlet容器?

    容器负责处理客户请求。当客户请求来到时,SERVLET容器获取请求,然后调用某个SERVLET,并把Servlet的执行结果返回给客户。当客户请求某个资源时,Servlet容器使用ServletRequest对象把客户的请求信息封装起来,然后调用Java Servlet API中定义的Servlet的一些生命周期方法,完成Servlet的执行,接着把Servlet执行的要返回给客户的结果封装到ServletResponse对象中,最后Servlet容器把客户的请求发送给客户,完成为客户的一次服务过程。


    关于Tomcat的原理我会单独在写一篇博客,在这里不做多的重复。在这里我们应该知道的就是说,Tomcat提供了web容器的基本功能,还支持JAAS和JNDI绑定,但是他没有应用服务器(比如WebLogic)那么强大,比如他不提供EJB等支持。


    • Tomcat目录结构
    Tomcat是纯java实现的,所以他可以跨平台使用。解压刚下载到的压缩包,有如下的文件结构:



    • server.xml

    TOMCAT是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的给件是CATALINA SERVLET容器,其他的组件按照一定的格式要求配置在这个顶层容器中。TOMCAT的各个组件是<TOMCAT_HOME>confserver.xml文件中配置的,TOMCAT服务器默认情况下对各种组件都有默认的实现,下面通过分析server.xml文件来理解TOMCAT的各个组件是如何组织的。

    <Server>      顶层元素,代表一个服务器
    	<Service>  顶层元素,是Connector的集合,只有一个Engine
    		<Connectior/>        连接器类元素,代表通信接口
    			<Engine>   容器类元素,为特定的Service组件处理所有客户请求,可包含多个Host
    				<Host>    为特定的虚拟主机处理所有客户请求
    					<Context>     为特定的WEB应用处理所有客户请求
    					</Context>
    				</Host>
     			</Engine>
    <span style="white-space:pre">	</span></Service>
    </Server>

    TOMCAT中真正处理客户请求与生成响应的三个组件是Engine 、Host、 Context


    • Tomcat包含三个主要的部分

      * Catalina :一个符合ServletAPI规范2.3的Servlet Container

    * Jasper:一个符合JSP规范1.2的JSP编译器和运行环境
    * Webapps:Tomcat中包含的一些例子和用于测试的web例程,以及相关文档。


    • 按照Tomcat的规范,Tomcat的Web应用程序应该由如下目录组成

    1,页面内容等文件的存放位置:*.html, *.jsp等可以有许多目录层次,由用户的网站结构而定,实现的功能应该是网站的界面,也就是用户主要的可见部分。除了HTML文件、JSP文件外,还有js(JavaScript)文件和css(样式表)文件以及其他多媒体文件等。 

    2,Web-INF/web.xml这是一个Web应用程序的描述文件。这个文件是一个XML文件,描述了Servlet和这个Web应用程序的其他组件信息,此外还包括一些初始化信息和安全约束等等。 

    3,Web-INF/classes/这个目录及其下的子目录应该包括这个Web应用程序的所有JavaBean及Servlet等编译好的Java类文件(*.class)文件,以及没有被压缩打入JAR包的其他class文件和相关资源。注意,在这个目录下的Java类应该按照其所属的包层次组织目录(即如果该*.class文件具有包的定义,则该*.class文件应该放在.WEB-INFclasses包名下)。 

     4,通常Web-INF/classes/这个目录下的类文件也可以打包成JAR文件,并可以放到WEB-INF下的lib目录下。如将 classes目录下的各个*.class文件打包成WebMis.jar文件(jar cvf WebMis.jar *.*)

     值得注意的是:

    (1)WEB-INF目录中包含应用软件所使用的资源,但是WEB-INF却不在公共文档根目录之中。在这个目录中所包含的文件都不能被客户机所访问。

    (2)类目录中(在WEB-INF下)包含运行Web应用程序时所需的Servlets,Beans等类。

    (3)lib目录(在WEB-INF下)包含有Java archive files (JARs),例如标签库或者Servlets,Beans等类的*.jar文件。

    (4)如果一个类出现在JAR文件中同时也出现在类的目录中,类加载器会加载位于类目录中的那一个。

    common/lib/ 这个目录下包含了所有压缩到JAR文件中的类文件和相关文件。比如:第三方提供的Java库文件、JDBC驱动程序等。其中msbase.jar、mssqlserver.jar、msutil.jar文件为SqlServer2000的JDBC驱动程序。其中servlet-api.jar和jsp-api.jar为Servlet和JSP的API所在的包


    • 运行Tomcat
    运行Tomcat只需要一个环境变量,就是JAVA_HOME。不管是window还是Linux,只需要增加该环境变量就可以了,在实际的开发过程中我一般都是使用myEclipse来直接启动和停止Tomcat服务器,在设置Path的时候我直接将JDK下面的BIN目录配置在了Path中,没有设置JAVA_HOME,所以直接运行Tomcat的BIN目录下的startup.bat指令并不能启动Tomcat,所以以后要记住了,在直接运行Tomcat中必须要配置过JAVA_HOME,也只需要配置一个JAVA_HOME而已。


    在配置过JAVA_HOME以后,将Tomcat解压后随便丢一个地方,进入bin目录下的点击startup.bat就是启动Tomcat,shutdown.bat就是停止Tomcat。启动Tomcat后,在页面上输入Http://localhost:8080测试有没有启动成功。成功启动Tomcat可以访问,页面如下:

      



    • 配置Tomcat服务器


    1,配置Tomcat的服务端口
    Tomcat默认的端口号是8080,当然我们也可以自己修改,而且还可以同时开启好几个端口来服务。
    打开Tomcat的conf目录,找到server.xml配置文件,在69行可以看到如下代码:
    <Connector port="8080"   protocol="HTTP/1.1"      connectionTimeout="20000"    redirectPort="8443" />
    我们可以直接修改port这个端口号来改变端口。
    另外,如果需要tomcat运行多个服务,只需要复制server.xml文件中的<Service>元素,并修改相应的参数便可以实现一个Tomcat运行多个服务,当然必须在不同的端口提供服务。


    2,开始tomcat的列功能
    在web应用的开发阶段,通常希望tomcat可以列出web应用根路径下的所有页面,这样子可以更加方便的选择需要调试的JSP页面,默认情况下,可能是出于安全的考虑,Tomcat并不会列出web应用根路径下的所有页面,为了让tomcat列出根路径下的所有的页面,可以打开Tomcat的conf目录下的web.xml文件,在104行这里将listings这个参数由默认的false变成true即可。
    <servlet>
            <servlet-name>default</servlet-name>
            <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <init-param>
                <param-name>listings</param-name>
                <param-value>true</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>

    3,修改tomcat默认编码格式
    默认情况下,tomcat使用的是iso8859-1的编码编码方式。同样也是下面这行代码,
    <Connector port="8080"   protocol="HTTP/1.1"      connectionTimeout="20000"    redirectPort="8443" />
    这段代码规定了Tomcat监听HTTP请求的端口号等信息。可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求。注意这里只是get请求,对于post不生效的。更改后的代码如下:
    <Connector port="8080"   protocol="HTTP/1.1"      connectionTimeout="20000"    redirectPort="8443" URIEncoding="UTF-8" />

    4,进入控制台
    前面已经介绍过了,tomcat的webapps路径是web应用的存放位置,在这个目录下有一个叫做manager的项目,进入这个项目下找到WEB-INF,下面有一个web.xml文件,该路径存放了Manager应用的配置文件。查看里面的内容我们可以知道,登录manager控制台可能需要不同的manager角色,对于普通的开发者来说,通常需要匹配/text/*,/status/*的资源,因此为该用户分配一个manager-gui角色即可。
    Tomcat的用户由conf路径下面的tomcat-users.xml文件控制,打开文件添加如下代码就可以配置一个用户。
     
    <!-- 建立一个角色-->
     <role rolename="manager-gui"/>
     <!-- 建立一个用户-->
     <user username="LinkinPark" password="NightWish" roles="manager-gui"/>

     点击tomcat首页面左上方的manager控制台,输入账号和密码就可以进入了,页面如下。查看页面可以监控到所有部署到该服务器下的web应用,左边列出了所有部署在该web容器中内的Web应用,右边的4个按钮则用于控制,包括启动,停止,重启等。




    5,部署web应用。一共有3种方法:

    第一种方法:将web项目文件件拷贝到webapps目录中。这也是最常用的部署方式,实际开发中我们使用IDE工具自动部署的时候其实就是将我们自己的项目放到了tomcat的webapps目录下的。
    Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。也可以将JSP程序打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个Web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse、NetBeans、ant、JBuilder等。也可以用 cmd 命令:jar -cvf applicationname.war package.*。webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,130行找到下面内容:
    <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeloy="true" xmlValidation="falase" xmlNamespaceAware="false">

    第二种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:
    <Context path="/hello" reloadable="true" docBase="E:	est1" debug="0" privileged="true"></Context>
    其中path是其相对web URL的路径,是一个虚拟的路径虚拟,比如说:http://localhsot:8080/hello;
    docBase是JSP应用程序的物理路径;workDir是这个应用的工作目录,存放运行是生成的于这个应用相关的文件;debug纪录调试信息的调试级别;reloadable是可重载的标志,开发Servlet时,重载更改后的Servlet。这是一个非常便利的特性,你可以调试或用Tomcat测试新代码而不用停止或重新启动Tomcat。要打开重载,把reloadable设为true即可。


    第三种方法:很灵活,在conf目录中,新建 Catalina(注意大小写)\localhost目录,在该目录中新建一个xml文件,名字可以随意取,只要和当前文件中的文件名不重复就行了,该xml文件的内容为:
    <Context path="/linkin" reloadable="true" docBase="E:	est1" debug="0" privileged="true"></Context>
    这种方法有个优点,可以定义别名。服务器端运行的项目名称为path,外部访问的URL则使用XML的文件名。这个方法很方便的隐藏了项目的名称,对一些项目名称被固定不能更换,但外部访问时又想换个路径,非常有效。比如上面这行代码部署项目以后,该应用的URL地址为:http://<server_address>:<port>/linkin


    注意:删除一个Web应用同时也要删除webapps下相应的文件夹祸server.xml中相应的Context,还要将Tomcat的conf
    catalinalocalhost目录下相应的xml文件删除。否则Tomcat仍会按配置去加载。。。


    6,myeclipse中配置tomcat


         
      
  • 相关阅读:
    formValidator4.1.1问题汇总
    什么,又是字符串拼接,我有些不淡定了
    webform下的分页辅助类再总结
    winform下的一个分页控件总结
    总结SQL Server窗口函数的简单使用
    sql复制表定义及复制数据行
    动态SQL开发基础和经验再总结
    c#执行定时计算限制操作(计时器)
    ado.net关于操作数据库的连接字符串整理
    使用Visual Studio实现WinForm多语言版本实例
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233089.html
Copyright © 2011-2022 走看看