Java+SSM+JSPによる大学院入試情報検索システムのVue実装

システム技術スタック

バックエンドフレームワークSpringBoot

Spring BootはSpringフレームワークを基盤とした本番環境対応のスタンドアロンアプリケーション構築フレームワークです。開発プロセスを簡素化し、すぐに使用可能な機能を提供しながら、Springの強力な機能性を維持します。

自動設定と「設定より規約」の原則により、定型コードの記述量を大幅に削減します。組み込みWebサーバー(Tomcat、Undertow、Jetty)を内蔵しており、実行可能JARファイルとしてのパッケージ化を可能にします。Actuatorによるランタイム監視機能や、各種機能モジュールとの容易な統合も特徴です。

フロントエンドフレームワークVue

Vue.jsはユーザーインターフェースとシングルページアプリケーション構築のためのJavaScriptフレームワークです。反応性データバインディングシステムを中核とし、ビューとデータの変更管理を効率化します。

コンポーネントベースの開発モデルにより、アプリケーションを独立した小さな部品に分割し、組み立てることができます。これによりコードの再利用性が向上し、保守性とテスト容易性が高まります。活発なコミュニティと豊富なエコシステムも強みです。

主要実装コード

アプリケーション起動クラス

package com.graduation;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
@MapperScan(basePackages = {"com.graduation.mapper"})
public class PostgraduateApplication extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(PostgraduateApplication.class, args);
    }
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(PostgraduateApplication.class);
    }
}

ユーザー管理コントローラー

package com.graduation.controller;

import java.util.Date;
import java.util.Map;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.graduation.entity.UserEntity;
import com.graduation.service.UserService;
import com.graduation.service.AuthTokenService;
import com.graduation.utils.PageResult;
import com.graduation.utils.ResponseResult;
import com.graduation.utils.QueryConditionBuilder;

@RestController
@RequestMapping("/api/user")
public class UserManagementController {
    @Autowired
    private UserService userService;

    @Autowired
    private AuthTokenService authTokenService;
    
    @PostMapping("/signin")
    public ResponseResult userLogin(@RequestParam String account, 
                                   @RequestParam String password, 
                                   HttpServletRequest request) {
        UserEntity user = userService.selectOne(
            new EntityWrapper<UserEntity>().eq("account", account));
        if(user == null || !user.getPassword().equals(password)) {
            return ResponseResult.error("アカウントまたはパスワードが正しくありません");
        }
        
        String token = authTokenService.createToken(user.getId(), account, "user", "一般ユーザー");
        return ResponseResult.success().put("token", token);
    }

    @PostMapping("/signup")
    public ResponseResult userRegistration(@RequestBody UserEntity newUser) {
        UserEntity existingUser = userService.selectOne(
            new EntityWrapper<UserEntity>().eq("account", newUser.getAccount()));
        if(existingUser != null) {
            return ResponseResult.error("登録済みのユーザーが存在します");
        }
        newUser.setId(System.currentTimeMillis());
        userService.insert(newUser);
        return ResponseResult.success();
    }

    @GetMapping("/page")
    public ResponseResult getUserPage(@RequestParam Map params, 
                                     UserEntity userFilter,
                                     HttpServletRequest request) {
        EntityWrapper<UserEntity> wrapper = new EntityWrapper<UserEntity>();
        PageResult page = userService.queryPage(params, 
            QueryConditionBuilder.sort(
                QueryConditionBuilder.range(
                    QueryConditionBuilder.likeOrEqual(wrapper, userFilter), params), params));
        return ResponseResult.success().put("data", page);
    }

    @PutMapping("/update")
    @Transactional
    public ResponseResult updateUser(@RequestBody UserEntity user, 
                                   HttpServletRequest request) {
        if(userService.selectCount(
            new EntityWrapper<UserEntity>()
                .ne("id", user.getId())
                .eq("account", user.getAccount())) > 0) {
            return ResponseResult.error("ユーザーアカウントが既に存在します");
        }
        userService.updateById(user);
        return ResponseResult.success();
    }

    @DeleteMapping("/remove")
    public ResponseResult removeUsers(@RequestBody Long[] userIds) {
        userService.deleteBatchIds(Arrays.asList(userIds));
        return ResponseResult.success();
    }
}

システムテスト

テスト目的

システムテストは品質保証の最終工程として、ユーザー体験向上と潜在的問題の発見を目的とします。多角的なテストシナリオを通じてシステムの欠陥を特定し、修正を行います。要件仕様書との適合性確認と、ユーザー視点での使用性検証が主要目標です。

機能テスト

ブラックボックステスト手法を採用し、境界値分析、必須入力項目検証、操作フロー検証などを実施します。テストケースに基づく体系的な検証により、機能モジュールの正確性を確認します。

テスト結論

包括的なテスト実施により、システムの機能要件と性能要件が設計要求を満たしていることを確認しました。ユーザー操作の視点から検証を重ね、システムの完成度と使用性を高めています。

タグ: Java SpringBoot vue.js SSM JSP

6月12日 21:20 投稿