Oracle Database 2日でJava開発者ガイド 11g リリース1(11.1) E05692-02 |
|
この章では、サンプル・アプリケーションの変更方法およびOracleデータベース内のデータをユーザーが編集、更新および削除できるようにする機能の追加方法について説明します。この章は次の項で構成されています。
簡単に言うと、Beanは、プロパティ、イベントおよびメソッドを持つJavaクラスです。Beanは、プロパティごとにアクセッサ(get
およびset
メソッド)も持っています。特定の基本ルールに従っているオブジェクトは、すべてBeanといえます。Beanを作成するために拡張する必要がある特別なクラスはありません。
この章のサンプル・アプリケーションの作成手順では、単一の従業員レコードを保持するためにJavaBeanを使用します。既存レコードを編集したり、新規レコードを追加するときに、表の単一行の変更された値または新しい値を保持するコンテナとしてJavaBeanが使用され、これによりデータベースの更新に使用する行が準備されます。
Beanは従業員レコードのフィールドごとにプロパティを持ち、JDeveloperはこれらのプロパティごとにアクセッサ(get
およびset
メソッド)を作成します。次の項では、サンプル・アプリケーションのJavaBeanの作成方法について説明します。
Employee.java
はサンプル・アプリケーションで使用するJavaBeanで、単一の従業員レコードを保持してその内容を変更します。JavaBeanを作成するには、次の手順を実行します。
Employee
、パッケージにhr
を入力し、「拡張」フィールドがjava.lang.Object
に設定されていることを確認します。「OK」をクリックして、Beanを作成します。
Employee.java
ファイルに次のコードが含まれます。
package hr; public class Employee { public Employee(){ } }
JavaBeanでは、Employees
表の列ごとに1つのフィールドを作成し、フィールドごとにアクセッサ・メソッド(get
およびset
メソッド)を作成する必要があります。
java.sql.Date
(いずれかのフィールドのフィールド型)のimport文を追加します。
import java.sql.Date;
Employees
表の列ごとに、Employee
クラスにフィールドを追加します。各フィールドはprivate
で、フィールド型は次のとおりです。
private Integer employeeId; private String firstName; private String lastName; private String email; private String phoneNumber; private Date hireDate; private String jobId; private Double salary; private Double commissionPct; private Integer departmentId;
Employee.java
ファイルに次のコードが含まれます。package hr; import java.sql.Date; public class Employee { public Employee() { } private Integer employeeId; private String firstName; private String lastName; private String email; private String phoneNumber; private Date hireDate; private String jobId; private Double salary; private Double commissionPct; private Integer departmentId; public void setEmployeeId(Integer employeeId) { this.employeeId = employeeId; } public Integer getEmployeeId() { return employeeId; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getFirstName() { return firstName; } ... ... ... ... // This list has been shortened and is not comprehensive. The actual code contains // accessor methods for all the fields declared in the bean. public void setDepartmentId(Integer departmentId) { this.departmentId = departmentId; } public Integer getDepartmentId() { return departmentId; } }
Javaアプリケーションからデータベースの表に含まれる行を更新するには、次のタスクを実行する必要があります。
edit.jsp
ファイルが開き、その従業員のデータが編集可能な状態で表示されます。
edit.jsp
という名前のJSPページを作成します。このページには、単一の従業員の全データを表示するフォームと表が含まれ、ユーザーはこのページを使用して値を変更できます。
edit.jsp
ページのフォームを処理し、更新された値をEmployee.java
Beanに書き込んで、updateEmployee
メソッドをコールするJSPページを作成します。
これらの方法については、次の項を参照してください。
次の手順で作成するメソッドは、特定の従業員レコードの検索に使用します。このメソッドは、特定の従業員レコードを編集または削除する場合や、Employee.java
ページでその従業員のリンクを選択した場合に使用されます。
DataHandler
クラスがJavaソース・エディタでまだ開いていない場合は、アプリケーション・ナビゲータでこのクラスをダブルクリックして開きます。
DataHandler
クラスで、更新する従業員レコードを識別するための新規メソッドを宣言します。
public Employee findEmployeeById(int id) throws SQLException { }
selectedEmp
という名前の、Employee
Beanの新規インスタンスを作成します。
Employee selectedEmp = new Employee();
getDBConnection();
Statement
オブジェクトを作成し、ResultSet
型を定義して問合せを作成します。デバッグに役立てるために、トレース・メッセージを追加します。
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "SELECT * FROM Employees WHERE employee_id = " + id; System.out.println("\nExecuting: " + query);
rset = stmt.executeQuery(query);
rset
で返された結果セットを使用し、従業員Beanのset
メソッドを使用してBeanのフィールドに移入します。
while (rset.next()) { selectedEmp.setEmployeeId(new Integer(rset.getInt("employee_id"))); selectedEmp.setFirstName(rset.getString("first_name")); selectedEmp.setLastName(rset.getString("last_name")); selectedEmp.setEmail(rset.getString("email")); selectedEmp.setPhoneNumber(rset.getString("phone_number")); selectedEmp.setHireDate(rset.getDate("hire_date")); selectedEmp.setSalary(new Double(rset.getDouble("salary"))); selectedEmp.setJobId(rset.getString("job_id")); }
return selectedEmp;
次の手順では、データベース内の従業員データを更新するメソッドの作成方法について説明します。
DataHandler
クラスを開きます。
updateEmployee
メソッドを宣言します。
public String updateEmployee(int employee_id, String first_name, String last_name, String email, String phone_number, String salary, String job_id) throws SQLException { }
Employee
Beanのインスタンスを作成します。
Employee oldEmployee = findEmployeeById(employee_id);
getDBConnection();
Statement
オブジェクトを作成し、前述と同様にResultSet
型を指定します。
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
UPDATE
文の詳細を集積するStringBuffer
を作成します。
StringBuffer columns = new StringBuffer( 255 );
StringBuffer
に追加します。追加する2つ目以降の項目については、カンマを使用してそれぞれの項目を区切ります。次のコードは、first_name
変数が変更されているかどうかをチェックし、変更されている場合は、データベース更新に使用されるStringBuffer
のSQLに詳細を追加します。
if ( first_name != null && !first_name.equals(oldEmployee.getFirstName() ) ) { columns.append( "first_name = '" + first_name + "'" ); }
last_name
については、新しい名字を追加する前に、StringBuffer
内にすでになんらかの変更があるかどうかをチェックし、変更がある場合は、カンマを追加して新しい変更と以前の変更を分けます。次のコードを使用します。
if ( last_name != null && !last_name.equals(oldEmployee.getLastName() ) ) { if ( columns.length() > 0 ) { columns.append( ", " ); } columns.append( "last_name = '" + last_name + "'" ); }
同じコード・ロジックを使用して、email
およびphone_number
の変更をチェックします。
salary
フィールドについては、String
値を取得して、次のようにStringBuffer
に追加します。
if ( salary != null && !salary.equals( oldEmployee.getSalary().toString() ) ) { if ( columns.length() > 0 ) { columns.append( ", " ); } columns.append( "salary = '" + salary + "'" );
StringBuffer
に何か含まれているかどうかをチェックします。含まれている場合は、StringBuffer
の情報を使用してSQL UPDATE
文を構築し、このSQL文を実行します。StringBuffer
に変更が含まれていない場合には、そのことを知らせるメッセージを出力します。
if ( columns.length() > 0 ) { sqlString = "update Employees SET " + columns.toString() + " WHERE employee_id = " + employee_id; System.out.println("\nExecuting: " + sqlString); stmt.execute(sqlString); } else { System.out.println( "Nothing to do to update Employee Id: " + employee_id); }
return "success";
例5-2に、このメソッドのすべてのコードを示します。
public String updateEmployee(int employee_id, String first_name, String last_name, String email, String phone_number, String salary, String job_id) throws SQLException { Employee oldEmployee = findEmployeeById(employee_id); getDBConnection(); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); StringBuffer columns = new StringBuffer( 255 ); if ( first_name != null && !first_name.equals( oldEmployee.getFirstName() ) ) { columns.append( "first_name = '" + first_name + "'" ); } if ( last_name != null && !last_name.equals( oldEmployee.getLastName() ) ) { if ( columns.length() > 0 ) { columns.append( ", " ); } columns.append( "last_name = '" + last_name + "'" ); } if ( email != null && !email.equals( oldEmployee.getEmail() ) ) { if ( columns.length() > 0 ) { columns.append( ", " ); } columns.append( "email = '" + email + "'" ); } if ( phone_number != null && !phone_number.equals( oldEmployee.getPhoneNumber() ) ) { if ( columns.length() > 0 ) { columns.append( ", " ); } columns.append( "phone_number = '" + phone_number + "'" ); } if ( salary != null && !salary.equals( oldEmployee.getSalary().toString() ) ) { if ( columns.length() > 0 ) { columns.append( ", " ); } columns.append( "salary = '" + salary + "'" ); } if ( job_id != null && !job_id.equals( oldEmployee.getJobId() ) ) { if ( columns.length() > 0 ) { columns.append( ", " ); } columns.append( "job_id = '" + job_id + "'" ); } if ( columns.length() > 0 ) { sqlString = "UPDATE Employees SET " + columns.toString() + " WHERE employee_id = " + employee_id; System.out.println("\nExecuting: " + sqlString); stmt.execute(sqlString); } else { System.out.println( "Nothing to do to update Employee Id: " + employee_id); } return "success"; }
次の手順では、employees.jsp
ページの従業員表の各行にリンクを追加します。ユーザーはリンクをクリックしてその行を編集します。
employees.jsp
を開きます。
Employees
表内のスクリプトレットをダブルクリックして「スクリプトレットのプロパティ」ダイアログ・ボックスを表示します。
edit.jsp
ページへのリンクが含まれるように、スクリプトレットを変更します。変更されたスクリプトレットには次のコードが含まれている必要があります。
while (rset.next ()) { out.println("<tr>"); out.println("<td>" + rset.getString("first_name") + "</td><td> " + rset.getString("last_name") + "</td><td> " + rset.getString("email") + "</td><td> " + rset.getString("job_id") + "</td><td>" + rset.getString("phone_number") + "</td><td>" + rset.getDouble("salary") + "</td><td> <a href=\"edit.jsp?empid=" + rset.getInt(1) + "\">Edit</a></td>"); out.println("<tr>"); }
従業員の編集リンクがクリックされると、このコードは、従業員レコードの更新を処理するedit.jsp
ページに、従業員IDを渡します。edit.jsp
ページはこのIDを使用して、その従業員のレコードをデータベース内で検索します。
employees.jsp
を保存します。図5-2に、実行されブラウザに表示されたemployees.jsp
を示します。図に示されたリンクをクリックすると、従業員データを編集できます。この項では、従業員レコードの更新に使用するedit.jsp
ファイルを作成します。
edit.jsp
という名前を付けます。その他はすべてデフォルトを使用します。
jsp:usebean
タグを追加します。empsbean
をIDとして入力し、hr.DataHandler
をクラスとして入力します。「有効範囲」を「セッション」
に設定し、「OK」をクリックします。
jsp:usebean
タグをもう1つ追加します。今度は、employee
を「ID」として入力し、hr.Employeeを「クラス」として参照して選択し、「有効範囲」を「page」のままにします。「OK」をクリックします。
findEmployeeById
メソッドに渡して、Employee
Bean内のデータを取り出します。次のコードを「スクリプトレットの挿入」ダイアログ・ボックスに入力します。
Integer employee_id = new Integer(request.getParameter("empid")); employee = empsbean.findEmployeeById(employee_id.intValue());
update_action.jsp
と入力します。まだ作成していないため、このページはドロップダウン・リストからは選択できません。
First Name
、Last Name
、Email
、Phone
, Job
、Monthly Salary
employee_id
を「名前」プロパティに入力し、<%= employee.getEmployeeId() %>
を「値」プロパティに入力します。
first_name
を「名前」フィールドに入力し、<%= employee.getFirstName() %>
を「値」フィールドに入力します。「OK」をクリックします。
last_name
を「名前」フィールドに入力し、<%= employee.getLastName() %>
を「値」
フィールドに入力します。「OK」をクリックします。
email
、phone_number
、job_id
およびsalary
をフィールド名として使用し、各フィールドに対応するgetterメソッドを指定します。これらは次の表に示されています。
Update
を「値」として入力します。
結果として作成されるedit.jsp
ページは、図5-3のようなページになります。
この項では、update_action.jsp
ファイルの作成方法について説明します。このページは、従業員レコードの更新に使用するedit.jsp
ページのフォームを処理します。このページには表示要素はなく、edit.jsp
フォームを処理するためにのみ使用され、employees.jsp
ファイルに制御を返します。
update_action.jsp
という名前を付けます。その他はすべて、JSP作成ウィザードのページのデフォルトを使用します。
empsbean
をIDとして入力し、hr.DataHandler
をクラスとして入力します。「有効範囲」を「セッション」
に設定し、「OK」をクリックします。
Integer employee_id = new Integer(request.getParameter("employee_id")); String first_name = request.getParameter("first_name"); String last_name = request.getParameter("last_name"); String email = request.getParameter("email"); String phone_number = request.getParameter("phone_number"); String salary = request.getParameter("salary"); String job_id = request.getParameter("job_id"); empsbean.updateEmployee(employee_id.intValue(), first_name, last_name, email, phone_number, salary, job_id );
employees.jsp
と入力します。
employees.jsp
ページで、いずれかの従業員のEditをクリックすると、図5-4に示されているページに移動します。従業員の詳細を変更し、employees.jsp
ページで変更が反映されているかどうかをチェックします。Employees表に新しい従業員レコードを挿入する手順は、従業員レコードの更新処理と似ています。
Employees
表に新しい従業員行を挿入するメソッドを作成します。
insert.jsp
が開き、新しい行の詳細を入力できる空のフォームが表示されます。
insert.jsp
ページのフォームを処理するJSPページを作成します。
ここでは、新しい従業員データを挿入するJavaアプリケーション・コードの作成方法について次の各項で説明します。
次の手順では、新しい従業員レコードを挿入するメソッドを作成します。
DataHandler.java
を開きます。
public String addEmployee(String first_name, String last_name, String email, String phone_number, String job_id, int salary) throws SQLException { }
getDBConnection();
Statement
オブジェクトを作成し、ResultSet
型を以前と同様に定義してSQL文を作成します。
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sqlString = "INSERT INTO Employees VALUES (EMPLOYEES_SEQ.nextval, '" + first_name + "','" + last_name + "','" + email + "','" + phone_number + "'," + "SYSDATE, '" + job_id + "', " + salary + ",.30,100,80)";
例5-3に、addEmployee()
メソッドのコードを示します。
public String addEmployee(String first_name, String last_name, String email, String phone_number, String job_id, int salary) throws SQLException { getDBConnection(); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sqlString = "INSERT INTO Employees VALUES (EMPLOYEES_SEQ.nextval, '" + first_name + "','" + last_name + "','" + email + "','" + phone_number + "'," + "SYSDATE, '" + job_id + "', " + salary + ",.30,100,80)"; System.out.println("\nInserting: " + sqlString); stmt.execute(sqlString); return "success"; }
次の手順では、従業員表のヘッダー行にリンクを追加します。ユーザーはリンクをクリックすることで、新しい従業員を追加できます。
employees.jsp
を開きます。
insert.jsp
を入力し、「テキスト」フィールドにInsert Employee
を入力します。まだ作成していないため、insert.jsp
を参照して検索することはできません。「OK」をクリックします。
employees.jsp
を保存します。
次の手順では、insert.jsp
ページを作成します。このページを使用することで、ユーザーは新しい従業員レコードの詳細を入力できます。
insert.jsp
という名前を付けます。
insert_action.jsp
と入力して、「OK」をクリックします。
first_name
と入力します。
テキスト・フィールドの対象 | 「名前」プロパティに設定する値 |
---|---|
Last Name |
|
|
|
Phone |
|
Monthly Salary |
|
Job行は手順が異なります。
job_id
を入力し、サイズに1
を入力します。「追加」をクリックします。「値」フィールドをクリックしてSA_REP
と入力し、「キャプション」フィールドをクリックしてSales Representative
と入力します。「追加」をクリックして次のジョブ・タイトルをそれぞれ追加し、「OK」をクリックします。値 | キャプション |
---|---|
|
HR Representative |
|
PR Representative |
|
Marketing Manager |
|
Sales Manager |
|
Finance Manager |
|
Software Developer |
|
Vice President |
Add Employee
と入力します。
図5-5に、ビジュアル・エディタでのinsert.jsp
ページを示します。
次の手順では、insert_action.jsp
ページを作成します。このページは、新しい従業員レコードを入力するinsert.jsp
ページからのフォーム入力を処理します。このページには表示要素はなく、insert.jsp
フォームを処理するためにのみ使用され、employees.jsp
ファイルに制御を返します。
insert_action.jsp
という名前を付けます。
empsbean
を入力し、クラスにhr.DataHandler
を入力します。「有効範囲」を「セッション」
に設定し、「OK」をクリックします。
String first_name = request.getParameter("first_name"); String last_name = request.getParameter("last_name"); String email = request.getParameter("email"); String phone_number = request.getParameter("phone_number"); String job_id = request.getParameter("job_id"); Integer salary = new Integer(request.getParameter("salary")); empsbean.addEmployee(first_name, last_name, email, phone_number, job_id, salary.intValue());
employees.jsp
と入力します。
従業員を挿入するには、図5-6に示したemployees.jsp
ページで、Insert Employee
をクリックします。
図5-7に、入力済のデータと、ジョブの選択に使用されるジョブ・リストが表示されている、従業員データを新規に挿入するページを示します。
レコードを削除する手順は、レコードを編集および挿入する手順と似ています。
delete_action.jsp
ページにナビゲートされます。
この項では、従業員データの削除に関連する次のタスクについて説明します。
次の手順で作成するメソッドは、IDを使用した従業員レコードの削除に使用します。
DataHandler.java
を開きます。
public String deleteEmployeeById(int id) throws SQLException { }
getDBConnection();
Statement
オブジェクトを作成し、ResultSet
型を以前と同様に定義してSQL文を作成します。デバッグに役立てるために、トレース・メッセージを追加します。
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sqlString = "DELETE FROM Employees WHERE employee_id = " + id; System.out.println("\nExecuting: " + sqlString);
stmt.execute(sqlString);
Success
というメッセージを返します。
return "success";
例5-4に、deleteEmployeeById()
メソッドのコードを示します。
public String deleteEmployeeById(int id) throws SQLException { getDBConnection(); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sqlString = "DELETE FROM Employees WHERE employee_id = " + id; System.out.println("\nExecuting: " + sqlString); stmt.execute(sqlString); return "success"; }
次の手順では、employees.jsp
ページの従業員表の各行にリンクを追加します。リンクをクリックすると、その行の従業員データがすべて削除されます。
employees.jsp
を開きます。
Employees
表内のスクリプトレットをダブルクリックしてスクリプトレットのプロパティ」ダイアログ・ボックスを表示します。
delete_action.jsp
ページへのリンクが含まれるように、スクリプトレットを変更します。変更されたスクリプトレットには次のコードが含まれます。
while (rset.next ()) { out.println("<tr>"); out.println("<td>" + rset.getString("first_name") + "</td><td> " + rset.getString("last_name") + "</td><td> " + rset.getString("email") + "</td><td> " + rset.getString("job_id") + "</td><td>" + rset.getString("phone_number") + "</td><td>" + rset.getDouble("salary") + "</td><td> <a href=\"edit.jsp?empid=" + rset.getInt(1) + "\">Edit</a> <a href=\"delete_action.jsp?empid=" + rset.getInt(1) + "\">Delete</a></td>"); out.println("<tr>"); }
employees.jsp
を保存します。
次の手順では、delete_action.jsp
ページを作成します。このページは削除操作のみを処理します。このページには、表示要素はありません。
delete_action.jsp
という名前を付けます。
empsbean
を入力し、クラスにhr.DataHandler
を入力します。「有効範囲」を「セッション」
に設定し、「OK」をクリックします。
Integer employee_id = new Integer(request.getParameter("empid")); empsbean.deleteEmployeeById(employee_id.intValue());
employees.jsp
から従業員レコードを削除するリンクを示します。いずれかの従業員レコードのDeleteをクリックすると、その従業員レコードが削除されます。
SQLException
オブジェクトのインスタンスを使用すると、データベース・アクセス・エラーやその他のエラーに関する情報を取得できます。それぞれのSQLException
インスタンスには、エラーを記述する文字列を含む様々な種類の情報が用意されています。この文字列はJava Exceptionメッセージとして使用され、getMessage
メソッドで取得できます。
サンプル・アプリケーションでは、try
ブロックとcatch
ブロックを使用します。これらは、例外を処理するJavaメカニズムです。Javaでは、メソッドが例外をスローした場合に、それを処理するメカニズムが必要です。一般的には、catch
ブロックで例外を捕捉して、例外発生時の一連のアクションを指定します。これは、単なるメッセージの表示のみの場合もあります。
データベース・アクセス・エラーが発生すると、各JDBCメソッドはSQLException
をスローします。そのため、このようなメソッドを実行するアプリケーションのメソッドにはすべて例外処理が必要です。
サンプル・アプリケーションのメソッドにはすべて例外処理のコードが含まれています。たとえば、データベースへの接続を取得するgetDBConnection
は、SQLExceptionをスローします。これは、次のようなgetAllEmployees
メソッドと同様です。
public ResultSet getAllEmployees() throws SQLException { }
SQLExceptionsを捕捉して処理するコードのサンプルについては、DataHandler.java
クラスのauthenticateUser
メソッドのコードを参照してください。この例では、try
ブロックに、ユーザーを認証するために実行される作業のコードが含まれており、catch
ブロックに認証に失敗した場合の処理が含まれています。
次の項では、SQLExceptionsを捕捉して処理するコードをサンプル・アプリケーションに追加する方法について説明します。
サンプル・アプリケーションのメソッドでSQL例外を処理するには、次の手順を実行します。
SQLException
をスローしていることを確認します。次にメソッドの例を示します。
public ResultSet getAllEmployees() throws SQLException
try
ブロックとcatch
ブロックを使用して、SQLExceptionsを捕捉します。たとえば、getAllEmployees
メソッドでは、既存コードをtry
ブロックにまとめ、catch
ブロックを次のように追加しています。
public ResultSet getAllEmployees() throws SQLException { try { getDBConnection(); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sqlString = "SELECT * FROM Employees order by employee_id"; System.out.println("\nExecuting: " + sqlString); rset = stmt.executeQuery(sqlString); } catch (SQLException e) { e.printStackTrace(); } return rset; }
try
ブロックとcatch
ブロックを使用するように書き直したdeleteEmployee
メソッドでは、メソッドが成功した場合にのみ「success」を返します。つまり、return
文をtry
ブロックに記述しています。コードは次のとおりです。
public String deleteEmployeeById(int id) throws SQLException { try { getDBConnection(); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sqlString = "delete FROM Employees where employee_id = " + id; System.out.println("\nExecuting: " + sqlString); stmt.execute(sqlString); return "success"; } catch (SQLException e) { e.printStackTrace(); } }
サンプル・アプリケーションのコードの改良点として、SQLException
をスローするメソッドで使用する例外処理のメソッドを作成します。例として、次のメソッドは、サンプル・アプリケーションのどのメソッドのcatch
ブロックからでもコールできます。このメソッドは累積されたすべての例外を処理し、それぞれについてスタック・トレースを出力します。
public void logException( SQLException ex ) { while ( ex != null ) { ex.printStackTrace(); ex = ex.getNextException(); } }
また、catch
ブロックでは、メソッドが失敗した理由を説明するテキストを返せます。つまり、メソッドのcatch
ブロックを次のように記述できます。
catch ( SQLException ex ) { logException( ex ); return "failure"; }
この機能をアプリケーションに追加するには、次の手順を実行します。
DataHandler.java
で、logException
メソッドを追加します。
try
ブロックとcatch
ブロックを含むように各メソッドを編集します。
catch
ブロックで、logException
メソッドを実行します。
String
の戻り値を持つメソッドの場合は、次のようにreturn
文を記述して、メソッドが失敗したことを示すメッセージを返します。
return "failure";
web.xml
ファイルは、Webアプリケーションのデプロイメント・ディスクリプタです。web.xml
ファイルの1つのセクションを、アプリケーションの開始ページの定義に使用できます。次に例を示します。
<web-app> ... <welcome-file> myWelcomeFile.jsp </welcome-file> ... </web-app>
web.xml
ファイルにようこそページを定義しなかった場合、一般的には、index
という名前で拡張子に.html
、.htm
または.jsp
を持つファイルが開始ページとして使用されます(存在する場合)。Jdeveloperで、アプリケーションのデフォルトの実行ターゲットにするページ、つまり、最初に表示されるアプリケーションのページを定義できます。ページは、プロジェクトのプロパティで定義します。
アプリケーションが起動して開始ページが表示された後、アプリケーション内のナビゲーションは次の方法を使用して実現されます。
jsp:forward
タグ: 問合せおよびフォームを処理するJSPページで実行され、同じJSPページに再度フォワードするかまたは別のJSPページにフォワードします。
次の手順では、index.jsp
ページを作成します。このページはアプリケーションのデフォルトの開始ページになります。ページには表示要素はいっさい含まれません。単に、ユーザーをアプリケーションのログイン・ページ(login.jsp
)にフォワードします。これを行うには、jsp:forward
タグを使用します。jsp:forward
タグは、問合せおよびフォームを処理するJSPページで実行され、同じJSPページに再度フォワードするかまたは別のJSPページにフォワードします。
index.jsp
という名前を付けます。
jsp:forward
タグをページに含めます。
フォワード
タグの「Forwardの挿入」ダイアログ・ボックスで、login.jsp
を「ページ」として入力します。
これで、この新しいページをアプリケーションのデフォルト・ターゲットに指定できます。次の手順を実行します。
index.jsp
ページを検索し、「OK」をクリックします。再度「OK」をクリックして、ダイアログ・ボックスを閉じます。
これで、Viewプロジェクトを右クリックし、ショートカット・メニューで「実行」を選択すると、アプリケーションを実行できます。アプリケーションを実行すると、アプリケーションのデフォルトの起動ターゲットとして設定されているindex.jsp
が実行されます。index.jsp
によって直接ログイン・ページ(login.jsp
)にフォワードされ、このページがブラウザに表示されます。
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|