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>\conf\server.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-INF\classes\包名下)。
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:\test1" 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:\test1" debug="0" privileged="true"></Context>
这种方法有个优点,可以定义别名。服务器端运行的项目名称为path,外部访问的URL则使用XML的文件名。这个方法很方便的隐藏了项目的名称,对一些项目名称被固定不能更换,但外部访问时又想换个路径,非常有效。比如上面这行代码部署项目以后,该应用的URL地址为:http://<server_address>:<port>/linkin
注意:删除一个Web应用同时也要删除webapps下相应的文件夹祸server.xml中相应的Context,还要将Tomcat的conf
\catalina\localhost目录下相应的xml文件删除。否则Tomcat仍会按配置去加载。。。
6,myeclipse中配置tomcat
Tomcat常用操作的更多相关文章
- Eclipse下Tomcat常用设置
Eclipse下Tomcat常用设置 1,Eclipse建立Tomcat服务 1.1 新建Server 首先这里是指,jee版的Eclipse.Eclipse是没有像MyEclipse那样集成Tomc ...
- vim常用操作技巧与配置
vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中 ...
- 关于vim的常用操作
vim常用操作和使用技巧 vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技 ...
- vim常用操作和使用技巧
vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中 ...
- KVM虚拟化管理 virt manager常用操作
部分涉及到Linux.Nginx.tomcat.MySQL等的点滴操作记录,时间长了,就忘掉了,偶尔整理一下操作的history,就此简要备份一下: [原][BG]-一次虚拟化环境实践简要记录: ht ...
- SFTP上传下载文件、文件夹常用操作
SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文 ...
- servlet常用操作
servlet常用操作 CreateTime--2017年9月7日09:36:43 Author:Marydon 1.获取当前应用程序对象 需要导入: import javax.servlet.S ...
- tomcat常用配置详解和优化方法
tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...
- maven学习6 Eclipse下Tomcat常用设置
Eclipse下Tomcat常用设置 1,Eclipse建立Tomcat服务 1.1 新建Server 首先这里是指,jee版的Eclipse.Eclipse是没有像MyEclipse那样集成Tomc ...
随机推荐
- uC/OS-II 内存管理
UC/OS-II 内存管理 1. 简介 uC/OS-II 不使用ANSI编译器的malloc(), free(),因为内存碎片,很可能获取不到一块连续的内存, 这在嵌入式系统中是很危险的.同时 ...
- PE解析器的编写(三)——区块表的解析
PE文件中所有节的属性都被定义在节表中,节表由一系列的IMAGE_SECTION_HEADER结构排列而成,每个结构用来描述一个节,结构的排列顺序和它们描述的节在文件中的排列顺序是一致的. 具有相同属 ...
- MySQL数据类型转换函数CAST与CONVERT的用法
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: 1.CAST(value as type) 就是CAST(xxx AS 类型) 2 ...
- Vue + iView + vuex + vee-validate 完整项目总结
build/*.js config/*.js src/旧代码文件夹 部门最近的一个新项目启动,很幸运由我来主导整个前端部分的技术选型和整体架构,项目工作量很大,但是却没有足够的人手,只有三个连CSS都 ...
- 解析库-beautifulsoup模块
# -*- coding: utf-8 -*- from bs4 import BeautifulSoup # 安装:pip install beautifulsoup4 # Beautiful So ...
- sql万能密码
输入1'or'2这样就会引起sql注入,因为username=password admin adn admin,所以我们能够进去 必须要做好过滤措施
- gulp不完全入门教程
引言 gulp 是基于 Nodejs 的自动任务运行器,能自动化地完成javascript/coffee/sass/less/html/image/css等文件的的测试.检查.合并.压缩.格式化.浏览 ...
- 洛谷 2634&&BZOJ 2152: 聪聪可可【点分治学习+超详细注释】
2152: 聪聪可可 Time Limit: 3 Sec Memory Limit: 259 MBSubmit: 3435 Solved: 1776[Submit][Status][Discuss ...
- [bzoj1731] [Usaco2005 dec]Layout 排队布局
差分约束系统...因为题目要求的是1和n的最大距离所以这题就跑最长路.. 对于互相反感的牛(i与j互相反感,彼此距离至少为len,i<j),就有dis[j]-dis[i]>=len.就加一 ...
- 学习Spring必学的Java基础知识(1)----反射
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...