Javaプログラミング入門：ステップ7 実践的な開発

# Javaプログラミング入門：ステップ7 実践的な開発

ステップ7では、これまで学んだ技術を統合し、実際のプロジェクトに適用していきます。具体的には、Web画面にデータを表示し、データの登録処理を行う方法を学びます。HTMLとプログラムの連携を通じて、動的なWebアプリケーションを構築します。

1. プロジェクトに必要な技術の統合
2. Web画面にデータを表示
3. 登録したデータの処理
4. HTMLとプログラムの連携

## 1. プロジェクトに必要な技術の統合

まず、プロジェクトで必要な技術を統合します。これには、以下の要素が含まれます。

- **Webフレームワーク**: Struts、Spring MVCなど
- **データベースアクセス**: JDBC、ORM（Hibernateなど）
- **フロントエンド**: HTML、CSS、JavaScript

これらの技術を組み合わせることで、Webアプリケーションの基盤を構築します。

## 2. Web画面にデータを表示

データベースからデータを取得し、Web画面に表示する方法を学びます。

### データの取得

データベースからデータを取得するために、DAO（Data Access Object）パターンを使用します。以下は、データベースから従業員リストを取得する例です。

```java
public class EmployeeDao {
    public List<Employee> getAllEmployees() {
        List<Employee> employees = new ArrayList<>();
        // データベース接続とデータ取得のロジック
        return employees;
    }
}
```
### データの表示
取得したデータをJSPページに表示します。

```jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
    <title>Employee List</title>
</head>
<body>
    <h1>Employee List</h1>
    <table>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Position</th>
        </tr>
        <c:forEach var="employee" items="${employeeList}">
            <tr>
                <td>${employee.id}</td>
                <td>${employee.name}</td>
                <td>${employee.position}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>
```
## 3. 登録したデータの処理
ユーザーが入力したデータをデータベースに登録する方法を学びます。

HTMLフォームの作成
まず、データ入力フォームを作成します。

``` html
<!DOCTYPE html>
<html>
<head>
    <title>Register Employee</title>
</head>
<body>
    <h1>Register Employee</h1>
    <form action="registerEmployee" method="post">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required><br>
        <label for="position">Position:</label>
        <input type="text" id="position" name="position" required><br>
        <input type="submit" value="Register">
    </form>
</body>
</html>
```
### サーブレットの作成
次に、フォームデータを受け取り、データベースに保存するサーブレットを作成します。

```java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/registerEmployee")
public class RegisterEmployeeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String position = request.getParameter("position");

        EmployeeDao employeeDao = new EmployeeDao();
        Employee employee = new Employee();
        employee.setName(name);
        employee.setPosition(position);
        employeeDao.addEmployee(employee);

        response.sendRedirect("employeeList");
    }
}
```
### DAOの追加メソッド
DAOにデータを追加するメソッドを実装します。

```java
public class EmployeeDao {
    // 既存のメソッド...

    public void addEmployee(Employee employee) {
        // データベース接続とデータ挿入のロジック
    }
}
```
## 4. HTMLとプログラムの連携
HTMLとJavaプログラムを連携させることで、ユーザーインターフェースとビジネスロジックを結びつけます。

### フォームデータの送信
HTMLフォームからデータを送信し、サーブレットで受け取ります。フォームのaction属性には、データを処理するサーブレットのURLを指定します。method属性には、postを指定してデータを送信します。

### サーブレットでのデータ処理
サーブレットでは、doPostメソッドをオーバーライドして、受け取ったデータを処理します。HttpServletRequestオブジェクトを使用して、フォームデータを取得します。

### データベース操作
DAOパターンを使用して、データベース操作を抽象化します。データベース接続、データ取得、データ挿入などの操作をDAOクラスにまとめることで、ビジネスロジックとデータアクセスロジックを分離します。

### 結果の表示
処理が完了したら、結果をJSPページに表示します。例えば、データの登録が成功した場合、登録成功メッセージを表示するページにリダイレクトします。

以上が、実践的な開発におけるプロジェクトに必要な技術の統合、Web画面にデータを表示、登録したデータの処理、およびHTMLとプログラムの連携についての解説です。これらの手順を実践し、実際のプロジェクトに適用することで、より高度なWebアプリケーションを開発するスキルを身につけましょう。