servlet如何处理多种请求

本文详细阐述了Web容器如何处理请求资源路径,包括精确匹配、通配符匹配和后缀匹配三种方式,以及如何通过Servlet映射实现一个Servlet处理多种请求的方法。

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

1.容器如何处理请求资源路径?

比如,在浏览器地址栏输入http://ip:port/appname/abc.html,浏览器会将"/appname/abc.html"作为请求资源路径,放到请求数据包里面,发送给容器。

step1.容器默认认为访问的是一个servlet,也就是说,容器会查找有没有匹配的servlet。
容器会将"/appname/abc.html"中的应用名除掉,得到"/abc.html",然后看web.xml中<url-pattern>有没有匹配的。

	<url-pattern>有三种写法:
	 (1)精确匹配:
			要求请求资源路径截取应用名之后剩余部分
		必须等于url-pattern的值。
	 (2)通配符匹配:
			使用"*"匹配任意的零个或者多个字符。
		比如:
			<url-pattern>/*</url-pattern>		
			<url-pattern>/demo/*</url-pattern>
	 (3)后缀匹配:
			使用"*."开头,后接多个字符。
		比如:
			<url-pattern>*.do</url-pattern>
			上述配置会配置所有以".do"结尾的请求。

step2.如果没有找到匹配的servlet,则容器查找对应位置的文件。

2.如何让一个Servlet处理多种请求?

step1.使用后缀匹配:

<servlet-mapping>
	<servlet-name>ActionServlet</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

step2.分析请求资源路径,进行相应的处理

	//获得请求资源路径
	String uri = request.getRequestURI();
	System.out.println("uri:" + uri);
	
	//截取请求资源路径的一部分,方便比较
	String path = 
			uri.substring(
					uri.lastIndexOf("/"),
					uri.lastIndexOf("."));
	System.out.println("path:" + path);
	
	//依据请求路径,做相应的处理
	if("/list".equals(path)){
		System.out.println(
				"处理用户列表的请求...");
	}else if("/add".equals(path)){
		System.out.println(
				"处理添加用户的请求...");
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值