这个servlet如何返回视图的内容?

时间:2012-10-21 19:20:54

标签: java servlets

我正在查看与路由匹配的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返回,它在某处返回,然后将其用作注入视图的“模型”。

有人可以为我澄清这个吗?

1 个答案:

答案 0 :(得分:0)

魔术在handlerEntry.getValue().handle(req, resp, matcher);行中完成。

抱歉,我不会下载该代码,但请检查Handler.getValue().handle()的代码。我很确定它负责呈现视图。提示是handle()方法接收HttpServletRequest和HttpServletResponse,因此它可以从请求中获取任何参数,并将任何内容写入响应。