SSH框架搭建之整合Spring、Struts2、Hibernate

一、基础环境

1、Windows10、Java17、Maven3.8.8、Tomcat9.0.76、IDEA2022.3.3

2、已完成Maven项目的创建

二、框架版本

struts2:2.5.31

spring:5.3.27

hibernate:5.6.15.Final

三、通过Maven集成SSH框架所需的依赖

1、添加组件版本参数,代码如下:

<properties>

  <spring.version>5.3.27</spring.version>

  <struts2.version>2.5.31</struts2.version>

  <log4j2.version>2.20.0</log4j2.version>

  <hibernate.version>5.6.15.Final</hibernate.version>

  <hikariCP.version>5.0.1</hikariCP.version>

  <mysqldriver.version>8.0.33</mysqldriver.version>

</properties>

 

2、添加依赖管理,通过dependencyManagement管理依赖,子项目用到的依赖将继承于父项目依赖对应的版本,代码如下:

<!-- 管理依赖依赖信息 -->

<dependencyManagement>

  <dependencies>

    <!-- spring-framework-bom -->

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-framework-bom</artifactId>

      <version>${spring.version}</version>

      <type>pom</type>

      <scope>import</scope>

    </dependency>

    <!-- struts2-bom -->

    <dependency>

      <groupId>org.apache.struts</groupId>

      <artifactId>struts2-bom</artifactId>

      <version>${struts2.version}</version>

      <type>pom</type>

      <scope>import</scope>

    </dependency>

    <!-- log4j-bom -->

    <dependency>

      <groupId>org.apache.logging.log4j</groupId>

      <artifactId>log4j-bom</artifactId>

      <version>${log4j2.version}</version>

      <type>pom</type>

      <scope>import</scope>

    </dependency>

  </dependencies>

</dependencyManagement>

 

3、添加项目所用到的依赖,代码如下:

<!-- 项目需要的依赖 -->

<dependencies>

  <!-- Spring dependency start -->

  <!-- spring-context 应用上下文,包含core、beans、aop、expression、spring-jcl -->

  <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-context</artifactId>

  </dependency>

  <!-- spring-orm 持久层框架支持 -->

  <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-orm</artifactId>

  </dependency>

  <!-- spring-aspects AOP事务管理 -->

  <dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-aspects</artifactId>

  </dependency>

  <!-- Spring dependency end -->

  <!-- Struts2 dependency start -->

  <!-- Struts2 核心 -->

  <dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-core</artifactId>

  </dependency>

  <!-- Struts2-spring 插件 -->

  <dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-spring-plugin</artifactId>

  </dependency>

  <!-- Struts2-json 插件 -->

  <dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-json-plugin</artifactId>

  </dependency>

  <!-- Struts2 dependency end -->

  <!-- Hibernate dependency start -->

  <!-- Hibernate 核心 -->

  <dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-core</artifactId>

    <version>${hibernate.version}</version>

  </dependency>

  <!-- 这里列出两种主流连接池,可根据需要任选一种 -->

  <!-- c3p0 连接池 -->

  <dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-c3p0</artifactId>

    <version>${hibernate.version}</version>

  </dependency>

  <!-- hikaricp 连接池 -->

  <dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-hikaricp</artifactId>

    <version>${hibernate.version}</version>

  </dependency>

  <!-- Hibernate dependency end -->

  <!-- log4j dependency start -->

  <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-core</artifactId>

  </dependency>

  <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-api</artifactId>

  </dependency>

  <dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-slf4j-impl</artifactId>

  </dependency>

  <!-- log4j dependency end -->

  <!-- servlet-api Servlet规范-->

  <dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>javax.servlet-api</artifactId>

    <version>4.0.1</version>

    <scope>provided</scope>

  </dependency>

  <!-- servlet-api JSP标签库-->

  <dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>jstl</artifactId>

    <version>1.2</version>

  </dependency>

  <!-- MySQL驱动 -->

  <dependency>

    <groupId>com.mysql</groupId>

    <artifactId>mysql-connector-j</artifactId>

    <version>${mysqldriver.version}</version>

  </dependency>

  <!-- junit 测试 -->

  <dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.13.2</version>

    <scope>test</scope>

  </dependency>

</dependencies>

 

