Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javaservlet输出html的更有效的方法是什么?_Java_Jsp_Servlets - Fatal编程技术网

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

从Javaservlet输出html的更有效的方法是什么?,java,jsp,servlets,Java,Jsp,Servlets,我有一个JavaServlet,它生成html,其中包含一些在html中更改的变量。我想知道,最好是读取html并插入变量,还是将请求发送到JSP?对于服务大量请求,什么更有效 这是html读取/插入方式: FileReader reader = new FileReader("index-template"); CharBuffer buffer = CharBuffer.allocate(16384); reader.read(buffer); String index = new Stri

我有一个JavaServlet,它生成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调度:

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

显示转发给jsp的视图时。在转发之前,使用request.setAttributename,value通过servlet在请求中设置适当的属性。在视图中,可以使用jspel轻松地显示请求属性和参数。这将帮助您的应用程序遵守MVC原则,将控制器与视图分离。

当然,在可读性/可维护性方面,JSP调度是首选方法


至于性能,曾经说过过早优化是万恶之源,我认为这里确实是这样。

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

Hm,看来你们重新发明了轮子,并创建了一个自定义模板引擎,如or

除此之外,我不会在这一层深入讨论这些细节,并选择一条路径,它会产生更可读的代码,也就是更易于维护的代码

如果你的网络应用程序很慢,它不会因为这些魔法而变慢。您应该专注于体系结构以使其高效。不管怎样,如果你做了一些压力测试,结果发现这是你问题的根源,你会有测量结果告诉你哪种选择更好,有什么因素


我的2美分。

仅凭您提供的信息,我想到的第一件事是:为了提高性能,使用一个框架。。。servlet输出原始HTML是对前JSP时代的倒叙,实际上是在Struts2/JSF2/SpringMVC上向后飞。。。JSF/Struts1/JSP。。。这是我们在上个千年的工作方式。我同意其他答案。但是,一个简单的优化是缓存模板。现在,每次发出请求时,您都从文件系统中读取它们。