日本語PDF

リクエストを処理するサーブレットの作成

次のコードは、リクエストを処理するサーブレットを作成するために必要な手順です。

クラス名: 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()) {
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());