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 編資料