SSH(二)框架搭建和整合(struts2、spring4、hibernate5)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lnazj/article/details/80986282

 ssh为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。

  集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层),以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。
 
Struts2
1.什么是Struts2?
struct的主要功能就是控制页面跳转,Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

2.struts2框架的运行结构:
这里写图片描述

3.struct2的配置文件

  <!-- 商品模块的Action -->
      <action name="product_*" class="productAction" method="{1}">
         <result name="findByPid">/WEB-INF/jsp/product.jsp</result>
         <result name="findByCid">/WEB-INF/jsp/productList.jsp</result>
         <result name="findByCsid">/WEB-INF/jsp/productList.jsp</result>
      </action>

Spring
1、什么是spring?

 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。  
      
  轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
        控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
        面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
        容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
        框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

2.Spring 的流程图
这里写图片描述

3.Spring 的配置文件

<!-- 用户模块的Action -->
      <bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">
         <!-- 注入Service -->
         <property name="userService" ref="userService"/>    
      </bean>
<!-- 用户模块的Service -->
 <bean id="userService" class="cn.itcast.shop.user.service.UserService">
          <property name="userDao" ref="userDao"/>
      </bean>
<!-- 用户模块的Dao -->
  <bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
         <property name="sessionFactory" ref="sessionFactory"/>
  </bean>

Hibernate
1.什么是Hibernate?
 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

2.Hibernate的配置文件
Hibernate的配置文件包括两部分
1.核心配置文件——hibernate.cfg.xml(主要描述Hibernate的相关配置)
2.映射配置文件——xxx.hbm.xml
核心配置文件主要包括:

1.加载数据库相关信息

<!-- 配置关于数据库连接的四个项:driverClass  url username password -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernateTest</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">yezi</property>

2.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.connection.autocommit">false</prop>
               //自动创建表
               <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
  </property>

3.加载映射配置文件

  <property name="mappingResources">
            <list>
               <value>cn/itcast/shop/user/vo/User.hbm.xml</value>
               <value>cn/itcast/shop/category/vo/Category.hbm.xml</value>
               <value>cn/itcast/shop/product/vo/Product.hbm.xml</value>      
            </list>
   </property>

编写实体类

public class User {
   private Integer uid;
   private String username;
   private String password;
   private String name;
   private String Email;
   private String phone;

   public Integer getUid() {
     return uid;
   }
   public void setUid(Integer uid) {
     this.uid = uid;
   }
   public String getUsername() {
      return username;
   }
   public void setUsername(String username) {
     this.username = username;
   }
   public String getPassword() {
     return password;
   }
   public void setPassword(String password) {
     this.password = password;
   }
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getEmail() {
    return Email;
}
public void setEmail(String email) {
    Email = email;
}
public String getPhone() {
    return phone;
}
public void setPhone(String phone) {
    this.phone = phone;
}  
}

编写映射配置文件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="cn.itcast.shop.user.vo.User" table="user">
     <id name="uid">
        <generator class="native"/>
     </id>
     <property name="username"/>
     <property name="password"/>
     <property name="name"/>
     <property name="email"/>
     <property name="phone"/>
   </class>
</hibernate-mapping>

如果这个属性配置的update,如果数据库中有表,则会自动更新,没有的话会创建表结构。

<!-- 自动创建表 -->
<property name="hibernate.hbm2ddl.auto">update</property>

猜你喜欢

转载自blog.csdn.net/lnazj/article/details/80986282