首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

畢設實戰:MyEclipse 10 快速搭建 SSH (Struts2 + Spring + Hibernate) 整合環境

     編輯:Java 綜合教學

項目初始化

  1. 新建 Web Project,項目名如 EmploymentSystem
  2. 確保 Target Runtime 指向已配置的 Tomcat 7/8
  3. 勾選「Generate web.xml deployment descriptor」(Servlet 2.5/3.0 均可)

MyEclipse 可視化整合向導

MyEclipse 提供強大的 Capabilities 機制,通過右鍵項目 → MyEclipse → Add * Capabilities 即可自動導入 JAR、生成配置文件、註冊監聽器。

Step 1:添加 Spring

  1. 右鍵項目 → MyEclipse → Add Spring Capabilities
  2. 勾選所需模塊:Core, Beans, Context, AOP, JDBC, ORM, Transaction, Web, Web MVC
  3. 版本選擇:Spring 3.2.x / 4.3.x (根據 JDK 版本)
  4. Finish → 項目結構出現 S 標識,applicationContext.xml 自動生成於 src/
添加 Spring 向導1 添加 Spring 向導2 Spring 添加後目錄

Step 2:添加 Hibernate

  1. 右鍵 → Add Hibernate Capabilities
  2. 數據庫連接:選擇已配置的 JDBC Driver (MySQL/Oracle/SQL Server)
  3. 勾選「Create Hibernate configuration file (hibernate.cfg.xml)」
  4. 勾選「Create SessionFactory Spring bean」實現 Spring 管理 Hibernate
  5. Finish → 注意:新版 MyEclipse 可能不再生成獨立 hibernate.cfg.xml,改為在 applicationContext.xml 中配置 LocalSessionFactoryBean
Hibernate 向導1 Hibernate 向導2 Hibernate 向導3 Hibernate 向導4 Hibernate 添加後目錄

Step 3:添加 Struts 2

  1. 右鍵 → Add Struts Capabilities
  2. 版本選 Struts 2.3.x / 2.5.x
  3. 勾選「Integrate with Spring」自動添加 StrutsSpringPlugin
  4. Finish → 生成 struts.xml 於 src/,web.xml 自動註冊 StrutsPrepareAndExecuteFilter
Struts 向導1 Struts 向導2 Struts 添加後目錄

關鍵配置文件檢查與補全

web.xml - 核心監聽器與過濾器

<web-app>
  <!-- Spring 容器啟動監聽器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <!-- Struts2 核心過濾器 -->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 字符編碼過濾器 (必須在最前) -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
web.xml 配置

applicationContext.xml - Spring 核心配置

<beans xmlns="https://www.springframework.org/schema/beans"
       xmlns:context="https://www.springframework.org/schema/context"
       xmlns:tx="https://www.springframework.org/schema/tx">

  <!-- 掃描 Service、DAO、Action -->
  <context:component-scan base-package="com.employment"/>

  <!-- 數據源 (C3P0/Druid) -->
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/employment?useUnicode=true&characterEncoding=utf8"/>
    <property name="user" value="root"/>
    <property name="password" value="123456"/>
  </bean>

  <!-- SessionFactory -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="packagesToScan" value="com.employment.entity"/>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.hbm2ddl.auto">update</prop>
      </props>
    </property>
  </bean>

  <!-- 事務管理器 -->
  <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
  </bean>
  <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

struts.xml - Struts 2 配置

<struts>
  <constant name="struts.devMode" value="true"/>
  <constant name="struts.ui.theme" value="simple"/>
  <package name="default" namespace="/" extends="struts-default">
    <!-- Action 由 Spring 管理,class 指向 Bean ID -->
    <action name="user_*" class="userAction" method="{1}">
      <result name="success">/WEB-INF/jsp/user/list.jsp</result>
      <result name="input">/WEB-INF/jsp/user/form.jsp</result>
    </action>
  </package>
</struts>

啟動驗證

  1. 右鍵項目 → Run As → Run on Server 選擇 Tomcat
  2. 控制台觀察 Spring 容器啟動日志,確認 Bean 創建無誤
  3. 瀏覽器訪問 https://localhost:8080/EmploymentSystem/
  4. 見到歡迎頁或預期 JSP,表示 SSH 整合成功
Tomcat 啟動 瀏覽器訪問成功

常見坑點避雷指南

現象原因解決
ClassNotFound: ContextLoaderListenerspring-web.jar 缺失檢查 Spring Capabilities 勾選 Web 模塊
No SessionFactory foundHibernate 未與 Spring 關聯重新 Add Hibernate Capabilities 勾選「Create SessionFactory Spring bean」
Struts 無法找到 Action Beanstruts.xml 中 class 寫全限定類名改為 Spring Bean ID (如 userAction),確保 @Component("userAction")
中文亂碼缺少 CharacterEncodingFilter 或順序錯確保 encodingFilter 在 filter-mapping 中最前
事務不生效缺少 @Transactional 或 tx:annotation-drivenService 方法加 @Transactional,XML 開啟注解驅動

後續擴展建議

  • 引入 Maven/Gradle 管理依賴,替代 MyEclipse 內置庫
  • 使用 Spring Boot 重構,簡化配置,內嵌容器
  • DAO 層遷移至 MyBatis 或 Spring Data JPA
  • 前端分離:Struts 2/JSP → Vue/React + REST API

雖然 SSH 是經典框架組合,但現代 Java Web 開發已全面轉向 Spring Boot + 微服務/單體分層架構。本文旨在記錄歷史技術棧的整合細節,供維護舊項目或教學參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved