从Java servlet输出html的更有效方法是什么?

时间:2013-10-24 14:32:22

标签: java jsp servlets

我有一个java servlet,它生成html,其中很少有变量在html中发生变化。我想知道,最好是阅读html并插入变量或将请求分派给JSP?提供大量请求的效率更高?

这是html读取/插入方式:

FileReader reader = new FileReader("index-template");
CharBuffer buffer = CharBuffer.allocate(16384);
reader.read(buffer);
String index = new String(buffer.array());
index = index.replaceAll("\\{\\{ variable\\}\\}", variable);
resp.setContentType("text/html");
resp.getWriter().write(index);

这是jsp dispatch:

request.getRequestDispatcher("/thankyou.jsp").forward(request, response);

4 个答案:

答案 0 :(得分:1)

当涉及可读性/可维护性时,JSP调度当然是首选方式。

至于表现,someone曾经说过早优化是所有邪恶的根源,我认为这确实就是这种情况。

答案 1 :(得分:1)

尝试使用模板引擎,例如velocity。在那里,您可以使用变量编写HTML文件,并让速度执行替换。一旦加载,Velocity还会缓存已解析的模板文件。因此,它比在代码片段中一次又一次地加载文件要快得多。

答案 2 :(得分:0)

将视图向前显示到jsp时。在转发之前,使用request.setAttribute(name, value)通过servlet在请求中设置适当的属性。在视图中,可以使用JSP EL轻松显示请求属性和参数。这将有助于您的应用程序遵循MVC原则,将控制器与视图分开。

答案 3 :(得分:0)

嗯,似乎你们在那里重新发明轮子并创建了一个自定义模板引擎(如VelocityFreemarker

除此之外,我不会在这个级别上详细介绍这些细节,并选择导致代码更易读的路径(更易于维护的代码)。

如果你的网络应用程序很慢,那么因为这种魔法而不会很慢。您应该专注于架构以提高效率。无论如何,如果你做了一些压力测试,结果证明这是你问题的根源,那么你将有测量,告诉你哪个选择更好,哪个更好。

我的2美分。