为什么jsp的静态部分流在java部分之后?

为什么jsp的静态部分流在java部分之后?,java,google-app-engine,jsp,Java,Google App Engine,Jsp,我使用Eclipse Indigo中的Google App Engine编写了以下jsp示例页面: <html> <head> </head> <body> <% response.getWriter().println("<h1><a href=\"VotingMainPage.jsp\"> Hello World <br></a></h1>"); %> </

我使用Eclipse Indigo中的Google App Engine编写了以下jsp示例页面:

<html>
<head>
</head>
<body>    
<% response.getWriter().println("<h1><a href=\"VotingMainPage.jsp\">  Hello World <br></a></h1>"); %>
</body>
</html>

令我困惑的是,本地浏览器的输出是:

<h1><a href="VotingMainPage.jsp">  Hello World <br></a></h1>

<html>
<head>
</head>
<body>          
</body>
</html>

java代码生成的文本位于静态html之前,尽管页面位于静态代码内部


我必须做什么,才能按照我在代码中的顺序将内容打印到响应中?

如果您使用的是Scriptlet,那么这将完成这项工作

<html>
<head>
</head>
<body>    
<%= "<h1><a href=\"VotingMainPage.jsp\">  Hello World <br></a></h1>" %>
</body>
</html>

但是您最好使用JSTL



代码无法工作的原因是GAE的JSP编译器显然在某种缓冲编写器中包装JSPWriter。当您直接使用writer时,您的输出实际上“超过”了JSP写入缓冲writer的内容。

使用
out
而不是
response.getWriter()
来使用JSP页面正在使用的同一个writer

我的代码只是在运行时生成文本的较大函数的简化示例。我不能在这里使用静态内容。@REDSOFTADAIR-
中的内容可以是任何Java表达式。