3.1、引入 Struts2 依赖可参考Struts官网

地址:https://struts.apache.org/

依次点击:“DOCUMENTATION”→“Getting Started”→“How To Create A Struts 2 Web Application”

或者直接访问地址:https://struts.apache.org/getting-started/how-to-create-a-struts2-web-application

 

 

 

四、实体类创建与Hibernate映射配置

1、创建实体类,实体类属性的Getter and Setter

代码省略。

2、配置实体类相应的映射文件employee.hbm.xml

“employee.hbm.xml”文件的配置可参考“https://hibernate.org/dtd/”页面的“hibernate-mapping-3.0.dtd”文件。

代码如下:

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

<!DOCTYPE hibernate-mapping PUBLIC

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

    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!-- hibernate实体类映射 -->

<hibernate-mapping package="demo.employee.entity">

    <!-- 类名称与表名称映射 -->

    <class name="Employee" table="employees">

        <!-- emp_no属性与表主键列映射 -->

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

            <generator class="increment"></generator>

        </id>

        <!-- 类其它属性与表其它列名映射。若类的属性和表的列名一致,可以不用设置column -->

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

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

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

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

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

    </class>

</hibernate-mapping>

3、配置hibernate-configuration配置文件,包含数据源的配置、映射文件的引用

“hibernate.cfg.xml”文件的配置可参考“https://hibernate.org/dtd/”页面的“hibernate-configuration-3.0.dtd”文件。

代码如下:

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

<!DOCTYPE hibernate-configuration PUBLIC

        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<!-- hibernate配置 -->

<hibernate-configuration>

    <!-- session-factory属性设置、映射文件的引用 -->

    <session-factory>

        <!-- 数据库连接信息 -->

        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>

        <property name="connection.url">jdbc:mysql://192.168.127.128:3306/employees</property>

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

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

        <!-- 数据库方言,这里设置的是MySQl -->

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

        <!-- 显示实际操作数据库时的SQL -->

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

        <!-- 规范SQL排版,方便查看 -->

        <property name="hibernate.format_sql">true</property>

        <!-- 引用实体类映射文件 -->

        <mapping resource="demo/employee/entity/employee.hbm.xml" />

    </session-factory>

</hibernate-configuration>

4、在pom.xml文件中添加配置,保证扫描到实体类及映射文件

 代码如下:

<!-- 配置resources扫描实体类及其映射文件 -->

<resources>

  <resource>

    <filtering>false</filtering>

    <directory>src/main/java</directory>

    <includes>

      <include>**/*.*</include>

    </includes>

  </resource>

  <resource>

    <directory>src/main/resources</directory>

  </resource>

</resources>

5、将sessionFactory注入到Spring容器中

5.1、配置参考spring官网

官网地址:https://spring.io/

依次点击:“Projects”→“SpringFrameWork”→“Data Access”→“Data Access”→“Object Relational Mapping (ORM) Data Access”→“Hibernate”

或者直接访问地址:https://docs.spring.io/spring-framework/reference/data-access/orm/hibernate.html

5.2、使用applicationContext.xml配置的方式(第一种方式:使用hibernate.cfg.xml配置文件),此种方式在实际的开发中不会使用(可略过)。

新建“applicationContext.xml”,在Spring容器中注入sessionFactory,通过configLocation指定hibernate.cfg.xml文件路径,将文件中的配置信息注入到sessionFactory中:

代码如下:

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

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

    <!--第一种方式:使用hibernate.cfg.xml配置文件-->

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

        <property name="configLocation" value="classpath:hibernate.cfg.xml"/>

    </bean>

</beans>

 

五、测试

1、创建测试类“SessionFactoryTest”,执行测试代码:

代码如下:

public class SessionFactoryTest {

    @Test

    public void test_01(){

        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

        SessionFactory sessionFactory = applicationContext.getBean(SessionFactory.class);

        Session session = sessionFactory.openSession();

        Transaction tx = session.beginTransaction();

        List<Employee> list = session.createQuery("from Employee where first_name = 'Saniya'").setMaxResults(2).list();

        list.forEach(x -> System.out.println(x.getEmp_no() + ":" + x.getFirst_name() + " " + x.getLast_name()));

        tx.commit();

        session.close();

    }

}

2、测试结果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值