06-Servlet原理及Mapping映射
06-Servlet原理及Mapping映射
概述
本文主要讲述Servlet原理以及Mapping映射
Servlet原理
- 浏览器发送http请求到达web容器也即web客户端
- web容器将请求封装到request中,将响应封装到response中,将request和response传入到Servlet接口中
- 调用Servlet接口中service处理方法
- 由Servlet的实现类实现该方法
- 实现完成后将response返回给web容器
- web容器将响应返回给浏览器
Mapping 映射
Mapping映射考虑一下几种情况, 其他代码参照上一篇博客
- 常见的是一个Servlet指定一个映射路径, 请求http://localhost:8080/HelloServlet/hello即可返回"hello,servlet!"页面
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
- 一个Servlet可以指定多个映射路径, 请求http://localhost:8080/HelloServlet/hello1 或http://localhost:8080/HelloServlet/hello2 或http://localhost:8080/HelloServlet/hello3 均可返回"hello,servlet!"页面
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
- 一个Servlet可以指定通用映射路径,请求http://localhost:8080/HelloServlet/hello 及后面加任意路径,均可返回"hello,servlet!"页面
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
- 默认请求路径,请求http://localhost:8080/HelloServlet 及后面加任意路径,均可返回"hello,servlet!"页面,并且会淹没hello,world!的主页
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
- 添加后缀请求http://localhost:8080/HelloServlet/balabala.qinjiang 或将balabala替换为任意值均可例如hello/babababa
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.qinjiang</url-pattern>
</servlet-mapping>
优先级问题
指定了固有的映射路径优先级最高,如果找不到,就会走默认的请求
分类:
Java基础 / JavaWeb
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?