SAK 図書館

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

JAVA Servlet、JSP 基礎編3 - 基本事項、ユーザ関数(メソッド)、ローカル変数

■基本事項

  ・構文には C、C++、Perl と同じく大文字小文字の厳密な区別がある。
    従って、i と I は別の変数である。
    また、組み込み関数など大文字小文字を正確に記述すること。

  ・パラメタは VB とは違い、値渡しである。
    従って、ユーザ関数内で引数を変更しても呼んだ側の変数の値は変わらない。

■ユーザ関数

  int userfunction(int a, int b) {
    int i;
    コード...
    return(returncode);
  }

  ** { ... } 内で宣言した変数はローカル変数となります。
  ** return には、戻り値を渡すことができます。
  ** 関数(メソッド) には、public と private 宣言ができます。

■検証サンプルコード

// 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>");

    int a = 100;
    int b = 200;
    int c;

    c = test(a, b);

    rw.println("<P>変数 a = " + a + "</P>");
    rw.println("<P>変数 b = " + b + "</P>");
    rw.println("<P>変数 c = " + c + "</P>");

    rw.println("</BODY>");
    rw.println("</HTML>");
  }

  private int test(int p1, int p2) {
    int a = 300;
    int b;
    b = p1 * p2;
    p1 = 111; // ← 値渡しのパラメタなので、無視される
    return(b);
  }

}

class vartest {
  public static int a = 123;
}

【実行結果】
変数 a = 100
変数 b = 200
変数 c = 20000

// 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>");

    int a = 100;
    int b = 200;
    int c;

    c = vartest.test(a, b);

    rw.println("<P>変数 a = " + a + "</P>");
    rw.println("<P>変数 b = " + b + "</P>");
    rw.println("<P>変数 c = " + c + "</P>");

    rw.println("</BODY>");
    rw.println("</HTML>");
  }

}

class vartest {
  public static int a = 123;
  public static int test(int p1, int p2) {
    int a = 300;
    int b;
    b = p1 + p2;
    p1 = 111; // ← 値渡しのパラメタなので、無視される
    return(b);
  }
}

【実行結果】
変数 a = 100
変数 b = 200
変数 c = 300

// test.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class test extends HttpServlet {
  int g = 123;

  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>");

    int a = 100;
    int b = 200;
    int c;

    c = vartest.test(a, b);

    rw.println("<P>変数 a = " + a + "</P>");
    rw.println("<P>変数 b = " + b + "</P>");
    rw.println("<P>変数 c = " + c + "</P>");
    rw.println("<P>変数 g = " + g + "</P>");
    {
      rw.println("<P>変数 g = " + g + "</P>");
    }

    rw.println("</BODY>");
    rw.println("</HTML>");
  }

}

class vartest {
  public static int a = 123;
  public static int test(int p1, int p2) {
    int a = 300;
    int b;
    b = p1 + p2;
    p1 = 111; // ← 値渡しのパラメタなので、無視される
    return(b);
  }
}

【実行結果】
変数 a = 100
変数 b = 200
変数 c = 300
変数 g = 123
変数 g = 123

  ** ユーザ関数 test() の中で a = 300 していますが、これは test() のロー
     カル変数なので、親関数 a には影響しない。
     また、ユーザ関数の外部からは、ローカル変数は参照できません。
     test() が return で終了すると test() のローカル変数は消滅します。

関数の考えた方やグローバル、ローカル変数のスコープなど、他の言語と共通の
概念ですが、C 言語に非常に近いです。

■JSP でのカスタムクラス使用

  ・JSP から、カスタムクラスを使用する場合は、
      import="test,java.util.*"
    のようにインポートするクラスを指定する。

// test.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;

public class test {

  public static int plus(int a, int b) {
    return(a + b);
  }

}

<%@ page import="test,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>" + test.plus(10, 20) + "</P>");
%>
</BODY>
</HTML>

■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-2017 Y.SAK