• SSH整合


    整合思路:

    第一步 导入jar包

    第二步 搭建struts2环境
    (1)创建action,创建struts.xml配置文件,配置action
    (2)配置struts2的过滤器

    第三步 搭建hibernate环境
    (1)创建实体类
    (2)配置实体类和数据库表映射关系
    (3)创建hibernate核心配置文件
    - 引入映射配置文件

    第四步 搭建spring环境
    (1)创建spring核心配置文件
    (2)让spring配置文件在服务器启动时候加载
    - 配置监听器
    - 指定spring配置文件位置

    第五步 struts2和spring整合
    (1)把action在spring配置(action多实例的)
    (2)在struts.xml中action标签class属性里面写 bean的id值

    第六步 spring和hibernate整合
    (1)把hibernate核心配置文件中数据库配置,在spring里面配置
    (2)把hibernate的sessionFactory在spring配置

    第七步 完成互相注入关系(在dao里面使用hibernateTemplate)
    (1)在dao注入hibernateTemplate对象
    (2)在hibernateTemplate对象中注入sessionFactory

    --------------------------------------------------------------------------------------

    1.整合准备:

    导入jar包:

    struts相关jar:

    hibernate相关jar:

    spring相关jar:

    c3p0链接池:

    spring整合struts:

    spring整合hibernate:

    整合web项目jar:

    mysql驱动:

    SSH整合的时候需注意:javassist.jar重复了,解决办法就是删除一个即可

    整合思路:

    在action中创建service service中创建dao dao中调用方法 执行插入操作  

    action的创建不是在struts中配置实现,hibernate核心配置文件中也不需要配置数据库的部分  统一交给Spring进行处理

    整合代码:

    实体类:User

     1 package org.model;
     2 
     3 public class User {
     4     private int id;
     5     private String name;
     6     private String address;
     7     public int getId() {
     8         return id;
     9     }
    10     public void setId(int id) {
    11         this.id = id;
    12     }
    13     public String getName() {
    14         return name;
    15     }
    16     public void setName(String name) {
    17         this.name = name;
    18     }
    19     public String getAddress() {
    20         return address;
    21     }
    22     public void setAddress(String address) {
    23         this.address = address;
    24     }
    25 
    26 }

    对象关系映射文件:User.hbm.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC 
     3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping>
     6     <class name="org.model.User" table="t_user2">
     7         <id name="id">
     8             <generator class="native"></generator>
     9         </id>
    10         <property name="name"></property>
    11         <property name="address"></property>
    12     </class>
    13 </hibernate-mapping>

    action:

     1 package org.action;
     2 
     3 import org.service.UserService;
     4 
     5 import com.opensymphony.xwork2.ActionSupport;
     6 
     7 public class UserAction extends ActionSupport {
     8     private UserService userservice;
     9     
    10     public void setUserservice(UserService userservice) {
    11         this.userservice = userservice;
    12     }
    13     @Override
    14     public String execute() throws Exception {
    15         System.out.println("action......");
    16         userservice.add();
    17         return NONE;
    18     }
    19     
    20     
    21 
    22 }

    service:

     1 package org.service;
     2 
     3 import org.dao.UserDao;
     4 import org.springframework.transaction.annotation.Transactional;
     5 
     6 @Transactional
     7 public class UserService {
     8     private UserDao userDao;
     9     
    10     
    11     public void setUserDao(UserDao userDao) {
    12         this.userDao = userDao;
    13     }
    14 
    15     public void add(){
    16         System.out.println("service........");
    17         userDao.add();    
    18     }
    19 
    20 }

    dao:

    接口:

    1 package org.dao;
    2 
    3 public interface UserDao {
    4     public void add();
    5 
    6 }

    实现类:

     1 package org.dao;
     2 
     3 import org.model.User;
     4 import org.springframework.orm.hibernate5.HibernateTemplate;
     5 
     6 public class UserDaoImpl implements UserDao {
     7     private HibernateTemplate hibernateTemplate;
     8     
     9 
    10     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
    11         this.hibernateTemplate = hibernateTemplate;
    12     }
    13 
    14     public void add() {
    15         //增加一个对象到数据库
    16         System.out.println("dao.......");
    17         User user=new User();
    18         user.setName("jay");
    19         user.setAddress("中国");
    20         hibernateTemplate.save(user);        
    21 
    22     }
    23 
    24 }

    hibernate核心配置文件:hibernate.cfg.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     5 <!-- 第一步:配置数据库 但是现在不需要  只需要在spring核心配置文件中配置c3p0连接池即可 -->
     6 <!-- 第二步:配置hibernate信息  可选的 -->
     7 <!-- 第三步:把对象关系映射文件加载进来 -->    
     8 <hibernate-configuration>
     9     <session-factory>
    10             <!-- 第二步:配置hibernate信息  可选的 -->
    11             <property name="hibernate.hbm2ddl.auto">update</property>
    12             <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    13             <property name="hibernate.show_sql">true</property>
    14             <property name="hibernate.format_sql">true</property>
    15             
    16             <!-- 第三步:把对象关系映射文件加载进来 -->    
    17             <mapping resource="org/model/User.hbm.xml"/>
    18     </session-factory>
    19 </hibernate-configuration>

    struts.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 <struts>
     6     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
     7     <package name="default" extends="struts-default" namespace="/">
     8         <!--
     9             之前的配置,现在对象的创建都统一交给spring 所以这里只需把spring创建完成的action对象的id值放入class中
    10         -->
    11         <!--
    12             <action name="useraction" class="org.action.UserAction"></action>
    13         -->
    14         <action name="useraction" class="useraction"></action>
    15     </package>
    16 
    17 </struts>

    spring核心配置文件bean.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
     4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
     5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     6     http://www.springframework.org/schema/beans/spring-beans.xsd
     7     http://www.springframework.org/schema/context
     8     http://www.springframework.org/schema/context/spring-context.xsd
     9     http://www.springframework.org/schema/aop
    10     http://www.springframework.org/schema/aop/spring-aop.xsd
    11     http://www.springframework.org/schema/tx
    12     http://www.springframework.org/schema/tx/spring-tx.xsd">
    13 
    14     <!--创建action对象 想其中注入service对象-->
    15     <bean id="useraction" class="org.action.UserAction">
    16         <property name="userservice" ref="userSerivce"></property>
    17     </bean>
    18 
    19     <!-- 配置c3p0连接池对象 -->
    20     <bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    21         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    22         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_sh"></property>
    23         <property name="user" value="root"></property>
    24         <property name="password" value="jay571018"></property>
    25     </bean>
    26 
    27     <!-- 创建sessioinfactory 这里使用spring封装的sessionfactory对象  所以只需要配置即可-->
    28     <bean id="sessionfactory"
    29         class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    30         <property name="dataSource" ref="c3p0"></property>
    31         <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
    32         
    33         <!-- 上面的代码已经不需要了   因为现在没有配置文件  创建sessionfactory的时候用配置方式实现 -->
    34         <!-- hibernate基本配置信息 -->
    35         <!--
    36             <property name="hibernateProperties"> <props> <prop
    37             key="hibernate.hbm2ddl.auto">update</prop> <prop
    38             key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    39             <prop key="hibernate.show_sql">true</prop> <prop
    40             key="hibernate.format_sql">true</prop> </props> </property>
    41         --><!-- 第三步:把对象关系映射文件加载进来 -->
    42         <!--
    43             <property name="mappingResources"> <list>
    44             <value>org/model/User.hbm.xml</value> </list> </property>
    45         -->
    46     </bean>
    47 
    48     <!-- 配置service对象 并且向其中注入dao实现类对象-->
    49     <bean id="userSerivce" class="org.service.UserService">
    50         <property name="userDao" ref="userDaoImpl"></property>
    51     </bean>
    52 
    53     <!-- 配置dao对象  并且向其中注入HibernateTemplate-->
    54     <bean id="userDaoImpl" class="org.dao.UserDaoImpl">
    55         <property name="hibernateTemplate" ref="hibernateTemplate"></property>
    56     </bean>
    57 
    58     <!-- 创建hibernateTemplate模板 需要注入sessionFactory对象 -->
    59     <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
    60         <property name="sessionFactory" ref="sessionfactory"></property>
    61     </bean>
    62 
    63     <!--
    64         配置事务管理器 使用hibernate进行持久化事务操作 不是spring中的jdbc 注入sessionfactory对象,或者DataSource属性注入c3p0对象也行
    65     -->
    66     <bean id="hibernateTransactionManager"
    67         class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    68         <property name="sessionFactory" ref="sessionfactory"></property>
    69     </bean>
    70 
    71 
    72     <!-- 开启事务注解 指定事务管理器  然后去需要事务处理的类上面  标记注解 -->
    73     <tx:annotation-driven transaction-manager="hibernateTransactionManager" />
    74 
    75 </beans>

    web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7   <welcome-file-list>
     8     <welcome-file>index.jsp</welcome-file>
     9   </welcome-file-list>
    10   
    11    <filter>
    12      <filter-name>struts2</filter-name>
    13      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>      
    14      <init-param>
    15           <param-name>actionPackages</param-name>
    16           <param-value>com.mycompany.myapp.actions</param-value>
    17      </init-param>    
    18   </filter>
    19   
    20   <filter-mapping>
    21       <filter-name>struts2</filter-name>
    22        <url-pattern>/*</url-pattern>
    23   </filter-mapping>
    24   
    25   <listener>
    26       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    27   </listener>
    28   <context-param>
    29       <param-name>contextConfigLocation</param-name>
    30       <param-value>classpath:bean.xml</param-value>
    31   </context-param>
    32   
    33 </web-app>

    部署项目:访问action

    控制台打印:

    数据库中自动建表,并且保存了一条记录:

     

  • 相关阅读:
    Flask 入门
    Android studio 混淆打包
    Android----获取包名和sh1
    windows下 安装 rabbitMQ 及操作常用命令
    Nginx
    Linux安装mongoDB步骤和方法
    史上最简单的 SpringCloud 教程 | 终章
    idea 项目热部署设置
    JDK源码阅读顺序
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/Joke-Jay/p/6545054.html
Copyright © 2020-2023  润新知