从零深入 tomcat
1、tomcat的安装使用
tomcat是实现了J2EE标准的最简单轻巧的WEB服务器,所以使用tomcat必须安装JDK咯!
① 安装JDK并设置环境变量;
②设置tomcat的环境变量;
这两小步随便一百度就OK,没有什么难度。
运行“命令提示符”输入startup 即可正常启动,如果出现闪退,就是环境变量设置的有问题。。需要重新设置环境变量!
2、tomcat目录结构

受本人水平限制,只是简单说明tomcat的目录结构
bin 此文件夹中是一些批处理命令(.bat文件,其中包括启动/关闭( startup.bat/shutdown.bat ))命令;还有一些动态链接库、jar包等。
config 此文件夹中是服务器的一些配置文件,其中最主要的是service.xml文件 服务器监听的端口号就在此配置 默认为8080
lib jar包
log 服务器的日志存在此文件夹内
temp 存放临时文件
wepapps 默认站点的文件就放在这里面
work 存放JSP生成的Servlet源文件和字节码文件
3、搭建自己的站点
① 在webApps文件夹下新建一个文件夹,命名为myWebApp (可随意命名);
② 在myWebAPP文件夹下新建一个文件(index.html)和文件夹(WEB-INF) 文件和文件夹的名字不能随意命名
③ 拷贝其他示例中的WEB-INF文件夹下的web.xml到自己的WEB-INF文件夹下
④ 修改web.xml文件内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
</web-app>
⑤ 在index.html文件中添加自定义内容,如:
<html>
<head>
<title>Myself Webstation</title>
</head>
<body>
<h1>利用tomcat搭建自己的站点</h1>
<body>
</html>
OK了,现在在浏览器中输入:http://localhost:8080/myWepApp/index.html 就可以看到自己创建的HTML页面了。局域网内部,就可以通过你的http://你的IP:8080/myWepApp/index.html 访问了
那么,如果想像examples 一样 输入:http://localhost:8080/myWepApp 就可以访问了,该怎么做呢?
修改web.xml文件,添加如下内容就OK了,(这是如果加上index.xml就不管用了。。)
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
4、细说server.xml
server.xml是tomcat服务器的配置文件,其中各个标签含义如下:
<Server port=”8005″ shutdown=”SHUTDOWN” debug=”0″>
在8005端口处监听服务器的关闭请求,如果收到“shutdown” 就关闭服务器。可以在命令行中输入:telnet localhost 8005然后输入shutdown tomcat即关闭;
<service>元素,<service>中包含一个<engine>元素和多个<Connector>元素,<service>可以理解为一个“容器”,但实际上并不是容器,只是<Connector>(连接器)的组合。
<Connector port=”8080″ maxThread=”50″ minSpareThreads=”25″ maxSpareThread=”75″ enableLookups=”false” redirectPort=”8443″ acceptCount=”100″ debug=”0″ connectionTimeout=”20000″ disableUploadTimeout=”true” />
<Connector> 连接器,代表一个请求或应答所需要的端点,只是传递请求,不处理请求。处理请求是通过<container>容器;
enableLookups属性:开启或关闭DNS查询 默认是开启,但比较影响性能;
acceptCount属性 :线程超过100时,后来的请求返回 connector refused;
maxThreads 属性 : tomcat可创建的最大线程数 可以根据机器的内存可性能调整 最大可以在800左右
minSpareThreads :初始化线程数目
maxSpareThreads :一旦线程数目超过此值,tomcat 就会关掉不再需要的socket线程
connectionTimeout:网络连接超时时间 设置为0 永不超时
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
一个<service>元素只能有一个我<engine>元素
defaultHost: 处理客户请求的默认主机名
每一个<Host>元素定义了一个虚拟主机,一个<engine>元素可以有一个或多个虚拟主机
appBase:虚拟主机的目录
autoDeploy:设置为true 当虚拟主机下有目录添加进来是,tomcat会自动部署
unpackWARs:设置为true 表示会将war文件先展开,然后运行;设置为false 表示可以直接运行.war文件
<host>元素下的<context>元素 一个<context>元素代表一个web应用
<!– Context,对应于一个Web App path : 该Context的路径名是”",故该Context是该Host的默认Context docBase : 该Context的根目录是webapps/mycontext/ reloadable:如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改运.如果监视到有class文件 被更新,服务器自重新加载Web应用 useNaming:指定是否支持JNDI,默认值为了true cookies指定是否通过Cookies来支持Session,默认值为true –>
<Context path=”" docBase=”mycontext” debug=”0″/>
下面总结一些server.xml的结构:
<server>
<service>
<engine>
<Host>
</Host>
</engine>
<Connector>
</Connector>
<Connector>
</Connector>
</service>
</server>
对应的示意图如下:

