下面是“详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)”的完整攻略,并列举两条示例。
SSH框架整合方法详解
准备工作
首先,你需要准备好以下环境和工具:
- JDK 1.8+,建议使用最新的版本;
- Eclipse、IntelliJ IDEA等Java IDE;
- Maven3+,用于项目的构建;
- Tomcat9+,用于本地服务器环境。
新建项目
使用IDE新建一个Maven项目,然后添加如下依赖:
<dependencies>
<!-- Struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>
<!-- Spring Framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.21.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
</dependencies>
配置Struts2
- 在项目的
/src/main/resources/
目录下新建struts.xml
文件。 - 在
struts.xml
中添加一个<package>
元素,用于配置Action。 - 在
struts.xml
中添加<constant>
元素,用于启用Struts2的Spring支持。
示例:
<struts>
<constant name="struts.objectFactory" value="spring" />
<package name="default" extends="struts-default">
<action name="login" class="com.example.LoginAction">
<result name="success">/login.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
配置Spring
- 在项目的
/src/main/resources/
目录下新建applicationContext.xml
文件。 - 在
applicationContext.xml
中添加<context:component-scan>
元素,用于扫描Spring管理的Bean。 - 添加
<mvc:annotation-driven />
元素和<mvc:resources>
元素,分别用于启用Spring的MVC支持和配置静态资源路径。
示例:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.example" />
<mvc:annotation-driven />
<mvc:resources location="/css/" mapping="/css/**" />
<mvc:resources location="/js/" mapping="/js/**" />
<mvc:resources location="/images/" mapping="/images/**" />
</beans>
配置Hibernate
- 在项目的
/src/main/resources/
目录下新建hibernate.cfg.xml
文件,用于配置Hibernate的数据源和其他配置。 - 在
hibernate.cfg.xml
中添加<mapping>
元素,用于引入实体类的映射文件。
示例:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testdb</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="com/example/Entity.hbm.xml" />
</session-factory>
</hibernate-configuration>
整合SSH框架
- 在
applicationContext.xml
中添加Hibernate的相关配置(如SessionFactory、事务管理器等)。 - 在Action中注入Service,然后在Service中注入DAO。
示例:
<!-- Hibernate相关配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<property name="packagesToScan" value="com.example"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:annotation-driven />
<!-- Service -->
<bean id="userService" class="com.example.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
<!-- DAO -->
<bean id="userDaoImpl" class="com.example.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
public class UserAction extends ActionSupport {
@Autowired
private UserService userService;
// Action方法
}
public class UserService {
@Autowired
private UserDao userDao;
// Service方法
}
public class UserDaoImpl implements UserDao {
@Autowired
private SessionFactory sessionFactory;
// DAO方法
}
示例1:登录功能
- 在
struts.xml
中增加一个Action,用于处理用户登录请求。 - 在Action中调用Service方法验证用户登录信息,并返回登录结果。
- 在Action中判断登录结果,根据不同结果返回不同页面。
<package name="default" extends="struts-default">
<action name="login" class="com.example.UserAction" method="login">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
public class UserAction extends ActionSupport {
private UserService userService;
private String username;
private String password;
// 省略getter和setter
public String login() {
boolean loginResult = userService.login(username, password);
if (loginResult) {
return SUCCESS;
} else {
return ERROR;
}
}
}
public class UserService {
private UserDao userDao;
@Transactional
public boolean login(String username, String password) {
User user = userDao.findUserByUsername(username);
if(user != null && user.getPassword().equals(password)) {
return true;
} else {
return false;
}
}
}
示例2:列表查询
- 在
struts.xml
中增加一个Action,用于处理列表查询请求。 - 在Action中调用Service方法查询数据,并返回查询结果。
- 在JSP页面中显示查询结果。
<package name="default" extends="struts-default">
<action name="list" class="com.example.UserAction" method="list">
<result name="success">/list.jsp</result>
</action>
</package>
public class UserAction extends ActionSupport {
private UserService userService;
private List<User> userList;
// 省略getter和setter
public String list() {
userList = userService.getUserList();
return SUCCESS;
}
}
public class UserService {
private UserDao userDao;
public List<User> getUserList() {
return userDao.findUserList();
}
}
<table>
<thead>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<s:iterator value="userList">
<tr>
<td><s:property value="id" /></td>
<td><s:property value="name" /></td>
<td><s:property value="age" /></td>
</tr>
</s:iterator>
</tbody>
</table>
至此,完整的SSH框架整合方法讲解完毕。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate) - Python技术站