Web部署一(目录机构以及Url-pattern)
一个web目录部署到服务器上的时候通常是这样的一个结构
1.MyTestApp 表示了web应用的名字
2.wen-inf下面的文件都不能直接访问
3.jar 一般会放在lib (当然你也可以放在tomcat下lib中,这样tomcat部署的所有的应用都会使用到这些lib)
4.classes 的目录机构和我们的src的目录结构是一样的,只不过classes是编译后 的class文件
5.tags 一般存放,我们自定义的TLD文件
6.这就是一个最基本的webapp的目录结构
有的时候我们会把我们的应用打包为一个war 文件。这其实是一个压缩文件,在tomcat启动的时候会自动的解压这个文件,war文件名就是webapp的名字
Url-pattern访问的规则
在我们配置serlvet的时候我们通常会配置servlet和servlet-mapping 两个标签
<servlet>
<servlet-name>mappingone</servlet-name>
<servlet-class>com.urlMapping.UrlMappingOne</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mappingone</servlet-name>
<url-pattern>/urlMapping/urlOne</url-pattern>
</servlet-mapping>
如上面的代码:servlet-name 只是一个内部标示,class 标示用来处理这个请求的class,url-pattern表示的是我们在地址栏中访问的路径
/urlMapping/urlOne 这只是一个逻辑的访问地址,而真实的处理的地址是在servlet-class 中说明的
url-pattern 的规则
1.全匹配的方式
2.文件夹匹配的方式
3.后缀名匹配的方式
不管我们是通过重定向或者是服务器转发的方式到一个页面或者是一个serlvet,那么他都会按照上面的顺序进行一个计算,首先是全匹配优先级最高,然后是文件夹匹配,最后是后缀名匹配的方式。如果中间有一个匹配成功了那么就立即返回到servlet-class中去处理
全匹配的格式:/urlMapping/urlOne
文件夹匹配:/urlMapping/urlOne/*
后缀名匹配:*.html
如果请求的地址是
localhost:8080/servlet/urlMapping/urlOne 那么请求的就是“全匹配”
localhost:8080/servlet/urlMapping/urlOne/ 请求的是文件夹匹配
localhost:8080/servlet/urlMapping/urlOne/hello 请求的是文件夹匹配
localhost:8080/servlet/urlMapping/urlOne/hello.html 请求的是后缀名的匹配
注意如果是有多个文件夹匹配的方式,那么首先是匹配最长的哪一个比如下面的例子
urlMapping/urlOne/* 和 urlMapping/urlOne/inner/* 两个文件夹匹配 如果我们访问的地址是 urlMapping/urlOne/inner/hhh.html 那么他就是匹配urlMapping/urlOne/inner/*
在设置匹配的时候我们要注意,不要配成循环的请求了。因为“
不管我们是通过重定向或者是服务器转发的方式到一个页面或者是一个serlvet,那么他都会按照上面的顺序进行一个计算”
如果是我们请求的地址后面加上了“/”,那么就是一个文件夹的匹配方式了。