SAK 図書館
JAVA Servlet、JSP 基礎編1 - 開発環境、注釈、変数、配列、演算子、特殊文字
JAVA Servlet、JSP の手応えをつかむため、簡単な検証を行ってみる。 Servlet はソースを非公開にできるので、コンパイラ言語に慣れている私には けっこう魅力的に見えたりする。 ■JAVA Servlet、JSP 開発環境 ・PostgreSQL も含め、次のように開発環境を構築した。 Cygwin 上で PostgreSQL を動作させるため、けっこうな構築工数が必要で あった。また、Tomcat と Apache の連携も行っている。 Tomcat だけでも Servlet、JSP の開発は行えるので、とりあえずの開発環 境を構築するなら、Tomcat オンリーが楽である。 但し、PostgreSQL を使用する場合は、Cygwin から環境構築する必要がある。 Windows ネイティブ版の PostgreSQL もあるようだが、制限事項が気になっ た。(Cygwin は Windows2000、XP で、UNIX API をエミュレートする。) PostgreSQL 編、JAVA Servlet、JSP 編 ■ハロー Servlet ・お約束の Servlet 動作テスト。 // test.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class test extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { PrintWriter rw = res.getWriter(); rw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">"); rw.println("<HTML>"); rw.println("<HEAD>"); rw.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">"); rw.println("<TITLE>JAVA Servlet Test</TITLE>"); rw.println("</HEAD>"); rw.println("<BODY>"); rw.println("<P>はじめての Servlet ですのん。</P>"); rw.println("</BODY>"); rw.println("</HTML>"); } } ・コンバイル後、ウェブ配置して実行すると日本語部分が化ける。 EUC_JP で書いてみても、これまた化ける。 調査の結果、setContentType でコードの指定をする必要があると判明した。 次のように res.setContentType("text/html; charset=SJIS"); で、 日本語が普通に処理できる。 // test.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class test extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { res.setContentType("text/html; charset=SJIS"); PrintWriter rw = res.getWriter(); rw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">"); rw.println("<HTML>"); rw.println("<HEAD>"); rw.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">"); rw.println("<TITLE>JAVA Servlet Test</TITLE>"); rw.println("</HEAD>"); rw.println("<BODY>"); rw.println("<P>はじめての Servlet ですのん。</P>"); rw.println("</BODY>"); rw.println("</HTML>"); } } ■ハロー JSP ・お約束の JSP 動作テスト。 <%@ page import="java.util.*" contentType="text/html; charset=Shift_JIS"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>JAVA Server Page(JSP) Test</TITLE> </HEAD> <BODY> <% out.println("<P>はじめての JSP ですのん。</P>"); %> </BODY> </HTML> ・JSP は、ASP に似ている。 日本語も普通に表示できる。 ・JSP では、 <% 一般構文 %> <%= 変数 %> ASP などの変数埋め込みと同じ <!% 宣言 %> サーバが停止するまで保持 の書き方がある。 ■トークン ・JAVA は、大文字小文字に厳密な違いがあるので注意する。 ほとんどの構文は小文字である。 ・コーテーションは C 言語と同じで、シングルコーテーション「'」は文字を ダブルコーテーション「"」は文字列を現す。 ■注釈 // 『//』以降注釈となる /* 複数行注釈開始 */ 複数行注釈終了 // 単一行注釈 /* 複数行注釈 複数行注釈 */ ■定数 static final int INT_TEISU = 123; final int INT_TEISU = 123; ■変数タイプ byte -128 〜 127 short -32,768 〜 32,767 int -2,147,483,648 〜 2,147,483,647 long -9,223,372,036,854,775,808 〜 -9,223,372,036,854,775,807 char 文字型(unicode) String 文字列型(String クラス) Date 日付型(Date クラス) float 32 ビット浮動小数点型 double 64 ビット浮動小数点型 boolean 論理型(true、false) a 単純変数 b[] 配列変数(new int[10] の場合、0 〜 9 の添字) array.length 配列サイズ(new int[10] の場合、0 〜 9 で、10 が返る) ・変数には、大文字小文字の区別がある。 尚、C で言う、ポインタは使えません。 <%@ page import="java.util.*" contentType="text/html; charset=Shift_JIS"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>JAVA Server Page(JSP) Test</TITLE> </HEAD> <BODY> <% int a = 100; int b[]; b = new int[10]; b[0] = 123; int c[] = new int[10]; c[0] = 456; out.println("<P>変数 a = " + a + "</P>"); out.println("<P>変数 b[0] = " + b[0] + "</P>"); out.println("<P>変数 c[0] = " + c[0] + "</P>"); %> </BODY> </HTML> ■クラス変数 ・クラス変数は、初回に呼ばれたときだけ初期化されるようである。 セッションを切断してから、同じクラス変数を呼び出しても初期化されない。 ウェブサーバが再起動すると、当然、初期化される。 ・public int a = 123; と、static 指定をなくすと、インスタンス変数になる。 インスタンス毎の変数となる。 // test.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class test extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { res.setContentType("text/html; charset=SJIS"); PrintWriter rw = res.getWriter(); rw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">"); rw.println("<HTML>"); rw.println("<HEAD>"); rw.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">"); rw.println("<TITLE>JAVA Servlet Test</TITLE>"); rw.println("</HEAD>"); rw.println("<BODY>"); rw.println("<P>vartest.a = " + vartest.a + "</P>"); vartest.a = 100; rw.println("<P>vartest.a = " + vartest.a + "</P>"); rw.println("</BODY>"); rw.println("</HTML>"); } } class vartest { public static int a = 123; } ■演算子 + 加算 - 減算 * 掛け算 / 割り算 % 余り ++ インクリメント (+ 1) -- デクリメント (- 1) << 左ビットシフト >> 右ビットシフト & 論理積 | 論理和 ^ 排他的論理和 ++i は、i が参照される前にインクリメントされる。 i++ は、i 参照後にインクリメントされる。 ** 小数点の演算は標準では 2 進演算のため、誤差に注意すること!! 型キャストは C 言語と同じように (double) 123 のように指定する。 文字列と数値の結合は、 "abcdef" + 123 で、"abcdef123" となる。 ■代入 = 単純代入 += 加算代入 -= 減算代入 *= 乗算代入 /= 除算代入 a = a + b; は、a += b; と等しい。 16 進数は、0x0ff と表現。 ■特殊文字 (エスケープシーケンス) \n 改行 ■JAVA Servlet、JSP 基礎編資料
■JAVA Servlet、JSP + PostgreSQL 編資料
■JAVA Servlet、JSP + Oracle9i 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料