Tomcat与Java Web开拓技能详解
副标题#e#
本章先容如安在Tomcat上建设和宣布Web应用。这里首先讲授Tomcat的目次布局以及Web应用的目次布局,接着先容如何将HTML、Servlet、JSP和Tag Library陈设到Web应用中,然后先容把整个Web应用打包并宣布的要领,最后先容如安在Tomcat上设置虚拟主机。
本章偏重于接头Web应用的布局和宣布要领,所以没有对本章的Servlet和JSP的例子举办具体表明,关于Servlet和JSP的技能可以别离参考其它章节的内容。
2.1 Tomcat的目次布局
在Tomcat上宣布Web应用之前,首先要相识Tomcat的目次布局。Tomcat的目次布局拜见表2-1,这些目次都是的子目次。
表2-1 Tomcat的目次布局
目 录 | 描 述 |
/bin | 存放在Windows平台 以及Linux平台上启动 和封锁Tomcat的剧本文件 |
/conf | 存放Tomcat处事器的各类设置文件, 个中最重要的设置文件是server.xml |
/server | 包括3个子目次: classes、lib和webapps |
/server/lib | 存放Tomcat处事器所需的各类JAR文件 |
/server/webapps | 存放Tomcat自带的两个Web应用: admin应用和manager应用 |
/common/lib | 存放Tomcat处事器以及所有 Web应用都可以会见的JAR文件 |
/shared/lib | 存放所有Web应用都可以会见的JAR文件 |
/logs | 存放Tomcat的日志文件 |
/webapps | 当宣布Web应用时, 默认环境下把Web应用 文件放于此目次下 |
/work | Tomcat把由JSP生成的 Servlet放于此目次下 |
从表2-1可以看出,在/server/lib目次、/common/lib和/shared/lib目次下都可以放JAR文件,它们的区别在于:
在/server/lib目次下的JAR文件只可被Tomcat处事器会见
在/shared/lib目次下的JAR文件可以被所有的Web应用会见,但不能被Tomcat处事器会见
在/common/lib目次下的JAR文件可以被Tomcat处事器和所有Web应用会见
另外,对付下面将要先容的Java Web应用,在它的WEB-INF目次下,也可以成立lib子目次,在lib子目次下可以放各类JAR文件,这些JAR文件只能被当前Web应用会见。
在以上提到的lib目次下都只接管JAR文件,假如类压缩文件为ZIP文件,应该将它展开,从头打包为JAR文件再拷贝到lib目次中。假如直接将ZIP文件拷贝到lib目次,则会发明Tomcat处事器仍然找不到相关的类。打包呼吁拜见2.2.8节。
2.2 建设和宣布Web应用
Java Web应用由一组静态HTML页、Servlet、JSP和其他相关的class构成。每种组件在Web应用中都有牢靠的存放目次。Web应用的设置信息存放在web.xml文件中。在宣布某些组件(如Servlet)时,必需在web.xml文件中添加相应的设置信息。
2.2.1 Web应用的目次布局
Web应用具有牢靠的目次布局,这里假定开拓一个名为helloapp的Web应用。首先,应该在/webapps目次下建设这个Web应用的目次布局,拜见表2-2。
表2-2 Web应用的目次布局
目 录 | 描 述 |
/helloapp | Web应用的根目次, 所有的JSP和HTML文件 都存放于此目次下 |
/helloapp/WEB-INF | 存放Web应用的宣布描写文件web.xml |
/helloapp/WEB-INF/classes | 存放各类class文件, Servlet类文件也放于此目次下 |
/helloapp/WEB-INF/lib | 存放Web应用所需的各类JAR文件 |
譬喻,在这个目次下,可以存放JDBC驱动措施的JAR文件
#p#副标题#e#
从表2-2中,我们看到在classes以及lib子目次下,都可以存放Java类文件。在运行进程中,Tomcat的类装载器先装载classes目次下的类,再装载lib目次下的类。因此,假如两个目次下存在同名的类,classes目次下的类具有优先权。
本章先容的helloapp应用的目次布局如图2-1所示,helloapp应用在Windows资源打点器中的展开如图2-2所示。
在helloapp应用中建设了如下组件:
HTML组件:index.htm
JSP组件:login.jsp和hello.jsp
Servlet组件:DispatcherServlet
这些组件之间的链接干系为:
index.htm→login.jsp→DispatcherServlet→hello.jsp
图2-1 helloapp应用的目次布局
图2-2 helloapp应用在Windows资源打点器中的展开图
2.2.2 web.xml文件
#p#分页标题#e#
Java Web应用通过一个基于XML的宣布描写符文件来设置其宣布信息,这个文件名为web.xml,它存放于WEB-INF子目次下。在附录B中将具体先容web.xml的设置要领,在附录C中将先容XML的根基常识。在web.xml文件中可包括如下设置信息:
Servlet的界说
Servlet的初始化参数
Servlet以及JSP的映射
安详域设置参数
welcome文件清单
资源引用
情况变量的界说
此刻,建设一个默认的web.xml文件,并把这个文件放到WEB-INF目次中。
<?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/
j2ee/dtds/web-app_2_3.dtd'>
<web-app>
</web-app>
以上web.xml文件的第一行指定了XML的版本和字符编码,第二行DOCTYPE指定文档范例,接下来声明白一个元素,所有关于Web应用的设置元素都将插手到这个元素中。
2.2.3 在server.xml中插手元素
元素是/conf/server.xml中利用最频繁的元素,它代表了运行在上的单个Web应用。一其中可以有多个元素。每个Web应用必需有惟一的URL路径,这个URL路径在元素的path属性中设定。譬喻,在名为"localhost"的元素中插手如下元素:
<!-- Define the default virtual host -->
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
……
……
<Context path="/helloapp"
docBase="helloapp" debug="0"
reloadable="true"/>
</Host>
Context元素的各个属性的说明拜见表2-3。
表2-3 Context元素的属性
属 性 | 描 述 |
path | 指定会见该Web应用的URL进口 |
docBase | 指定Web应用的文件路径,可以给定绝对路径,也可以给定相对付Host的appBase属性的相对路径(关于Host的appBase属性拜见2.3节)。假如Web应用回收开放目次布局,则指定Web应用的根目次;假如Web应用是个WAR文件,则指定WAR文件的路径 |
reloadable | 假如这个属性设为true, Tomcat处事器在运行状态下会监督在WEB-INF/classes 和WEB-INF/lib目次下class文件的窜改。假如监测到有class文件被更新,处事器会自动从头加载Web应用 |
在开拓阶段,将reloadable属性设为true,有助于调试Servlet和其他的class文件。可是由于这一成果会加重处事器的运行负荷,因此发起在Web应用的产物宣布阶段,将这个属性设为false。