概要
本システムは、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