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