servlet-mapping url-pattern / 和 /*区别

总结:
/* 的意思是“所有的请求”
/ 的意思是“所有的末被其它servlets接收并处理的请求”。

两者主要的区别其实是访问jsp的不同
/: Tomcat会将所有的请求交给对应的Servlet进行处理,包括.jsp 文件也会交给servlet处理。
/: 多数情况下 与/
效果一致,当访问的路径是jsp文件时,tomcat会访问真实的jsp文件而不是把请求交给对应的Servlet处理。

所以:
/* 主要是filter 配置的url-pattern 用,
/ 主要是servlet用

自定义了一个servlet

servlet-mapping url-pattern / 和 /*区别_第1张图片
image

1. 首先我们在web.xml 这样写

servlet-mapping url-pattern / 和 /*区别_第2张图片
image

,然后启动项目,我们打开http://localhost:8080 这时候 我们通过servlet能够转发index.jsp,

然后我把servlet 里面index.jsp 改成 index.html 的时候,这时候就报错了,然后死循环了,

然后我把web.xml改成/*的话,直接访问 不管servlet 里面 是否index.jsp,还是index.html 都是死循环。

然后 明白了 /和 /* 对于所用请求都拦截,但是 / 对于 .jsp 的不拦截。对于 为啥对jsp 不拦截,这个应该是web容器里面控制的。然后看了tomcat的web.xml配置文件

里面他有1个default的servlet,

servlet-mapping url-pattern / 和 /*区别_第3张图片
image

然后我们怎么在 web.xml 如果写 /* 这个的话,怎么让他访问呢,那我们要写

servlet-mapping url-pattern / 和 /*区别_第4张图片
image

这样就可以了。

然后我们不管是/或者是/*,我们要访问静态页面,那我们在web.xml 写上这个,然后转发的时候就可以调静态页面,不走servlet,转发的时候记得写绝对路径哦
image
servlet-mapping url-pattern / 和 /*区别_第5张图片
image

你可能感兴趣的:(servlet-mapping url-pattern / 和 /*区别)