リクエストを処理するサーブレットの作成
次のコードは、リクエストを処理するサーブレットを作成するために必要な手順です。
クラス名: src/main/java/com/oracle/jdbc/samples/web/WebController.java
Githubの場所: WebController.java
説明: これは、アプリケーションのすべてのフローを制御するメイン・サーブレットです。アプリケーションの新しい機能ごとに、新しいリクエストおよびレスポンスを処理するコードをdoPost()
およびprocessResponse()
にそれぞれ追加します。
実行する手順:
6. サーブレットのWebController.javaおよびreportError()メソッドを作成します
7. メソッドprocessRequest()を作成します。このメソッドはGETとPOSTの両方のHTTPリクエストを処理します。
8. メソッドdoGet()を作成します。詳細を追加し、データベースから従業員の詳細を取得して結果をJSONに表示します。JSONは、HTMLに表示される結果の出力形式になります。
9. サーブレットに関するいくつかの一般情報を表示するメソッドgetServletInfo()を作成します。
10. 例外およびその他のエラー・メッセージを記録するロガーを作成します。
手順6: WebController.javaおよびreportError()メソッドを作成する手順
1. WebController.javaのパッケージを宣言します。
package com.oracle.jdbc.samples.web;
2. 従業員の詳細とEmployeeBeanImpl
も含むEmployee
クラスをインポートします。
import com.oracle.jdbc.samples.entity.Employee;
import com.oracle.jdbc.samples.bean.EmployeeBean;
import com.oracle.jdbc.samples.bean.EmployeeBeanImpl;
3. Employeeの結果を表示するためにGSON (Google GSON)をインポートします。import com.google.gson.Gson; import com.google.gson.reflect.TypeToken;
4. 次に示すように、他の依存クラスをインポートします。特定のクラスがインポートされない場合、JDeveloperでは、必要なパッケージのインポートを促すメッセージが表示されます。[Alt]キーを押しながら[Enter]キーを押してインポートします。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
5. サーブレットに注釈を追加します。
@WebServlet(name = "WebController", urlPatterns = {"/WebController"})
6. HttpServletを拡張する次のクラス宣言WebControllerを追加します。開きカッコ({)および閉じカッコ(})を追加します。カッコの間にカーソルを置きます。
public class WebController extends HttpServlet {
7. EmployeeBeanImpl
型のオブジェクト"employeeBean"を宣言します。これはグローバル変数になり、reportError()
、processRequest()
およびdoGet()
などのすべてのメソッドで使用できます。
8. Gson型のオブジェクト"gson"を宣言します。これはグローバル変数になり、reportError()
、processRequest()
およびdoGet()
などのすべてのメソッドで使用できます。
Gson gson = new Gson();
9. 次に示すように、メソッドreportErrorを宣言します。これは、エラーを取得してページに表示するためです。
private void reportError(HttpServletResponse response, String message) throws ServletException, IOException {
10. 次に示すように、レスポンス・コンテンツ・タイプを"text/html"およびcharset=UTF-8に設定します。
response.setContentType("text/html;charset=UTF-8");
11. PrintWriterオブジェクトを作成し、示されたとおりにエラー・メッセージを出力します。
try (PrintWriter out = response.getWriter()) {
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet WebController</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>" + message + "</h1>");
out.println("</body>");
out.println("</html>");
}
手順7: プロセス・リクエストを作成する手順
1. processRequest(req,res)に次のメソッド宣言を追加します。開きカッコと閉じカッコ({、})を追加し、カッコの間にカーソルを置きます。
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
2. Employeeオブジェクトを含むList型の変数employeeListを宣言します。 Gsonオブジェクトを処理する変数gsonを宣言します。
List<Employee> employeeList = null;
3. EmployeeBeanのgetEmployeesメソッドを呼び出して、employeeListオブジェクトをインスタンス化します。
employeeList = employeeBean.getEmployees();
4. employeeListがNULLでないかを確認します
if (employeeList != null) {
5. コンテンツ・タイプを"application/json"に設定します
response.setContentType("application/json");
6. メソッドtoJson(…)を呼び出してemployeeListをJSONに変換します。
gson.toJson(employeeList,
new TypeToken<ArrayList<Employee>>() {}.getType(),
response.getWriter());
7. if条件の終了。カッコを閉じます(})8. employeeListが空の場合のエラー・シナリオを対象にするelse条件を追加します。
else {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
手順8: doGet()
を作成する手順:
1. 次のdoGet()のメソッド宣言を追加します。開きカッコと閉じカッコ({、})を追加し、カッコの間にカーソルを置きます。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
2. HTTPServletRequest
およびHTTPServletResponse
レスポンス・オブジェクトを渡して、メソッドprocessRequest(request, response
)を呼び出します。
processRequest(request, response);
手順9: getServletInfo()
を作成する手順
1. 次のgetServletInfo()のメソッド宣言を追加します。開きカッコと閉じカッコ({、})を追加し、カッコの間にカーソルを置きます。
public String getServletInfo() {
2. return文で、サーブレットに関するメッセージを設定します。
return "JdbcWebServlet: Reading Employees table using JDBC and transforming it as a JSON. ";
手順10: Logger ()を作成する手順:
1. クラスWebController.javaのカッコを閉じる前に、クラスの最後にLogger型の可変ロガーを作成します。
private static final Logger logger =
Logger.getLogger(WebController.class.getName());