这章节主要学习:如何使用tomcat来发布一个web应用:helloapp
1.tomcat/conf/server.xml中的如下配置
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
......
</Host>
决定了:名字为localhost的虚拟主机,其应用的缺省目录是webapps;也就是说:想要在此虚拟主机上发布某一个web应用(比如这里的helloapp),则需要将此web应用的所在目录放到webapps目录中。而一个web应用的缺省入口,就是该web应用的根目录名。这就是说,可以访问http://localhost:8080/helloapp
2.在helloapp这个web应用中,其自身的配置文件是 helloapp/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/j2ee/dtds/web-app_2_3.dtd'>
<web-app>
<servlet>
<servlet-name>dispatcher</servlet-name> //用于为servlet类定义一个名字,这样当在html中看到dispatcher,就知道它表示一个servlet类了
<servlet-class>mypack.DispatcherServlet</servlet-class> //用于表示此servlet类的完整类名(也包括包名)。这个类名同时也就告诉了到哪里可以找到该类(helloapp/WEB-INF/classes/mypack/DispatcherServlet.class)
</servlet>
<servlet-mapping> //映射可支持通配符,一个servlet可以对应多个servlet-mapping
<servlet-name>dispatcher</servlet-name> //用于指定要进行映射的servlet的名称。需要和上面的<servlet>中的名称对应,这样才能找到实际的servlet类
<url-pattern>/dispatcher</url-pattern> //用于指定此servlet在URL上的映射,即相对(相对是相对此web应用的缺省入口)URL路径。这样访问http://localhost:8080/helloapp/dispatcher就可以访问此servlet了
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.htm </welcome-file>
</welcome-file-list>
//这里设置了:此web应用的默认主页。即若客户端访问:http://localhost:8080/helloapp/ (注意:这是一个目录),就会默认默认定位到此文件:login.htm;这与访问http://localhost:8080/helloapp/login.htm是一样的效果
<taglib> //定义jsp标签的位置
<taglib-uri>/mytaglib</taglib-uri>
<taglib-location>/WEB-INF/mytaglib.tld</taglib-location> //指定TLD文件的存放位置
</taglib>
</web-app>
3.在servlet类的定义实现中,通过对输入的ServletRequest对象(来自客户端发出的http请求正文)进行再次封装,就可以将此ServletRequest对象再转发给某个jsp文件。在由此jsp文件处理后,在通过ServletResponse对象获得处理结果,并将此结果交给客户端。
4.tomcat可以运行:A.采用开放式目录结构的web应用(即非压缩的);B.web应用的打包文件(WAR文件)。开发完毕的web应用,应该是经过打包(用jar cvf命令进行打包)后,发布WAR文件。tomcat启动后,会把webapps目录下的所有WAR文件自动展开为开放式的目录结构(因此,webapps中不能提前存在同名目录)
5.如果不想将web应用发布到默认的webapps目录中,而是发布到其他目录中,在需要使用<Context>元素来告知新的位置(docBase)
6.如果要使用JSP标签,则需要如下组成:一个处理标签的类(class文件)+一个TLD文件+在web.xml中配置<taglib>元素+在jsp文件中使用标签<前缀名:标签名>