引言
SSH(Struts2 + Spring + Hibernate)框架是Java企业级开发中常用的三层架构框架组合。它将Web层、业务层和数据访问层分离,使得项目结构清晰,易于维护和扩展。本文将通过对SSH框架的深入解析,结合实战案例,帮助读者轻松上手实例项目。
SSH框架概述
1. Struts2
Struts2是SSH框架中的Web层框架,负责处理用户的请求和响应。它采用MVC(Model-View-Controller)模式,将业务逻辑与表现层分离,使得开发者可以专注于业务逻辑的实现。
2. Spring
Spring是SSH框架中的业务层框架,负责业务逻辑的实现。它提供了丰富的企业级服务,如事务管理、数据源管理等,使得业务层代码更加简洁易读。
3. Hibernate
Hibernate是SSH框架中的数据访问层框架,负责数据持久化。它采用ORM(Object-Relational Mapping)技术,将Java对象映射到数据库表,简化了数据库操作。
实战案例解析
1. 项目需求
假设我们需要开发一个简单的在线书店项目,包括图书管理、用户管理、订单管理等模块。
2. 技术选型
- Web服务器:Tomcat 7
- 开发工具:Eclipse
- 数据库:MySQL
- SSH框架:Struts2 + Spring + Hibernate
3. 项目结构
src
│
├── com
│ └── demo
│ ├── action
│ │ ├── BookAction.java
│ │ ├── UserAction.java
│ │ └── OrderAction.java
│ ├── dao
│ │ ├── BookDao.java
│ │ ├── UserDao.java
│ │ └── OrderDao.java
│ ├── service
│ │ ├── BookService.java
│ │ ├── UserService.java
│ │ └── OrderService.java
│ ├── model
│ │ ├── Book.java
│ │ ├── User.java
│ │ └── Order.java
│ └── utils
│ └── DBUtil.java
│
├── web
│ ├── WEB-INF
│ │ ├── web.xml
│ │ └── views
│ │ ├── book.jsp
│ │ ├── user.jsp
│ │ └── order.jsp
│ └── index.jsp
│
└── pom.xml
4. 代码示例
4.1 Struts2配置
在src/web/WEB-INF/web.xml文件中配置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>
4.2 Spring配置
在src/web/WEB-INF/applicationContext.xml文件中配置Spring:
<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.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bookstore"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!-- Hibernate配置 -->
<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.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="packagesToScan" value="com.demo.model"/>
</bean>
<!-- Service层配置 -->
<bean id="bookService" class="com.demo.service.BookService">
<property name="bookDao" ref="bookDao"/>
</bean>
<bean id="userService" class="com.demo.service.UserService">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="orderService" class="com.demo.service.OrderService">
<property name="orderDao" ref="orderDao"/>
</bean>
</beans>
4.3 Action层示例
以下是一个BookAction类的示例:
package com.demo.action;
import com.demo.model.Book;
import com.demo.service.BookService;
import com.opensymphony.xwork2.ActionSupport;
public class BookAction extends ActionSupport {
private BookService bookService;
public String list() {
List<Book> books = bookService.findAll();
// 将查询结果放入request域中
request.setAttribute("books", books);
return "list";
}
// 省略其他方法...
}
4.4 Service层示例
以下是一个BookService类的示例:
package com.demo.service;
import com.demo.dao.BookDao;
import com.demo.model.Book;
import java.util.List;
public class BookService {
private BookDao bookDao;
public List<Book> findAll() {
return bookDao.findAll();
}
// 省略其他方法...
}
4.5 DAO层示例
以下是一个BookDao类的示例:
package com.demo.dao;
import com.demo.model.Book;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class BookDao {
@Autowired
private SessionFactory sessionFactory;
public List<Book> findAll() {
Session session = sessionFactory.getCurrentSession();
return session.createQuery("from Book").list();
}
// 省略其他方法...
}
总结
通过本文的实战案例解析,读者应该对SSH框架有了更深入的了解。在实际开发过程中,SSH框架可以帮助我们快速搭建企业级应用,提高开发效率。希望本文能对您的SSH框架学习有所帮助。
