可用hashmap实现简易路由分发器,以路径为key、处理器为value进行精确匹配,支持前缀通配(如/api/*)和链式注册,适用于学习或轻量cli,不适用于生产环境。

用 HashMap 实现简易路由分发器,核心是把 HTTP 路径(如 /user/list)作为 key,对应的处理器(比如一个函数或对象)作为 value,收到请求时查表执行。它适合学习、脚本工具或轻量 CLI 应用,不适用于生产级 Web 服务(应选 Spring MVC、SparkJava、Vert.x 等)。
定义处理器接口
先统一处理逻辑的调用方式,避免类型混乱:
public interface Handler {
void handle(String path, Map<string string> params);
}</string>
这样所有路由处理器都遵循同一契约,后续扩展和替换更方便。
构建路由表并注册路径
用 HashMap<string handler></string> 存储路径与处理器映射,支持精确匹配:
当代理已经知道网站路由或内容URL,并且在启动前需要有效的sitemap XML、sitemap索引或robots.txt引用时,请使用sitemap。这是一个发布构件技能,而不是爬虫或SEO平台。
Map<string handler> router = new HashMap();
// 注册 /hello
router.put("/hello", (path, params) -> System.out.println("Hello, world!"));
// 注册 /user/{id} → 需要额外解析,HashMap 本身不支持通配符
// 所以先只做静态路径;动态路径可配合简单正则或拆分后手动匹配</string>
注意:HashMap 原生只支持字符串完全匹配,不支持 /user/* 或 /user/:id 这类模式。若需基础动态能力,可约定路径格式,再用 String.startsWith() 或 String.split("/") 辅助提取参数。
实现分发逻辑
收到请求路径后,查找并执行对应处理器:
public void dispatch(String requestPath, Map<string string> queryParams) {
Handler handler = router.get(requestPath);
if (handler != null) {
handler.handle(requestPath, queryParams);
} else {
// 尝试前缀匹配(例如 /api/users → 查 /api/*)
String prefix = requestPath.substring(0, requestPath.lastIndexOf('/') + 1);
handler = router.get(prefix + "*");
if (handler != null) {
handler.handle(requestPath, queryParams);
} else {
System.out.println("404 Not Found: " + requestPath);
}
}
}</string>
- 先查完全匹配,最常用也最快
- 再按目录层级尝试前缀+“*”匹配(如注册
/api/*,可捕获/api/users和/api/posts) - 参数(query 或 path 中的变量)需在 handler 内部解析,HashMap 不负责这部分
加一层封装提升可用性
可以包装成类,支持链式注册,更接近真实框架风格:
public class SimpleRouter {
private final Map<string handler> routes = new HashMap();
public SimpleRouter get(String path, Handler handler) {
routes.put(path, handler);
return this;
}
public void serve(String path, Map<string string> params) {
// 同上 dispatch 逻辑
}
}
// 使用
new SimpleRouter()
.get("/ping", (p, q) -> System.out.println("pong"))
.get("/time", (p, q) -> System.out.println(new Date()))
.serve("/ping", Map.of());</string></string>
这样代码更清晰,也便于测试和复用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










