Servlet_JSP深入详解_基于Tomcat的Web开发(笔记)
来源:互联网 发布:澳洲甲级联赛角球数据 编辑:程序博客网 时间:2024/05/22 02:26
1.5 tomcat 之目录结构
Tomcat的目录结构及其用途
目 录
用 途
/bin
存放启动和关闭Tomcat的脚本文件
/conf
存放Tomcat服务器的各种配置文件,其中包括server.xml(Tomcat的主要配置文件)、tomcat-users.xml和web.xml等配置文件
/lib
存放Tomcat服务器和所有Web应用程序需要访问的JAR文件
/logs
存放Tomcat的日志文件
/temp
存放Tomcat运行时产生的临时文件
/webapps
当发布Web应用程序时,通常把Web应用程序的目录及文件放到这个目录下
/work
Tomcat将JSP生成的Servlet源文件和字节码文件放到这个目录下
1.5.1 启动tomcat
由于Tomcat 6.x不再需要JDK的支持,所以才新增了JRE_HOME环境变量,对于6.0之前的Tomcat版本,没有JRE_HOME环境变量,只能配置JAVA_HOME环境变量。
下面,我们在Windows XP Service Pack 2操作系统下设置JAVA_HOME环境变量,步骤如下。
① 右键单击“我的电脑”,选择【属性】,出现如图1-10所示的画面。
② 单击“高级”选项卡,选择“环境变量(N)”,如图1-11和图1-12所示。
③ 在“系统变量”下方单击“新建”按钮。在“变量名”中输入“JAVA_HOME”,在变量值中输入JDK所在的目录“D:/Java/jdk1.6.0_05”(读者可以根据自己机器上JDK的安装目录来修改这个值),然后单击“确定”按钮,如图1-13所示。
④ 最后在“环境变量”对话框上单击“确定”按钮,结束JAVA_HOME环境变量的设置。
我们再一次转到Tomcat的bin目录下,用鼠标双击startup.bat文件,可以看到如图1-14所示的启动信息。
注意图1-14中圆角矩形框中的文本,可以看到启动的是Tomcat 6.0.16。
(点击查看大图)图1-12 “环境变量”对话框 图1-13 新建JAVA_HOME系统变量 (点击查看大图)图1-14 Tomcat启动信息然后,打开浏览器,在地址栏中输入http://localhost:8080/(localhost表示本地机器,8080是Tomcat默认监听的端口号),将出现如图1-15所示的Tomcat页面。
注意图1-15中鼠标(小手形状)指向的链接——“Tomcat Documentation”,单击这个链接将进入Tomcat的文档页面,有关Tomcat的帮助信息可以在文档页面中找到;读者也可以直接访问Tomcat的文档,文档首页的位置是Tomcat安装目录下的webapps/docs/index.html。如果要关闭Tomcat服务器,可以用鼠标双击Tomcat bin目录下的shutdown.bat文件。
1.5.3 运行tomcat(2)
Tomcat安装目录下的conf子目录用于存放Tomcat服务器的各种配置文件,其中的server.xml是Tomcat的主要配置文件,这是一个格式良好的XML文档,在这个文件中可以修改Tomcat默认监听的端口号。
如果你想将Tomcat安装为Windows的服务,以便在Windows系统启动时即运行Tomcat,那么可以打开“命令提示符”窗口,进入Tomcat安装目录下的bin子目录,然后执行下面的命令:
service.bat install这样将会在Windows系统中安装一个Tomcat6服务,要启动这个服务,可以执行下面的命令:
net start Tomcat6要停止Tomcat6服务,可以执行下面的命令:
net stop Tomcat6要删除Tomcat6服务,可以执行下面的命令:
service.bat remove
1.5.3 Tomcat启动分析
用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读。在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值。接着判断当前目录下是否存在bin/catalina.bat,如果文件不存在,将当前目录的父目录设为CATALINA_HOME的值。根据笔者机器上Tomcat安装目录的层次结构,最后CATALINA_HOME的值被设为Tomcat的安装目录。如果环境变量CATALINA_HOME已经存在,则通过这个环境变量调用bin目录下的“catalina.bat start”命令。通过这段分析,我们了解到两个信息,一是Tomcat启动时,需要查找CATALINA_HOME这个环境变量,如果在Tomcat的bin目录下调用startup.bat,Tomcat会自动并正确设置CATALINA_HOME;二是执行startup.bat命令,实际上执行的是“catalina.bat start”命令。
1.5.6 Tomcat体系结构
介绍一下各组件在Tomcat服务器中的作用。
(1)Server
Server表示整个的Catalina Servlet容器。Tomcat提供了Server接口的一个默认实现,这通常不需要用户自己去实现。在Server容器中,可以包含一个或多个Service组件。
(2)Service
Service是存活在Server内部的中间组件,它将一个或多个连接器(Connector)组件绑定到一个单独的引擎(Engine)上。在Server中,可以包含一个或多个Service组件。Service也很少由用户定制,Tomcat提供了Service接口的默认实现,而这种实现既简单又能满足应用。
(3)Connector
连接器(Connector)处理与客户端的通信,它负责接收客户请求,以及向客户返回响应结果。在Tomcat中,有多个连接器可以使用。
(4)Engine
在Tomcat中,每个Service只能包含一个Servlet引擎(Engine)。引擎表示一个特定的Service的请求处理流水线。作为一个Service可以有多个连接器,引擎从连接器接收和处理所有的请求,将响应返回给适合的连接器,通过连接器传输给用户。用户允许通过实现Engine接口提供自定义的引擎,但通常不需要这么做。
(5)Host
Host表示一个虚拟主机,一个引擎可以包含多个Host。用户通常不需要创建自定义的Host,因为Tomcat给出的Host接口的实现(类StandardHost)提供了重要的附加功能。
(6)Context
一个Context表示了一个Web应用程序,运行在特定的虚拟主机中。什么是Web应用程序呢?在Sun公司发布的Java Servlet规范中,对Web应用程序做出了如下的定义:“一个Web应用程序是由一组Servlet、HTML页面、类,以及其他的资源组成的运行在Web服务器上的完整的应用程序。它可以在多个供应商提供的实现了Servlet规范的Web容器中运行”。一个Host可以包含多个Context(代表Web应用程序),每一个Context都有一个唯一的路径。用户通常不需要创建自定义的Context,因为Tomcat给出的Context接口的实现(类StandardContext)提供了重要的附加功能。
下面我们通过图1-21来帮助读者更好地理解Tomcat服务器中各组件的工作流程。
1.7 Tomcat的管理程序
Tomcat提供了一个管理程序:manager,用于管理部署到Tomcat服务器中的Web应用程序。
manager Web应用程序包含在Tomcat的安装包中。要访问manager Web应用程序,需要添加具有管理员权限的账号,编辑%CATALINA_HOME%/conf/tomcat-users.xml文件,在<tomcat-users>元素中添加manager角色,以及属于该角色的用户名和密码,如例1-1所示。
例1-1 tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<user username="tomcat" password="12345678" roles="manager"/>
</tomcat-users>
以粗体显示的代码是我们添加的。注意,用户名和密码可以根据自己的喜好来设置,但角色名只能是manager。
启动Tomcat服务器,打开浏览器,在地址栏中输入:
http://localhost:8080/
将出现如图1-23所示的页面。
单击“Tomcat Manager”链接,访问manager Web应用,将看到如图1-24所示的登录界面。
(点击查看大图)图1-23 Tomcat的默认主页 (点击查看大图)输入用户名tomcat,密码12345678,单击“确定”按钮,你将看到如图1-25所示的页面。(点击查看大图)图1-25 manager Web应用程序的主页面
在这个页面中,你可以部署、启动、停止、重新加载、卸载Web应用程序。
需要注意图1-25中鼠标(小手形状)指向的链接——“examples”,单击这个链接将进入Tomcat的例子页面,如图1-26所示。
图1-26 Tomcat的例子页面
单击图1-26所示的两个链接,将看到Tomcat提供的Servlet和JSP的例子程序,这些程序可以作为学习Servlet和JSP的参考。
Tomcat 6.0之前的版本还提供了一个admin Web应用程序,用于管理和配置Tomcat服务器本身,这个Web应用程序需要单独下载。Tomcat 6.x没有提供admin Web应用程序的下载。
1.8 小结
所以很多Web应用会结合使用Apache和Tomcat,Apache作为HTTP Web服务器,Tomcat作为Web容器。
2. servlet
2.1.4 一个简单的Servlet(1)
在Servlet中,主要的方法是service(),当客户端请求到来时,Servlet容器将调用Servlet实例的service()方法对请求进行处理。我们在service()方法中,首先通过ServletResponse类中的getWriter()方法调用得到一个PrintWriter类型的输出流对象out,然后调用out对象的println()方法向客户端发送字符串“Hello World”,最后关闭out对象。
Servlet容器调用Servlet实例对请求的处理过程如图2-2所示。
图2-2 Servlet容器调用Servlet实例对请求进行处理的全过程
2.1.4 一个简单的Servlet(2)
Servlet是Web应用程序中的一个组件。一个Web应用程序是由一组Servlet、HTML页面、类,以及其他的资源组成的运行在Web服务器上的完整的应用程序,以一种结构化的有层次的目录形式存在。组成Web应用程序的这些资源文件要部署在相应的目录层次中,根目录代表了整个Web应用程序的根。我们通常是将Web应用程序的目录放到%CATALINA_HOME%/webapps目录下,在webapps目录下的每一个子目录都是一个独立的Web应用程序,子目录的名字就是Web应用程序的名字,也称为Web应用程序的上下文根。用户通过Web应用程序的上下文根来访问Web应用程序中的资源,如图2-4所示。
如果你要新建一个Web应用程序,可以在webapps目录下先建一个目录,在这个例子中,我们所建的目录是ch02,作为第一个Web应用程序的上下文根。Java开发的Web应用程序需要遵照一定的目录层次结构,在Servlet规范中定义了Web应用程序的目录层次结构,如图2-5所示。
图2-4 多个Web应用程序和上下文根 图2-5 Web应用程序的目录层次结构Web应用程序的目录层次结构如表2-1所示。
表2-1 Web应用程序的目录层次结构
目 录
描 述
/ch02
Web应用程序的根目录,属于此Web应用程序的所有文件都存放在这个目录下
/ch02/WEB-INF
存放Web应用程序的部署描述符文件web.xml
/ch02/WEB-INF/classes
存放Servlet和其他有用的类文件
/ch02/WEB-INF/lib
存放Web应用程序需要用到的JAR文件,这些JAR文件中可以包含Servlet、Bean和其他有用的类文件
/ch02/WEB-INF/web.xml
web.xml文件包含Web应用程序的配置和部署信息
从表2-1中可以看到,WEB-INF目录下的classes和lib目录都可以存放Java的类文件,在Servlet容器运行时,Web应用程序的类加载器将首先加载classes目录下的,其次才是lib目录下的类。如果这两个目录下存在同名的类,起作用的将是classes目录下的类。
在表2-1中,我们还可以看到一个特殊的目录WEB-INF,注意在书写时不要写错,所有字母都要大写。说这个目录特殊,是因为这个目录并不属于Web应用程序可以访问的上下文路径的一部分,对客户端来说,这个目录是不可见的。如果你将index.html文件放到WEB-INF目录下,对于客户端是无法通过下面的方式访问到这个文件的:
http://localhost:8080/ch02/WEB-INF/index.html
不过,WEB-INF目录下的内容对于Servlet代码是可见的,在Servlet代码中可以通过调用ServletContext对象中的getResource()或者getResourceAsStream()方法来访问WEB-INF目录下的资源,也可以使用RequestDispatcher调用(参见第2.6节)将WEB-INF目录下的内容呈现给客户端。
如果我们想要在Servlet代码中访问保存在文件中的配置信息,而又不希望这些配置信息被客户端访问到,就可以把这个文件放到WEB-INF目录下。
在%CATALINA_HOME%/webapps/ch02目录下新建一个目录WEB-INF,进入WEB-INF目录,新建一个classes目录,整个目录结构是:
%CATALINA_HOME%/webapps/ch02/WEB-INF/classes
将编译生成的HelloWorldServlet.class文件连同所在的包一起放到WEB-INF/classes目录下。
接下来,我们需要部署这个Servlet,Web应用程序的配置和部署是通过web.xml文件来完成的。web.xml文件被称为Web应用程序的部署描述符,
它可以包含如下的配置和部署信息:
ServletContext的初始化参数
Session的配置
Servlet/JSP的定义和映射
应用程序生命周期监听器类
过滤器定义和过滤器映射
MIME类型映射
欢迎文件列表
错误页面
语言环境和编码映射
声明式安全配置
JSP配置
我们所编写的web.xml文件必须是格式良好的XML。用记事本或者UltraEdit等文本编辑工具编写web.xml文件,内容如例2-2所示。
例2-2 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">
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>
org.sunxin.ch02.servlet.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
</web-app>
2.1.4 一个简单的Servlet(3)
%CATALINA_HOME%/webapps/ROOT目录是Tomcat默认的Web应用程序的起始路径,当我们输入http://localhost:8080/时,访问的就是该目录下的Web应用程序资源。如果你将本例的Servlet部署在该目录下,访问时只需输入http://localhost:8080/helloworld即可。
- Servlet_JSP深入详解_基于Tomcat的Web开发(笔记)
- Servlet/JSP深入详解:基于Tomcat的Web开发
- Servlet/JSP深入详解:基于Tomcat的Web开发
- 基于web项目开发的深入调研
- Tomcat学习笔记_基于主机名的虚拟主机的配置
- Tomcat学习笔记_基于主机名的虚拟主机的配置
- Servlet_JSP学习笔记
- 基于Python的Flask Web 开发 笔记 (1)
- 基于Python的Flask Web开发 笔记 (2)
- Tomcat 与java web 开发技术详解笔记(二)----Servlet
- Tomcat与java.web开发技术详解--笔记
- 读Tomcat与Java Web开发技术详解 笔记
- 基于TOMCAT的JAVA web开发的一些建议
- Servlet_JSP(2) JSP
- servlet_JSP
- servlet_jsp
- Servlet_JSP(3) Servlet和JSP的通信
- 深入分析java web 技术内幕_笔记_一
- 常用的计算机英语(全集)
- 支持通用框架的threadpool代码
- 我的“云”应用体验
- Android中如何取得联系人,如何得到一个联系人下面的多个号码
- html页面重组技术
- Servlet_JSP深入详解_基于Tomcat的Web开发(笔记)
- ubuntu10.04安装virtualbox虚拟机
- Android下Content Provider使用
- WER
- dos命令
- 由SWT.getPlatform()想到的
- Baby -- justin bieber
- 巧用 、-符号来实现Word中表格的趣味绘制
- 《亲密关系》书摘 [美]莎伦 布雷姆