大概就是这个样子的!
5、tomcat处理一个请求的过程
加入客户的请求是:http://localhost:8080/wsota/wsota_index.jsp
① 请求被发送到主机的8080端口,被在8080端口侦听的connector获取;
② connector 将请求交给他所在service的engine处理 并等待engine的回应
③ engine首先匹配虚拟主机 找到localhost,匹配不到 则交给默认主机处理
④ 虚拟主机获得请求 wsota/wsota_index.jsp
⑤ 虚拟主机根据请求路径”/wsota“匹配他所拥有的context 匹配不到交由默认的context去处理
⑥ path=”/wsota”的Context获得请求/wsota_index.jsp
⑦ Context 根据请求在他的mapping table 中找对应的servlet,对应于JSPservlet类
⑧ 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法(暂时不太懂)
⑨ Context把执行完了之后的HttpServletResponse对象返回给Host
⑩ Host把HttpServletResponse对象返回给Engine
⑪ Engine把HttpServletResponse对象返回给Connector
⑫ Connector把HttpServletResponse对象返回给客户browser
6、web.xml详解
web.xml是针对每一个具体的web站点而进行的配置,如果没有配置 则默认使用config中的web.xml
web.xml文件中的标签比起service.xml中的标签容易理解好多 在此不详细描述,只介绍个别标签 百度”tomcat web.xml 配置详解“ 很容易得到想要的东西。
<servlet-mapping>
<servlet-name>calculate</servlet-name>
<url-pattern>/getvalue</url-pattern>
</servlet-mapping>
<servlet-mapping> 是定义在servlet 和URL之间的一种映射,context就是通过这种映射去根据URL请求去匹配servlet的。
在<servlet-mapping> 下包含两个标签 <servlet-name>和<url-pattern> 当接受到getvalue请求时,便用名字为calculate的servlet去处理。
<init-param>
<!-- 请求对应的commandid -->
<param-name>name1</param-name>
<param-value>value</param-value>
</init-param>
在web.xml中使用<init-param>标签的作用,就是为了在servlet中通过方法获取值,如:
this.getInitParameter("name1")
返回值即为: value
7、tomcat实现基础认证(base64)
首先修改tomcat—user.xml文件(在conf文件夹下,这个文件默认包含了三个用户 (tomcat、role1、both) 的定义);这时候创建了用户角色。
下面需要为用户角色分配权限(设置用户角色的属性)
为了配合测试,在webapp目录下新建一个目录 authority,里面放一个文件 important.html 下面修改WEB-INF下面的web.xml配置文件。
添加如下内容
<security-constraint> <!--此标签的作用是限制访问资源-->
<web-resource-collection>
<web-resource-name>
Restricted Area
</web-resource-name>
<url-pattern>/authority/*</url-pattern> <!--通过URL的方式 限制访问资源; 也可以通过<http-method> 限制访问方法的方式限制-->
</web-resource-collection>
<auth-constraint> <!--具有访问权限的用户-->
<role-name>tomcat</role-name>
</auth-constraint>
</security-constraint> <login-config>
<auth-method>BASIC</auth-method> <!--用于指定验证方法 有BASIC、DIGEST、FORM、CLIENT-CERT-->
<realm-name>Authenticate yourself</realm-name> <!--如果选用 BASIC 方法进行验证的时候,标准登录对话框中的一个描述名称。-->
</login-config>
好了,现在通过http://localhost:8080/webapp/authority/important.html 访问,就会出现对应需要输入用户名和密码的对话框了!
8、使用tomcat实现HTTPS安全访问
首先需要生成两个文件,.keystore 和 .cer文件,然后导入JVM,之后修改配置文件,就OK !这些操作都是通过key-too命令完成的。百度一下,就可以了,自己试过 不过过了几天,就不想再整理了。
9、使用tomcat 实现摘要验证
10、tomcat 配置serverlet程序
http://www.cnblogs.com/tengpan-cn/p/4908964.html
从零深入 tomcat的更多相关文章
- 新入手服务器不会玩?抢占式实例服务器教程,从零搭建tomcat超简流程
新入手服务器不会玩?抢占式实例服务器教程,从零搭建tomcat超简流程 相信很多新人入手Linux服务器后,一脸无奈,这黑框框究竟能干啥?忽觉巨亏血亏不是? 这里面门道可不是你想象中的那么点,简则服务 ...
- 攻城狮在路上(肆)How tomcat works(零) 前言说明
最近几篇是关于How tomcat works一书的读书笔记. 通过数个章节逐渐实现一个tomcat的功能. 源码下载地址:http://zhidao.baidu.com/share/7007af0f ...
- 从零搭建SSM框架(五)Maven实现Tomcat热部署
配置tomcat 第一步:需要修改tomcat的conf/tomcat-users.xml配置文件.添加用户名.密码.权限. <role rolename="manager-gui&q ...
- 《JSP+Servlet+Tomcat应用开发从零開始学》
当当网页面: http://product.dangdang.com/23619990.html 内容简单介绍 本书全面介绍了 JSP开发中涉及的相关技术要点和实战技巧. 全书结构清晰,难 ...
- 零基础学习java------33---------http协议,tomcat(其如何在eclipse上发布),注册案例
一. HTTP协议 https://www.cnblogs.com/vamei/archive/2013/05/11/3069788.html 二. tomcat---------->web服务 ...
- 从零搭建SSM框架(四)手动实现Tomcat部署
发布War包 Windows环境部署 增加如下配置 <Context path="/" docBase="cnki" debug="0" ...
- Tomcat 日志清除(含扩展AccessLogValve)
1.tomcat的访问日志AccessLogs定期或者定量删除 a 开启tomcat访问日志 编辑${catalina}/conf/server.xml文件.注:${catalina}是tomcat的 ...
- Tomcat服务器配置以及相关配置文件介绍
摘自:http://blog.163.com/ny_lonely/blog/static/18892427320136925044357/ context.xml 文件 配置属性说明 用于 ...
- 阿里云服务器Linux CentOS安装配置(零)目录
阿里云服务器Linux CentOS安装配置(零)目录 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 阿里云服务器Linux CentOS安装配置(二)yum安装svn 阿里云服 ...
随机推荐
- Activity之间的隐士跳转
/** * 方法一:在构造函数中指定 */ /*Intent intent=new Intent(this,TwoActivity ...
- 把excel数据导入mysql中
适用:每列的数据都不是以逗号分隔. 1.在mysql建表,全部字段与表头相同且顺序一致 2.将excel另存为csv格式,用Editplus把CSV文件另存为UTF-8编码格式 3.执行load da ...
- Linux使用期间命令积累
1.调出终端 Ctrl+Alt+t 2.sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等. sudo apt-g ...
- mongodb 数据库导入.cvs文件时某些字段类型变成NumberLong的解决办法
在mongodb中导入数据时,会在数据库中生成字段记录为NumberLong的数据,可以使用以下方式将其转换为String db.Account.find().forEach( function(it ...
- 第三十七节,hashlib加密模块
在使用hashlib模块时需要先 import hashlib 引入模块 用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA ...
- 第十六节,基本数据类型,字典dict
字典 常用操作: 索引 新增 删除 键.值.键值对 循环 长度 字典由键值对组成,由一个键(名称)和 一个值组成,与列表和元组不同的是里面的元素是有键的(名称) 所以当要打印字典时,打印字典变量加[键 ...
- Why isn't sizeof for a struct equal to the sum of sizeof of each member?
check here. Basically the compiler will insert unused memory into a structure so that data members a ...
- Golang:测试map是否存在
请看这个url:http://www.du52.com/text.php?id=561 if v, ok := m1["a"]; ok { fmt.Println(v) } els ...
- 使用TcpTrace小工具截获Web Service的SOAP报文
Web Service客户端对服务端进行调用时,请求和响应都使用SOAP报文进行通讯.在开发和测试时,常常查看SOAP报文的内容,以便进行分析和调试.TcpTrace是一款比较小巧的工具,可以让我们截 ...
- PHP字符串函数试题
Ctrl+A查看答案 1.把ASCII字符的字符串转换为十六进制值的函数是什么?答:bin2hex($string),例如bin2hex('ab') = 6162 2.ASCII码转字符,字符转ASC ...