[解決済み] なぜjspではSystem.out.println()ではなく、out.println()と記述するのでしょうか?
質問
私はjspを学び始めましたが、jspで何かを印刷したい場合、次のように記述しなければならないことがわかりました。
out.println()
の代わりに
System.out.println()
と書くと
System.out.println()
は、エラーは表示されませんが、ブラウザにもo/pされません。なぜこのようなことが起こるのでしょうか?私たちが知っている限りでは
System
は定義済みクラスであり
out
はコンソールに接続された出力ストリームです。では、なぜ
System
をjspで使用することはできますか?
ありがとうございます。
解決方法を教えてください。
なぜなら
out
というのは、私たちが参照しているのは
System.out
これは、JSPページをラップしているeffectiveメソッド内の変数です。
System.out
は、サーブレットコンテナのコンソール (通常はログファイル) に書き込みます。
out
は全く別のクラスで、生成されたレスポンスの出力ストリームに書き込みます。
JSPがコード化されるとき、(理論上、そして実際Tomcatでは)2つのステップを経ます。JSP -> サーブレットソースコード、そして、サーブレットソースコード -> クラスです。ページ全体は、メソッドの中に置かれ、Tomcatでは、次のようになります。
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
try {
response.setContentType("text/html");
pageContext = _jspxFactory.getPageContext(this, request, response,
"qdforumerror.jsp", true, 65536, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
/* =============================================
...your <% ... %> JSP code here, with
any markup outside those tags converted into
out.print("..."); statments...
=============================================
*/
}
catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}
}
finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
ご覧の通りです。
out
はそのメソッド内の変数で、型は
JspWriter
(むしろ
OutputStream
と同じように
System.out
).
(余談)
<%! ... %>
タグではなく、通常の
<% ... %>
タグはメソッド内ではなく、生成されたサーブレットクラスの他の場所に置かれます)。
関連
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
-
[解決済み】JSF、Servlet、JSPの違いは何ですか?
-
[解決済み】テンプレを簡単にするJSPの裏技?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】 JAVA 変数宣言はここではできない
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】破損したjarファイル
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件
-
[解決済み] PHPでコンソールに書き込むにはどうしたらいいですか?