我正在查看与路由匹配的servlet:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
for (Map.Entry<Function<HttpServletRequest, Matcher>, Handler<Matcher>> handlerEntry : handlerMap.entrySet()) {
Matcher matcher = handlerEntry.getKey().apply(req);
if (matcher != null) {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
handlerEntry.getValue().handle(req, resp, matcher);
return;
}
}
resp.setStatus(404);
}
参考:https://github.com/spullara/twickery/blob/master/src/main/java/twickery/web/Router.java#L59
您可以在此处查看视图模板:https://github.com/spullara/twickery/tree/master/src/main/resources/templates
我对它们如何链接在一起感到困惑,我假设某种方式从servlet返回,它在某处返回,然后将其用作注入视图的“模型”。
有人可以为我澄清这个吗?
答案 0 :(得分:0)
魔术在handlerEntry.getValue().handle(req, resp, matcher);
行中完成。
抱歉,我不会下载该代码,但请检查Handler.getValue().handle()
的代码。我很确定它负责呈现视图。提示是handle()
方法接收HttpServletRequest和HttpServletResponse,因此它可以从请求中获取任何参数,并将任何内容写入响应。