環境準備
- JDK 1.8+、Maven 3.6+、Tomcat 9、MySQL 5.7+、IDE (IntelliJ IDEA / Eclipse)
步驟 1:建立 Maven Web 專案
mvn archetype:generate -DgroupId=com.example -DartifactId=ssh-demo -DarchetypeArtifactId=maven-archetype-webapp
步驟 2:pom.xml 核心依賴 (版本統一管理)
<properties>
<spring.version>5.3.30</spring.version>
<struts.version>2.5.30</struts.version>
<hibernate.version>5.6.15.Final</hibernate.version>
<mysql.version>8.0.33</mysql.version>
</properties>
<dependencies>
<!-- Spring -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency>
<!-- Struts2 -->
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>${struts.version}</version></dependency>
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-spring-plugin</artifactId><version>${struts.version}</version></dependency>
<!-- Hibernate -->
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>${hibernate.version}</version></dependency>
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>${hibernate.version}</version></dependency>
<!-- MySQL & Pool -->
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>${mysql.version}</version></dependency>
<dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>5.0.1</version></dependency>
<!-- Logging -->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>2.0.9</version></dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.4.11</version></dependency>
</dependencies>
步驟 3:配置檔案
web.xml:ContextLoaderListener、StrutsPrepareAndExecuteFilter、CharacterEncodingFilter。
applicationContext.xml:dataSource、sessionFactory、txManager、component-scan、tx:annotation-driven。
struts.xml:package extends struts-default、action 映射。
hibernate.cfg.xml 或在 Spring 中以 LocalSessionFactoryBean 設定方言、映射包。
步驟 4:程式碼結構
com.example
├── entity // @Entity 實體類
├── dao // @Repository 介面 + 實現 (HibernateTemplate / SessionFactory)
├── service // @Service 介面 + 實現 (@Transactional)
├── action // @Controller / 繼承 ActionSupport
└── util // 工具類
步驟 5:整合測試
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class UserServiceTest {
@Autowired UserService userService;
@Test public void testSave() { userService.register(new User(...)); }
}
常見坑點
- 版本衝突:
mvn dependency:tree 檢查並 <exclusion>。
struts.xml 未放在 src/main/resources 導致找不到。
- 資料庫編碼
utf8mb4、JDBC URL characterEncoding=UTF-8。
- Tomcat 發布時勾選
Maven Dependencies 部署至 WEB-INF/lib。