-------------------------------------------------------URL---------------------------------------------------------
URL Uniform Resource Locator 统一资源定位符
http://www.taobao.com: 80/admin/index.html
http 浏览器使用的协议
www.taobao.com 表示 web 服务器的主机名或者是 ip 地址
80 表示 web 服务器所监听的网络端口号,如果使用 80 端口,则可以省略书写
admin/index.html 要访问的网页文档在 web 服务器上的路径信息
------------------------------------------------------- 批处理 -----------------------------------------------------
可以用记事本编写一个批处理文件 后缀名为 .bat
例如 test.bat 文件
echo off
dir
ping localhost
echo off------------ 禁止后面批处理命令显示在屏幕上,不包括自身命令, echo off 还会显示在屏幕上
dir------------------- 列出当前路径下的文件及文件夹目录列表
ping localhost----- 访问本机
在每句代码前加一个 @ 符号 也可以禁止批处理命令显示在屏幕上,与 echo off 效果相同,只是每句都要加很麻烦
可以在 echo off 代码前加上 @ ,让 echo off 这句代码也不显示在屏幕上
Set os------------ 系统返回操作系统名称 Windows 2000 显示其操作系统为 Windows_NT
Setlocal---------- 开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后,所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 ENDLOCAL 。达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行
set java_home=C:/Program Files/Java/jdk1.5.0_04 设置 java_home 的路径
if exist “%CATALINA_HOME%/bin/setenv.bat” call “%CATALINA_HOME%/bin/setenv.bat”
如果在 %CATALINA_HOME%/bin 路径下存在 setenv.bat 批处理文件,那么就执行 setenv.bat 批处理文件, exist :存在 call :执行
Start ping localhost ----------start 表示开启一个新的 cmd 窗口 执行 start 后边的命令 命令完成以后,新建的 cmd 窗口就会自动消失
Start ping –t localhost 表示开启新的 cmd 窗口后,一直 ping 下去,可以使用 ctrl+c 来中断
Start “ 名字 ”------------- 表示可以在 start 后边定义一个字符串,作为新 cmd 窗口的名字
Cls ---------------- 清楚屏幕,起始行为第一行
在批处理中设置文件夹的路径
在 windows 的环境变量中设置了 C:/oracle/ora92/bin;
set ORACLE_HOME=%ORACLE_HOME% 用每一层目录路径来指引下一层目录路径
set ROOT=%ORACLE_HOME%/Apache
set APACHE_HOME=%ROOT%/Apache
set JSERV_HOME=%ROOT%/Jserv
set LOG=%JSERV_HOME%/logs
-------------------------------------------------------Tomcat------------------------------------------------------
Tomcat 是 sun 公司用于运行 JSP 和 Servlet 的引擎 ,
( Jakarta Tomcat 服务器是在 SUN 公司的 JSWDK ( javaServer Web DevelopmentKit, 是 SUN 公司推出的小型 Servlet/JSP 调试工具)的基础上发展起来的一个优秀的 Servlet/JSP 容器,它是 Apache-Jakarta 软件组织的一个子项目。它不但支持运行 Servlet 和 JSP ,而且还具备了作为商业 java Web 应用容器的特征。)
网址是: http://jakarta.apache.org/
Jakarta 项目是在 Apache 軟件基金會 营运的公开 源代码 软件开发项目之一。开发着面向 编程语言 Java 的 程序库 , 框架 等。
Jakarta 是 Apache 组织下的一套 Java 解决方案的开源软件的名称 , 它的名称是想把与 Jakarta 关系非常深的 爪哇岛 关联起来。编程语言 Java 的命名源自这个岛的名字( 印尼語 Jawa 、 英語 Java ),而城市 雅加达 ( Jakarta )正是这个岛上的第一大城市,也是 印度尼西亚 的首府。
Jakarta 项目所包括的相关工具、库以及框架:
BCEL - 处理 Java 字节码的类库
BSF - 脚本程序框架
Cactus - 服务器端 Java 类测试工具框架
ECS - The Element Construction Set is a Java API for generating elements for various markup anguages.
HttpComponents- 超文本传输协议 .
JCS - 分布式缓存系统 .
JMeter - 压力测试工具
ORO - Java classes that provide Perl5 compatible regular expressions.
Regexp - 纯 Java 正则表达式包
Slide - a content repository primarily using WebDAV.
Taglibs - Repository for JSP custom tag libraries.
以前隶属于 Jakarta 项目,但现在作为 Aapche 软件基金的单独项目:
Ant - 构建工具
Commons - 一组使用类的合集,主要作为 Java 标准库的补充
HiveMind - a services and configuration microkernel
Maven - 一个项目构建和管理工具
POI - a pure Java port of Microsoft's popular file formats.
Struts - a web application development framework
Tapestry - A component object model based on JavaBeans properties and strong specifications
Tomcat - 服务器,提供 JSP/Servlet 相关容器类
Turbine - web 应用快速开发框架
Velocity - 模板引擎
tar.gz 文件是 Linux 操作系统下的安装版本
exe 文件是 Windows 系统下的安装版本
zip 文件是 Windows 系统下的压缩版本
Tomcat5 对应的必须使用 JDK1.5
非安装压缩版的 Tomcat 可以使用 Tomcat/bin 目录下的批处理文件来启动与关闭
startup.bat 启动
shutdown.bat 关闭
使用批处理文件启动或关闭 tomcat 需要在批处理文件中配置 java_home 的路径
右击 startup.bat 选择编辑
在第一行 @echo off 换行后
输入 set java_home=C:/Program Files/Java/jdk1.5.0_04 本机的 JDK 主目录的路径
虚拟 web 目录的概念
http://www.helloworld.com/book/test.html
www.helloworld-------- 表示 web 服务器的名称和地址
后边的 /------------------- 表示 web 服务器上的站点根目录,对应到服务器的本地文件系统目录
Book/---------------------- 表示站点根目录下边的名称为 book 的站点子目录
一个文件系统目录可以被映射成为多个虚拟 web 目录
虚拟 web 子目录名称可以是多级目录结构的形式
Tomcat 按照最长路径匹配原则处理请求的 URL
将服务器上的本地系统目录映射成为一个虚拟 web 目录的过程,就叫做 web 发布,外界可以通过使用 http 协议的浏览器来访问此资源
使用 tomcat/conf/server.xml 文件 来配置虚拟的 web 目录
1. 在 server.xml 中直接配置路径
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path= "/exam"
docBase="E:/J2EE/MyEclipseWorkSpace/Examination/WebRoot">
</Context>
</Host>
<Host> 元素的 appbase 属性 表示存放 tomcat 发布的项目的文件夹
<Context> 元素的 path 属性 表示 tomcat 项目的名称,也就是虚拟子目录的名称
docBase 属性 表示服务器的本地文件系统目录中的对应项目文件路径
<Host> 元素代表一个站点,而 <Context> 元素代表了一个虚拟子目录
Host 和 Context 的首字母必须大写,否则 tomcat 不认
2. 在 server.xml 文件中 配置 war 包的路径
也可以将 <Context> 元素的 docBase 属性的值打成一个 war 包,然后将 docBase 的属性设置为 war 包的路径
将一个文件夹下的所有文件 封装在 war 包内的命令:
jar –cvf 包的名字 .war . 包的名字后有点,末尾 war 后也空格加点 表示当前目录下的所有文件都打包进入 war 文件中
也可以将当前目录下的某个指定文件打包成 war 文件 例如:
jar –cvf test.war test 将 test 文件打包成 test.war ,但是如果指定文件夹来打包,打包生成的 war 文件中也会包含这个文件夹本身,如果不想包含它,可以这样写:
jar –cvf test.war –C test . 这里 -C 的意思是将 test 文件夹设置为当前的打包目录 –C 要大写
<Context path= "/exam"
docBase="E:/J2EE/MyEclipseWorkSpace/Examination/WebRoot/exam.war">
</Context>
3. 将项目文件夹放入 tomcat/webapps 中,且项目文件夹内包含有 WEB-INF 文件夹,则默认为 Tomcat 的虚拟 web 目录, WEB-INF 中必须有一个 web.xml 文件
4. 将 war 文件放入 tomcat/webapps 中 ,war 文件默认被读取为虚拟 web 目录
Tomcat 的 web.xml 配置文件
部署描述符文件 --------------Web 应用程序 /WEB-INF/web.xml
默认部署描述符 -------------- Tomcat/conf/web.xml
配置目录的默认网页 ------ 在 tomcat/conf/web.xml 文 件中
<web-app> 是 web.xml 的一级标记
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
在 Web 应用程序的 web.xml 文件中中设置目录默认网页后, tomcat 总体的默认部署描述符 Tomcat/conf/web.xml 中的目录默认网页的功能将会失效
Web 应用程序 /WEB-INF/web.xml 对 Tomcat/conf/web.xml 不是增加,而是覆盖
Tomcat 的虚拟主机及实现原理
在一台计算机上创建多个 web 站点,为每个 web 站点设置不同的主目录和虚拟子目录,每个 web 站点都可以作为一个独立的网站供用户使用
Web 虚拟目录
Http://www.12345.com/test/test.html
请求信息:
GET /test/test.html HTTP/1.1
Host:www.12345.com
GET 表示请求方式, /test/test.html 表示 web 虚拟目录文件的路径, HTTP/1.1 表示使用 1.1 版本的 http 协议
Host:www.12345.com 表示主机名
在 tomcat/conf/server.xml 文件 使用 <Host> 元素为每个网站配置不同的虚拟主机
<Host name="www.123.com" appBase="C:/test23"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
<Host name="www.456.com" appBase="C:/test456"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
可以设置 system32/drivers/etc/hosts 文件,来关联 IP 地址与主机名
127.0.0.1 Localhost
127.0.0.1 www.123.com
127.0.0.1 www.456.com
开启 tomcat 服务 访问网站时,就可以使用主机名代替 IP 地址了
虚拟主机的端口号
Web 服务器上的每一个监听端口号,都要使用一个 <Connector> 元素来配置
Tomcat/conf/server.xml 的元素上下级
<Service name=” …… ”>
<Connector port=” …… ” …… />
<Engine name=” …… ”>
<Host name=” …… ”>
<Context …… > </Context>
</Host>
</Engine>
</Service>
<Service name="Second-Service">
<Connector port="8007" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="www.123.com" appBase="C:/test123"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/test" docBase="C:/test123"></Context>
</Host>
</Engine>
</Service>
用 telnet localhost 8008 访问
GET /test/test.html HTTP/1.1
Host:www.123.com
基于 IP 地址的虚拟主机
HTTP 1.0 不支持 host 头字段,在保证所有站点统一使用端口号 80 的情况下,早期只能采用不同的 IP 地址来建立虚拟主机,但缺陷是需要为每个站点分配一个独立的 ip 地址,网络中的 ip 地址资源稀缺
HTTP 1.1 可以使用不同的主机名来建立多个 web 站点
TOMCAT 与专用 WEB 服务器的集成
集成的考虑因素:
1. 集群,集群系统的概念,负载均衡的概念
2. 集群 / 安全
3. 安全
4. 附加功能
5. 特殊功能
6. 速度
7. socket 处理 / 系统稳定性
集成技术的选择
Mod_webapp 已经过时
Mod_jserv 不再被支持和使用
JK 是目前的首先技术,与 tomcat 使用 AJP 技术进行通信
JK2 目前也不被支持
Mod_proxy 比 JK 的配置更加简单,但不能实现有会话状态的负载均衡
Mod_proxy_ajp 在 mod_proxy 上改写的一个连接器,随着 apache 2.2 版本的服务器程序一起发布的,支持负载均衡,但只能在 apache 服务器上使用
不同的 web 服务器下的插件形式是不同的, tomcat 开发小组为不同的 web 服务器提供了相应的 JK 插件
如果在为 JK 插件预先配置好的 URL 映射信息中,所有“ /*.jsp ”形式的 URL 都由 tomcat 服务器来处理,那么,当用户请求访问“ /index.jsp ”时, web 服务器将调用 JK 插件来处理, JK 插件把这个请求转发给 tomcat 服务器来处理, tomcat 服务器最后将响应结果经 JK 插件传给 web 服务器
不同版本的 tomcat 与其他 web 服务器的各个版本集成时的 JK 插件也可能不同
Tomcat 体系结构
Server 服务器上可以有很多 Service 服务,在每个 Service 下可以有多个 Connector 连接器, Service 下的每个 Connector 都共用了一个 Engine 引擎
Tomcat 与 JK 插件使用的是 AJP 协议
JK 插件的连接器配置 isapi_redirect-1.2.28.dll — IIS mod_jk.so — Apache
在 tomcat 的 server.xml 文件中,要使用 <Connector> 元素配置与 JK 插件进行通信的连接器
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
port 端口号 8009 enanlelookups 是否检查 redirectport 重定向端口 8443 协议 AJP/1.3
1. 在 Web 服务器( IIS 或 Apache )中正确安装 JK 插件。
2.JK 插件需要知道把请求转发给哪个 Tomcat 服务器上的哪个连接器,也就是需要知道该连接器的通讯协议和地址。
3.JK 插件需要知道它负责处理的 url, 以便通知 Web 服务器把这些 URL 转交给它处理;另外,一个 JK 插件可以向多个 Tomcat 服务器转发请求,它需要知道哪些 URL 应转发给哪个 Tomcat 服务器。
4.JK 本身的一些配置信息,例如,记录日志的文件路径,记录日志的级别等信息,如果上面的 2 、 3 两个问题都在各自的一个属性文件中进行配置,那么,还需要告诉这两个属性文件的位置路径。
专业 web 服务器接收到浏览器的访问请求后,将符合某种条件的请求交给 JK 插件, JK 插件在根据配置文件的设置信息,将请求交给相应的 tomcat 服务器处理
JK 插件包含几个配置文件
workers.properties 设置与 JK 插件进行通信的 Tomcat 上的连接器的通信协议和地址
uriworkermap.properties 用于设置 JK 插件负责处理的 URL 和具体处理各个 URL 的 Tomcat 服务器的名称,使用的服务器的名称就是在 workers.properties 中配置的
服务器的名称就代表了服务器的主机名,端口和监听的协议类型
isapi_redirect-1.2.28.properties 设置 JK 插件本身的一些配置信息以及说明 workers.properties 文件 和 uriworkermap.properties 文件的存储路径
isapi_redirect-1.2.28.log JK 插件的日志文件
属性文件和日志文件的名称必须与 JK 插件 dll 文件的名称一致
除了属性文件,也可以使用注册表文件
Workers.properties 示例
Worker.list=worker1,worker2 定义两个名称,可以想象成对象,用来指定 JK 插件所要链接的每个 tomcat 程序的名字
Worker.worker1.type=ajp13 监听的协议类型
Worker.worker1.host=localhost 主机名或 IP 地址
Worker.worker1.port=8009 端口号
Worker.worker2.type=ajp13
Worker.worker2.host=192.168.0.3
Worker.worker2.port=8009
也可以将某个服务程序名字的 type 属性设置为 lb ,含义是 Load balance 的缩写,负载均衡
例如:
Worker.list=wlb---------- 定义一个 tomcat 服务程序的名称,用来实现一个负载均衡系统,但不包括实现负载均衡的 tomcat 服务程序的名称
Worker.ajp13w.type=ajp13-------- 设置 ajp13w 这个 tomcat 服务程序的监听协议类型,主机名,端口号
Worker.ajp13w.host=localhost
Worker.ajp13w.port=8009
Worker.wlb.type=lb
--------- 表示为一个负载均衡系统的 tomcat 服务程序,是一个虚拟的 tomcat 服务器,他没有 host 和 port 属性,而需要设置下边的 balance_workers 属性
Worker.wlb.balance_workers=ajp13w
--------------balance_workers 属性列出了组成负载均衡系统的所有 tomcat 服务程序的名称,去管理组成了负载均衡系统的 tomcat 服务程序,如果一个 tomcat 服务程序加入到了一个负载均衡系统当中,那么 tomcat 服务程序的名称就不能出现在 Worker.list=wlb 这句代码的定义当中, Worker.list 只能包含非组成负载均衡系统的 tomcat 服务程序的名称,
uriworkermap.properties 示例
/*.jsp=worker1
/admin/*=worker1
/manager/*=worker1
/jsp-examples/*=worker1
/servlets-examples/*=worker1
左边的内容是需要转发给 tomcat 服务器去处理的 URL ,可以使用 * 号通配符来匹配一组 URL
右边的内容是处理这一组 URL 的 Tomcat 的服务程序的名字
isapi_redirect-1.2.28.properties 示例
#JK 插件在 IIS 服务器中虚拟路径,应于 IIS 中创建的虚拟目录名称保持一致
Extension_uri=/JK/isapi_redirect-1.2.28.dll
#JK 插件生成的日志文件的完整路径
log_file=E:/JK/log/isapi_redirect-1.2.28.log
# 日志级别,其有效值为 debug,info,error 或 trace
log_level=debug
#workers.properties 文件的完整路径
worker_file=E:/JK/conf/workers.properties
#uriworkermap.properties 文件的完整路径
worker_mount_file=E:/JK/conf/uriworkermap.properties
isapi_redirect-1.2.28.reg 示例
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/ApacheSoftware Foundation/Jakarta Isapi Redirector/1.0]
"extension_uri"="JK/isapi_redirect-1.2.28.dll"
"log_file"="E://JK//log//isapi_redirect-1.2.28.log"
"log_level"="info"
"worker_file"="E://JK//conf//workers.properties"
"worker_mount_file"="E://JK//conf//uriworkermap.properties"
Tomcat 与 IIS 服务器集成
IIS 是 Internet Information Server 的缩写,它是微软公司主推的服务器, IIS 与 WindowNT Server 完全集成在一起,因而用户能够利用 Windows NT Server 和 NTFS ( NT File System , NT 的文件系统)内置的安全特性,建立强大,灵活而安全的 Internet 和 Intranet 站点。 IIS 支持 HTTP ( Hypertext Transfer Protocol ,超文本传输协议), FTP ( Fele Transfer Protocol ,文件传输协议)以及 SMTP 协议,通过使用 CGI 和 ISAPI , IIS 可以得到高度的扩展。
IIS 支持与语言无关的脚本编写和组件,通过 IIS ,开发人员就可以开发新一代动态的,富有魅力的 Web 站点。 IIS 不需要开发人员学习新的脚本语言或者 编译应用程序, IIS 完全支持 VBScript , JScript 开发软件以及 Java ,它也支持 CGI 和 WinCGI ,以及 ISAPI 扩展和过滤器。
IIS 的设计目的是建立一套集成的服务器服务,用以支持 HTTP , FTP 和 SMTP ,它能够提供快速且集成了现有产品,同时可扩展的 Internet 服务器。
1. 先安装 IIS 服务器
在控制面板 ------- 添加或删除程序 -------- 添加 / 删除 Windows 组件 --------Internet 信息服务 IIS
2. 将 JK 插件所在的目录设置为某个站点下的一个具有执行许可权限的虚拟目录
在 IIS 的本地计算机的 ” 网站 ” 中把 JK 插件安装为一个 ISAPI 筛选器
然后右键单击本地计算机,选择所有任务 -------- 重新启动 IIS
3. 编写 workers.properties 文件 -------- 设置链接 tomcat 的信息
uriworkermap.properties 文件 -------- 设置将哪些形式的 URL 地址交给 JK 插件,在转交给 tomcat 处理
4. 设置 JK 插件的属性 例如记录 log 时候的路径等,有两种方法
在一个属性文件中设置 -------- 这个文件必须与 JK 插件 isapi_redirect-1.2.28.dll 在同一目录中,且文件名也要相同,后缀名为 properties, isapi_redirect-1.2.28.properties
在 Windows 注册表中设置
5. 测试配置是否成功 配置完所有文件后,再重新启动一次 IIS ,然后用 IIS 的端口号来访问 tomcat 下的 jsp 文件测试
Tomcat 与 Apache 服务器集成
1. 先安装 Apache 服务器
网址: http://httpd.apache.org/download.cgi
2. 将对应于 Apache 服务器的 JK 插件 mod_jk-apache-1.3.27.so 改名为 mod_jk.so 后复制到
<APACHE_HOME>/modules 目录中
3. 设置配置信息,在 Apache 的 <APACHE_HOME>/conf/httpd.conf 配置文件中直接设置
# 加载 JK 插件模块
LoadModule jk_module modules/mod_jk.so
# 配置 Tomcat 服务器的信息
JKWorkerProperty worker.list=worker1
JKWorikerProperty worker.worker1.port=8009
JKWorikerProperty worker.worker1.host=localhost
JKWorikerProperty worker.worker1.type=ajp13
# 指定生成 JK 插件的日志文件的目录
JKLogFile logs/mod_jk.log
# 指定 JK 插件的日志文件的级别
JKLogLevel debug
# 设置 JK 插件的路径映射信息
JKMount /*.jsp=worker1
JKMount /myweb/*=worker1
可以把配置文件按照 tomcat 整合 IIS 的形式 分为两个文件来配置,在 Apache 的 <APACHE_HOME>/conf 文件夹中,配置 workers.properties 和 uriworkermap.properties
4. 测试配置是否成功
Tomcat 与专业服务器整合的现实问题
随着各种服务器版本的不断升级, JK 插件也在不断的更新和升级
在六个月的时间内,人们可以公布,开发,运用,批评以及放弃一种技术
一本好书的编写到出版的过程需要相当长的一段时间,也许等到读者看到书的内容时,书中讲解的专用技术已经被新的技术所取代
只需要知道有这样一种技术,了解一些粗略的术语和学习方向后,根据具体的应用需求,去网上查找相关的最新资料