SAK 図書館
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 編資料