引言
SSH框架(Struts2 + Spring + Hibernate)是一种流行的Java企业级开发框架,它将Web开发过程中的多个环节(如表现层、业务逻辑层、数据访问层)进行了分离,提高了开发效率和代码的可维护性。本文将从零开始,详细讲解SSH框架的搭建过程,帮助读者轻松掌握SSH框架的搭建技巧。
1. 环境准备
在开始搭建SSH框架之前,我们需要准备以下环境:
- Java开发环境:JDK 1.7及以上版本
- IDE:Eclipse或IntelliJ IDEA
- 数据库:MySQL 5.5及以上版本
- SSH框架相关库:Struts2、Spring、Hibernate、MyBatis等
2. 创建Maven项目
- 打开IDE,创建一个新的Maven项目。
- 在pom.xml文件中,添加以下依赖:
<dependencies>
<!-- Struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.16</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.5.7.Final</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
3. 配置Web.xml
在Web.xml文件中,配置Struts2和Spring的过滤器。
<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>spring</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>spring</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4. 配置Spring配置文件
在applicationContext.xml文件中,配置数据源、事务管理器、SessionFactory等。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 数据源配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/your_database"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!-- 事务管理器配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- SessionFactory配置 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="packagesToScan" value="com.yourpackage.model"/>
</bean>
</beans>
5. 创建Struts2配置文件
在struts.xml文件中,配置Action和Result。
<struts>
<package name="default" extends="struts-default">
<action name="yourAction" class="com.yourpackage.action.YourAction">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
6. 创建Hibernate配置文件
在hibernate.cfg.xml文件中,配置SessionFactory。
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_database</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
</session-factory>
</hibernate-configuration>
7. 编写Action类
在Action类中,实现业务逻辑。
package com.yourpackage.action;
import com.opensymphony.xwork2.ActionSupport;
public class YourAction extends ActionSupport {
// 定义业务逻辑代码
}
8. 编写Model类
在Model类中,定义实体类。
package com.yourpackage.model;
public class YourModel {
// 定义实体属性
}
9. 编写DAO类
在DAO类中,实现数据访问逻辑。
package com.yourpackage.dao;
import com.yourpackage.model.YourModel;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class YourDao {
@Autowired
private SessionFactory sessionFactory;
public void save(YourModel model) {
Session session = sessionFactory.getCurrentSession();
session.save(model);
}
}
10. 编写Service类
在Service类中,实现业务逻辑。
package com.yourpackage.service;
import com.yourpackage.dao.YourDao;
import com.yourpackage.model.YourModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class YourService {
@Autowired
private YourDao yourDao;
public void save(YourModel model) {
yourDao.save(model);
}
}
11. 编写Controller类
在Controller类中,实现控制器逻辑。
package com.yourpackage.controller;
import com.yourpackage.service.YourService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class YourController {
@Autowired
private YourService yourService;
@RequestMapping("/save")
@ResponseBody
public String save(YourModel model) {
yourService.save(model);
return "Success";
}
}
12. 编写JSP页面
在JSP页面中,实现用户界面。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>SSH框架搭建示例</title>
</head>
<body>
<form action="save" method="post">
<input type="text" name="name" />
<input type="submit" value="保存" />
</form>
</body>
</html>
总结
通过以上步骤,我们成功搭建了一个SSH框架。在实际开发过程中,可以根据需求对框架进行扩展和优化。希望本文能帮助您轻松掌握SSH框架的搭建技巧。
