YMP (Yamate Platform) 是一款輕量級 Java 開發框架,支援 MVC、緩存、數據存取等核心功能。本文記錄在 IntelliJ IDEA + Maven 環境下,從零建立 Web 專案並整合 YMP 框架的完整步驟。
maven-archetype-webappGroupId、ArtifactId、Version
ymptest/
├── pom.xml
└── src/
└── main/
├── java/
├── resources/
└── webapp/
├── WEB-INF/
│ └── web.xml
└── index.jsp
<dependencies>
<!-- YMP Web MVC 核心 -->
<dependency>
<groupId>net.ymate</groupId>
<artifactId>ymate-platform-webmvc</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!-- YMP 緩存模組 (可選) -->
<dependency>
<groupId>net.ymate.platform</groupId>
<artifactId>ymate-platform-cache</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!-- Servlet API (provided 範圍) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
4.0.1
provided
</dependency>
</dependencies>
IDEA 右側 Maven 面板 → Reload All Maven Projects,確認依賴下載成功。
Maven archetype 生成的 web.xml 為 2.3 版本,需升級至 2.5+ 以支援現代 Servlet 特性:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
xmlns="https://java.sun.com/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/javaee
https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 1. YMP 初始化監聽器 -->
<listener>
<listener-class>net.ymate.platform.webmvc.support.WebAppEventListener</listener-class>
</listener>
<!-- 2. 請求分發 Filter (推薦) -->
<filter>
<filter-name>DispatchFilter</filter-name>
<filter-class>net.ymate.platform.webmvc.support.DispatchFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DispatchFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 3. 或者使用 Servlet 方式 (二選一) -->
<!--
<servlet>
<servlet-name>DispatchServlet</servlet-name>
<servlet-class>net.ymate.platform.webmvc.support.DispatchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DispatchServlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
-->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
| 組件 | 類別 | 作用 |
|---|---|---|
| Listener | WebAppEventListener | 框架啟動初始化:載入配置、掃描組件、初始化核心服務 |
| Filter | DispatchFilter | 攔截所有請求,委託給 YMP MVC 處理器分發 (推薦) |
| Servlet | DispatchServlet | 替代方案,僅處理特定路徑前綴 |
位置:src/main/resources/ymp-conf.properties (類路徑根目錄)
# 開發模式:啟用詳細日誌、熱重載等 ymp.dev_mode=true # 自動掃描包路徑 (多個用逗號分隔) ymp.autoscan_packages=com.example.controller,com.example.service # 數據源配置 (範例) # jdbc.driverClassName=com.mysql.cj.jdbc.Driver # jdbc.url=jdbc:mysql://localhost:3306/ymptest?useSSL=false # jdbc.username=root # jdbc.password=123456 # 緩存配置 (可選) # cache.provider=ehcache # cache.config=ehcache.xml
ymp.dev_mode:開發模式開關,生產環境務必設為 falseymp.autoscan_packages:組件掃描基礎包,控制器、服務、實體等需在此包下package com.example.controller;
import net.ymate.platform.webmvc.annotation.Controller;
import net.ymate.platform.webmvc.annotation.RequestMapping;
import net.ymate.platform.webmvc.view.View;
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping("/world")
public View world() {
return new View("/hello.jsp").addVariable("message", "YMP 整合成功!");
}
}
src/main/webapp/hello.jsp:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<h1>${message}</h1>
</body>
</html>
https://localhost:8080/hello/world| 問題 | 可能原因 | 解決方案 |
|---|---|---|
| ClassNotFoundException: WebAppEventListener | YMP 依賴未正確導入 | 檢查 pom.xml、Maven Reload、IDEA Invalidate Caches |
| 404 Not Found | URL 模式匹配問題 | 檢查 DispatchFilter url-pattern、Controller 請求映射路徑 |
| 掃描不到 Controller | 包路徑不在 autoscan_packages 下 | 調整 ymp.autoscan_packages 或移動 Controller 位置 |
| 配置文件讀取失敗 | 文件位置錯誤 | 確認 ymp-conf.properties 在 src/main/resources 根目錄 |
本文完整記錄了 Maven Web 專案整合 YMP 框架的標準流程:建立專案 → 添加依賴 → 配置 web.xml → 添加核心配置 → 驗證控制器。掌握這套流程,可快速搭建基於 YMP 的企業級應用基線專案。