Struts+Hibernate+Spring组合简单范例("Struts、Hibernate与Spring整合实战简易教程")

原创
ithorizon 6个月前 (10-20) 阅读数 16 #后端开发

Struts、Hibernate与Spring整合实战简易教程

一、引言

Struts、Hibernate和Spring是Java Web开发中非常流行的三个框架,它们分别解决了Web开发中的不同问题。Struts负责Web层的请求处理,Hibernate负责数据持久化,而Spring则负责业务逻辑和事务管理。本文将通过一个简洁的例子,介绍怎样将这三个框架整合在一起,实现一个完整的Java Web应用程序。

二、环境准备

在起初整合之前,需要确保以下环境已经准备好:

  • Java开发工具包(JDK)1.8或以上版本
  • Eclipse或IntelliJ IDEA等集成开发环境
  • Apache Struts 2.5.18
  • Hibernate 5.2.10
  • Spring 5.0.3.RELEASE
  • MySQL数据库

三、创建项目

在Eclipse或IntelliJ IDEA中创建一个Dynamic Web Project,并添加以下依靠项到项目的lib目录中:

  • struts2-core-2.5.18.jar
  • hibernate-core-5.2.10.Final.jar
  • spring-core-5.0.3.RELEASE.jar
  • spring-web-5.0.3.RELEASE.jar
  • spring-orm-5.0.3.RELEASE.jar
  • mysql-connector-java-5.1.47.jar

四、整合步骤

4.1 配置Struts2

首先,在项目的WEB-INF目录下创建struts.xml文件,并添加以下内容:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"

"http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

<package name="default" extends="struts-default">

<action name="userAction" class="com.example.action.UserAction">

<result name="success">/success.jsp</result>

</action>

</package>

</struts>

4.2 配置Hibernate

在项目的src目录下创建hibernate.cfg.xml文件,并添加以下内容:

<?xml version='1.0' encoding='utf-8'?>

<!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="connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="connection.url">jdbc:mysql://localhost:3306/your_database</property>

<property name="connection.username">root</property>

<property name="connection.password">your_password</property>

<property name="connection.pool_size">1</property>

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="show_sql">true</property>

<property name="hibernate.temp.dir">java.io.tmpdir</property>

<mapping resource="com/example/domain/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

4.3 配置Spring

在项目的src目录下创建applicationContext.xml文件,并添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd">

<context:component-scan base-package="com.example"/>

<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/your_database"/>

<property name="username" value="root"/>

<property name="password" value="your_password"/>

</bean>

<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>

</props>

</property>

<property name="mappingResources">

<list>

<value>com/example/domain/User.hbm.xml</value>

</list>

</property>

</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

4.4 配置Web.xml

在项目的WEB-INF目录下的web.xml文件中添加以下内容:

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

<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>

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

五、创建实体类和映射文件

创建一个名为User的实体类,位于com.example.domain包下,并添加以下内容:

package com.example.domain;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

@Entity

public class User {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Integer id;

private String username;

private String password;

// 省略getter和setter方法

}

创建User.hbm.xml映射文件,位于com.example.domain包下,并添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="com.example.domain.User" table="user">

<id name="id" column="id">

<generator class="native"/>

</id>

<property name="username" column="username"/>

<property name="password" column="password"/>

</class>

</hibernate-mapping>

六、创建Action类

创建一个名为UserAction的Action类,位于com.example.action包下,并添加以下内容:

package com.example.action;

import com.example.domain.User;

import com.example.service.UserService;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

private UserService userService;

private User user;

public String execute() {

userService.saveUser(user);

return SUCCESS;

}

// 省略getter和setter方法

}

七、创建Service类

创建一个名为UserService的Service类,位于com.example.service包下,并添加以下内容:

package com.example.service;

import com.example.domain.User;

public interface UserService {

void saveUser(User user);

}

创建UserService的实现类,名为UserServiceImpl,并添加以下内容:

package com.example.service.impl;

import com.example.domain.User;

import com.example.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.orm.hibernate5.HibernateTemplate;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

@Service

public class UserServiceImpl implements UserService {

@Autowired

private HibernateTemplate hibernateTemplate;

@Override

@Transactional

public void saveUser(User user) {

hibernateTemplate.save(user);

}

}

八、测试程序

完成上述步骤后,部署项目到Tomcat服务器,并启动服务器。在浏览器中访问http://localhost:8080/your_project/userAction.action,并传入以下参数:

  • username: admin
  • password: 123456

如果胜利保存数据到数据库,并且页面跳转到success.jsp,则即整合胜利。

九、总结

本文通过一个简洁的例子,介绍了怎样将Struts、Hibernate和Spring三个框架整合在一起。在实际项目中,这三个框架的整合可以减成本时间开发快速,降低耦合度,允许项目更加易于维护。当然,本文只是一个入门级的教程,还有很多高级特性等待读者去探索。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门