servlet多重映射_Servlet的多重映射总结

Servlet多重映射允许一个Servlet对应多个虚拟路径,方便客户端通过不同路径访问同一服务。配置中应注意url-pattern的唯一性,不能重复。虚拟路径优先于真实路径解析,可使用*通配符进行路径匹配,包括完全匹配、路径匹配和扩展名匹配。通配符的使用有特定规则,不能在中间,并且虚拟目录和虚拟文件不能同时使用通配符。注解配置与XML配置可共存,但映射路径不能冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Servlet多重映射

Servlet是多重映射是指同一个Servlet可以被映射成多个虚拟路径,客户端可以通过多个路径访问同一个Servlet。

配置一servlet-mapping可以多配置多个url-pattern

配置二

这种方式的配置效果和上面的这种是一样的,即一个可以对应多个,但要注意一点,就是你的servlet-mapping虽然可以多配置,但url-pattern虚拟映射路径绝对不能重复,否则报空指针异常。servlet-mapping可以多配置

上面的web.xml配置文件中,我配置了2个servlet-mapping,这意味着你用/ServletTest和ServletTest2都可以访问这个Servlet程序,但路径不能重复,配置一同理。但是要注意一点,在url-pattern中只能使用绝对路径,不能使用的相对路径,这一点很重要。

什么是虚拟文件?

什么是虚拟文件,故名思意,就是虚拟的文件,在磁盘中你是找不到这个文件的。

什么是虚拟目录?

虚拟目录和虚拟文件不是一个概念,虚拟文件是一种虚拟的文件,而并非路径。比如,我们把一个项目布置在tomcat中,那我们想要访问项目中的文件,那就要配置文件的访问路径。这时候,我们就可以使用虚拟目录+虚拟文件的方式进行访问。

什么是真实路径

真实路径又叫物理路径,是在磁盘上可以找的到的路径。

虚拟路径优先于真实路径

在tomcat容器中,它首会解析xml配置文件,当发送一个请求到tomcat中,它会判断在虚拟路径是否存在此路径,如果存在则使得虚拟路径。如果虚拟路径中没有找到该文件,则去真实路径中找,如果真实路径也没有找到,则报404,没有找到资源,这就是一个大概的流程

在路径中使用通配符

在配置servlet的程序的时候,允许使用*通配符来匹配多个路径。

完全匹配完全匹配

通过上面的配置,这意味着你在访问这个Servlet的时候,可以是任意的路径,而不是像以前一样,只有指定的路径才能访问这个Servlet,这种方式属于完全匹配,配置所有路径,这种通配符的方式一般在登录拦截的时候用的比较多点。

路径匹配路径匹配1

这种方式叫做路径匹配,也可以叫做虚拟目录,以*通配符为后辍,例如:Servlet/a、Servlet/b...都是可以访问此Servlet的。还有一种方式就是通配可以写在目标文件的上级目录,例如:路径匹配2

这种方式就可以使用,a/test、b/test...等路径访问。

扩展名匹配扩展名匹配

以上这种方式叫扩展名匹配,通配符*为前辍,例如:Servlet/a.sb、Servlet/b.sb...等都是可以访问到的,但此种方式的的映射路径不能是以/开头的路径。

tip:在这里,我还是想提醒一下大家,这种通配符,可以在运用在虚拟目录和虚拟文件中,还是它们是不可以共存的。如果你的虚拟目录和虚拟文件都使用*通配符,则404找不资源路径。虚拟目录和虚拟文件不能同时使用通配符

MXL配置与注解配置可共存

在Servlet中xml配置是可以和注解共存的,只在虚拟映射路径不冲突,这完全是可以这么做的。

注解配置:注解配置

xml配置:xml配置

在注解中的name对应着xml中servlet-name,而urlPatterns对应url-pattern,但urlPatterns和url-pattern的映射路径不能重复。

小结通配符要么在开头,要么在结尾,不能在中间。

如果不使用通配符,那么在的映射路径必须是绝对路径,说白了是前面必须加一个“/”

这三种通配方式的优先级是匹配的范围越大优先级越低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值