如何在FTL中获取会话ID

时间:2015-10-14 12:32:15

标签: freemarker

我想在ftl页面中显示当前会话ID。

我用Session(HttpSessionHashModel)尝试了很多东西但是无法获得id?

获取请求标题也可以完成我的工作。

有没有办法在我的FTL中获得这些项目?

2 个答案:

答案 0 :(得分:0)

您可以使用java servlet将参数放在FTL文件中。

我认为你的项目是这样的:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        try
        {
            Map dataModel = new HashMap();

            dataModel.put("session_id", req.getSession().getId());                

            Configuration cfg = new Configuration();

            Template tmpl = cfg.getTemplate("test.ftl");

            tmpl.process(dataModel, resp.getWriter());
        }
        catch (TemplateException ex) {               
            throw new IOException(ex);
        }

    }

将test.ftl文件作为

<html>
<head></head>
<body>
    <p> ${session_id!""} </p>
</body>
</html>

答案 1 :(得分:0)

默认情况下,FreeMarker不会公开任何内容。它甚至不知道servlet是什么。所以它取决于您正在使用的Web应用程序框架。 (除非您正在使用freemarker.ext.servlet.FreeMarkerServlet。)或者,您可以直接将它们放入数据模型中。