| 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. |
|