理解servlet的url-pattern

在之前出入java web的时候创建servlet只知道要在注解中添加name和url-pattern

如:

当初仅仅理解的是如果通过一个表单后再Tomcat中去寻找这个servlet需要通过这个url-pattern

但后来在配置web.xml中发现一个servlet可以使用多个url-patterns(现在才发现这里是url-patterns 是复数形式,文章开头都依然写成url-pattern),还有有一个实训系统项目中url-patterns与刚刚学习的时候老师所讲的servlet名字和文件名最好相同而且每次的url-patterns也是根目录下的servlet的名字   有所不同如:


这个url-patterns就是加上了一截其他的字符串,于是乎产生了疑问。在网上其他博客中看到

实际上通过浏览器翻出请求后,Tomcat将应用上下文路径截掉只剩下一个字符串作为servlet的映射匹配

而通常在初学的时候我们通常处理form表单传递的数据,所以只需要一个servlet处理一个业务,仅仅映射了一个

而且文件目录结构很简单没有多个层次,第二张图的url实际上是是SystemManagement下的.jsp发出的请求而servlet的名字是AdminLookNoticesServlet,它将.jsp覆盖掉url变成上下文+/SystemManagement/AdminLookNoticesServlet,然后截掉应用的上下文路径剩下的与之映射匹配

直接上代码:

有几种匹配方式(路径匹配和扩展匹配不可混合(/*.jsp )使用所以不同目录下的扩展匹配最好写成精确匹配,虽然比较麻烦)

精确:

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/user/users.html</url-pattern>
    <url-pattern>/index.html</url-pattern>
    <url-pattern>/user/addUser.action</url-pattern>
</servlet-mapping>

路径:

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/user/*</url-pattern>
</servlet-mapping>

扩展:

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>

缺省:

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
   
<url-pattern>/</url-pattern>
</servlet-mapping>

而/*匹配的是包括目录和扩展的所有文件 /LogIn , /*.jsp

而/仅仅是目录不会包括扩展文件 /LogIn

servlet映射匹配是匹配后不会继续匹配





  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值