SSMフレームワークを活用した学生団体管理システムの実装

概要

本システムは、Spring、Spring MVC、MyBatis(SSM)の組み合わせにより構築されたウェブアプリケーションです。データベースとの接続はMyBatisが担当し、ビジネスロジックとコントローラー処理はSpringとSpring MVCが連携して処理します。前端にはBootstrapを使用しており、レスポンシブデザインに対応しています。

システム機能

学校における団体活動の登録・選択を効率化するための管理システムです。主な機能は以下の通りです:

  • 団体情報の公開表示(名称、説明、開講学期、定員など)
  • 学生による団体への申込み機能
  • 管理者用ダッシュボード:団体管理、参加者一覧、教員管理、統計情報の確認
  • 学年または学期単位での区分(オプション)
  • 参加状況の可視化(棒グラフや円グラフによる統計表示)

データベース設計

シンプルな設計を採用し、外部キーは使用せず、冗長性を許容することで参照整合性の制約を緩和しています。

  • students:学生情報(学生ID、名前、所属など)
  • courses:団体コース情報(コースID、名称、開講学期、単位数、所属団体、定員、現在の申込人数)
  • admins:管理者アカウント(ログイン情報、権限レベル)
  • enrollments:申込履歴(学生ID、コースID、申込日時)

実行環境と設定

Java 8以上、Maven 3.6+、Tomcat 9、MySQL 8.0 を想定しています。プロジェクトのビルドと起動にはMavenプラグインを適切に設定する必要があります。

1. Mavenビルドエラー対応(web.xmlが見つからない場合)

デフォルトではMavenはsrc/main/webappをWebリソースディレクトリとして扱いますが、この中にweb.xmlがないとエラーが発生します。以下のように設定することで、別の場所に配置してもビルド可能になります。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.3.0</version>
      <configuration>
        <webResources>
          <resource>
            <directory>${basedir}/web</directory>
          </resource>
        </webResources>
      </configuration>
    </plugin>

    <plugin>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <version>10.0.14</version>
      <configuration>
        <webAppSourceDirectory>${basedir}/web</webAppSourceDirectory>
        <httpConnector>
          <port>8155</port>
        </httpConnector>
        <stopKey>shutdown</stopKey>
        <stopPort>9966</stopPort>
      </configuration>
    </plugin>
  </plugins>
</build>

2. Spring MVCによる静的リソースの配信

静的ファイル(CSS、JavaScript、画像)の配信を正しく行うためには、以下の設定が必要です。

<mvc:annotation-driven />
<mvc:default-servlet-handler />

これにより、/resources/パス経由でwebフォルダ内の静的リソースにアクセス可能になります。例: - /resources/css/style.css - /resources/js/app.js - /resources/images/logo.png

3. Welcomeページの設定(Servletによるマッピング)

初期画面としてindexページを表示させるために、web.xmlに以下を追加します。

<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/index</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>*.mvc</url-pattern>
</servlet-mapping>

<welcome-file-list>
  <welcome-file>index</welcome-file>
</welcome-file-list>

この設定により、ブラウザのトップページにアクセスした際に/indexが自動的に呼び出され、初期画面が表示されます。

コード構造の課題

開発期間が短く、モジュール分割や命名規則の統一が不十分な点があります。特にコントローラーとサービス層の責務分担が曖昧であり、再利用性や保守性に課題があります。今後は依存性注入の最適化とインタフェース設計の徹底を進める予定です。

参考コード

GitHubリポジトリより入手可能です:
https://github.com/verlen/webBigProject

タグ: Spring Spring MVC MyBatis Maven MySQL

9月7日 00:54 投稿