SSH框架整合web项目演示

本文详细介绍SSH(Struts2+Hibernate+Spring)框架的整合步骤及注意事项,包括环境搭建、配置文件编写、代码示例等,帮助读者掌握JavaEE项目中常用的三大框架整合技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、SSH框架整合思想

▪ 三大框架应用在javaee三层结构

这里写图片描述

二、SSH框架整合

使用到的技术:Struts2 + hibernate5.x + spring4.x + mysql数据库

▪ 第一步 导入jar包

(1)导入相关jar包
这里写图片描述

–用于整合Struts2框架和Spring框架的jar包
这里写图片描述
–用于整合持久化框架和Spring框架的jar包
这里写图片描述

(2)导入struts2和hibernate的jar包时,有jar包冲突问题
–在struts2里有jar包
这里写图片描述
–在hibernate里有jar包
这里写图片描述
解决办法:删除低版本的jar包,即3.11.0

▪ 第二步 前期环境搭建

利用相应框架,创建web层、service层、dao层、entity类的对象和配置文件
–注:dao层对象的创建见第七步
这里写图片描述

//action层
public class UserAction extends ActionSupport implements ModelDriven<User> {

    private UserService userService;
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    private User user = new User();
    @Override
    public User getModel() {
        return user;
    }

    @Override
    public String execute() throws Exception {
        userService.add();
        return NONE;
    }
}
//service层
public class UserService {
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void add(User user) {
        userDao.add(user);
    }
}
//entity层
public class User {
    private String uid;
    private String username;
    private String address;

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

▪ 第三步 搭建Struts2框架环境

1 创建struts2核心配置文件,配置action
位置在src下,名称为struts.xml

注意:只需要在spring里配置action对象,不要在struts.xml中配置
<?xml version="1.0" encoding="utf-8" ?>
<!--引入约束-->
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="demo" extends="struts-default" namespace="/">
        <!--在action标签里面不能写action全路径
            class属性值写 在spring配置action对象的bean标签的id值-->
        <action name="user" class="userAction"/>
    </package>
</struts>

2 在web.xml中配置struts2过滤器

<!--配置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>

▪ 第四步 搭建Hibernate框架环境

1 创建实体类和数据库表映射关系的文件
位置在实体类目录下,名称为User.hbm.xml

<?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-mapping>
    <class name="com.demo.entity.User" table="d_user">
        <id name="uid" column="uid">
            <generator class="native"/>
        </id>
        <property name="username" column="username"/>
        <property name="address" column="address"/>
    </class>
</hibernate-mapping>

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://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!--连接数据库信息交由spring配置-->

        <!--配置数据库方言-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--显示hibernate底层生成的sql语句-->
        <property name="hibernate.show_sql">true</property>
        <!--格式化sql语句-->
        <property name="hibernate.format_sql">true</property>
        <!--根据映射创建数据库表-->
        <property name="hibernate.hbm2ddl.auto">create</property>
        <!--引入映射配置文件-->
        <mapping resource="com/demo/entity/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

▪ 第五步 搭建Spring框架环境

1 创建spring核心配置文件
位置在src下面,名称为bean.xml,建议写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:aop="http://www.springframework.org/schema/aop"
       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/aop
   http://www.springframework.org/schema/aop/spring-aop.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx.xsd">    
</beans>

2 让spring配置文件在服务器启动时候加载
(1)在web.xml中配置spring监听器

<!--配置spring监听器-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

(2)在web.xml中指定spring配置文件位置

<!--指定spring配置文件-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:bean.xml</param-value>
</context-param>

▪ 第六步 整合Struts2框架和Spring框架

把action对象和其他bean对象交给spring配置管理

<!--配置bean对象-->
<!--action对象是多实例的,需要设置scope="prototype"-->
<bean id="userAction" class="com.demo.action.UserAction" scope="prototype">
    <property name="userService" ref="userService"/>
</bean>
<bean id="userService" class="com.demo.service.UserService">
    <property name="userDao" ref="userDao"/>
</bean>

▪ 第七步 整合Spring框架和Hibernate框架

1 把Hibernate核心配置文件中的数据库信息交给spring配置

<!--配置连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql:///test"/>
    <property name="user" value="root"/>
    <property name="password" value="admin"/>
</bean>

2 把hibernate的SessionFactory交给spring配置管理

<!--配置SessionFactory对象-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <!--指定数据库信息-->
    <property name="dataSource" ref="dataSource"/>
    <!--指定使用hibernate核心配置文件及其位置-->
    <property name="configLocations" value="classpath:hibernate.cfg.xml"/>
</bean>

3 hibernate模板中有一个HibernateTemplate对象,HibernateTemplate对象对Hibernate框架进行了封装,因此dao层对象直接调用HibernateTemplate里的方法实现功能
创建dao层对象

public class UserDao {
    //使用org.springframework.orm.hibernate5.HibernateTemplate对象
    private HibernateTemplate hibernateTemplate;

    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        this.hibernateTemplate = hibernateTemplate;
    }

    public void add(User user) {
        hibernateTemplate.save(user);
    }
}

4 利用spring创建hibernate模板中的HibernateTemplate对象,并注入SessionFactory对象

<!--创建hibernate模板中的HibernateTemplate对象-->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
    <!--注入SessionFactory对象-->
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

5 把dao对象交给spring配置管理,并注入HibernateTemplate对象

<bean id="userDao" class="com.demo.dao.UserDao">
    <!--注入HibernateTemplate对象-->
    <property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>

▪ 第八步(可选) 配置事务(利用注解方式)

1 利用spring配置事务管理器

<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <!--注入SessionFactory对象-->
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

2 开启事务注解

<!--开启事务注解-->
<tx:annotation-driven transaction-manager="transactionManager"/>

3 在service类上添加注释

@Transactional
public class UserService { }

▪ 第九步 编写jsp页面

利用struts2的表单标签,编写jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
  <head>
    <title>SSH代码测试</title>
  </head>
  <body>
  <s:form action="user.action" method="POST">
    <s:textfield name="username" label="姓名"/>
    <s:textfield name="address" label="所在地"/>
    <s:submit value="提交"/>
  </s:form>
  </body>
</html>

▪ 第十步 代码测试

这里写图片描述

数据库中:

这里写图片描述

测试成功!^_^


三、扩展

▪ 不写Hibernate核心配置文件的方法

把Hibernate核心配置文件中的基本信息配置放到spring中配置

<!--配置SessionFactory对象-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <!--指定数据库信息-->
    <property name="dataSource" ref="dataSource"/>
    <!--配置hibernate核心配置文件中的基本信息-->
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
    <!--引入映射配置文件-->
    <property name="mappingResources">
        <list>
            <value>com/demo/entity/User.hbm.xml</value>
        </list>
    </property>
</bean>

▪ dao层对象注入HibernateTemplate对象的简化写法

1 dao层对象继承HibernateDaoSupport对象

//继承org.springframework.orm.hibernate5.support.HibernateDaoSupport对象
public class UserDao extends HibernateDaoSupport {

    public void add(User user) {
        //得到Hibernate模板对象,并调用save方法
                    this.getHibernateTemplate().save(user);
    }
}

2 把dao对象交给spring配置管理,并注入SessionFactory对象
–不需要用spring创建hibernate模板对象

<bean id="userDao" class="com.demo.dao.UserDao">
    <!--注入SessionFactory对象-->
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值