SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK