2012-05-10 10 views
0

私はEclipseのインディゴではGoogle App Engineを使用しfollwing JSPのサンプル・ページをworte:jspの静的部分がJava部分の後にストリームされるのはなぜですか?

<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の前に、静的なコードの中にページがあります。

私のコードに書いてある順に回答を印刷するには、何が必要ですか?

答えて

1

スクリプトレットを使用している場合は、これでジョブが実行されます。

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

しかし、あなたはJSTLを使う方が良いです。


あなたのコードが動作しない理由は、GAEのJSPコンパイラが明らかにいくつかの種類のバッファリングライターでのJspWriterをラップしていることです。ライターを直接使用すると、出力はJSPがバッファーライターに書き込んだものを効果的に「追い越し」ます。

+0

私のコードは、実行時にテキストを生成するより大きな関数の縮小サンプルです。私はここで静的コンテンツを使用することはできません。 –

+0

@REDSOFTADAIR - '<%= ... %>'の中のものは、どのJava表現でもかまいません。 –

1

response.getWriter()ではなく、outを使用して、JSPページが使用しているのと同じライターを使用します。