基于SSH实现管理系统之框架整合篇

基于SSH实现管理系统之框架整合篇

目录

创建项目引入jar包

创建项目引入jar包
Struts2框架开发相应的jar包
Hibernate框架开发相应的jar包
Spring框架开发相应的jar包

Struts2框架需要导入的jar包
lib是它所有的jar包
如果做基本的web开发,可以去apps/目录下看空白的模板struts2-blank.war,看这里的jar包和配置文件

..\struts-2.3.20\apps\struts2-blank\WEB-INF\lib\
基本开发所需的jar包

还需要了解几个基本的jar包
struts2-convention-plugin-2.3.20.jar —-struts2的注解开发的jar包

struts2-spring-plugin-2.3.20.jar —-struts2用于整合spring的jar包

hibernate
..\hibernate-release-4.3.11.Final\lib\required下面的jar包都需要导入
..\hibernate-release-4.3.11.Final\lib\jpa目录下的jar包都需要

日志记录:
..\hibernate-release-4.3.11.Final\lib\optional\ehcache目录下的slf4j-api-1.6.1.jar
这个jar不做具体的日志记录,主要用来整合log4j的jar包

数据库的驱动包

Spring所需要的jar包
IOC

spring-beans-4.0.5.RELEASE.jar
spring-context-4.0.5.RELEASE.jar
spring-core-4.0.5.RELEASE.jar
spring-expression-4.0.5.RELEASE.jar

日志记录:
依赖包中的
com.springsource.org.apache.log4j-1.2.15.jar
com.springsource.org.apache.commons.logging-1.1.1.jar

引入相应的配置文件

Struts2框架的配置文件

web.xml
struts.xml

Hibernate框架配置文件

hibernate.cfg.xml(在SSH整合中该配置文件可以省略)
映射文件

Spring配置文件

web.xml
applicationContext.xml

另外引入log4j的配置文件

log4j.properties

Struts2框架的配置文件
1.1. web.xml
配置struts框架的核心过滤器的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Struts Blank</display-name>
    <filter>
        <!-- 配置Struts2核心Filter的名字 -->
        <filter-name>struts2</filter-name>
        <!-- 配置Struts2核心Filter的实现类 -->
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

        <init-param>
        <!-- 配置Struts2框架默认加载的Action包结构,可以没有。 -->
            <param-name>actionPackages</param-name>
            <param-value>org.apache.struts2.showcase.person</param-value>
        </init-param>

        <!-- 配置Struts2框架的配置提供者类 -->
        <init-param>
            <param-name>configProviders</param-name>
            <param-value>lee.MyConfigurationProvider</param-value>
        </init-param>
    </filter>

    <!-- 配置Filter拦截的URL -->
    <filter-mapping>
        <!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

Spring框架配置文件

web.xml配置spring的监听器

第一种:

<listener>
     <listener-class>org.springframework.context.ContextLoaderListener</listener-class>
</listener>

另一种:

<servlet>
     <servlet-name>context</servlet-name>
     <servlet-class>org.springframework.context.ContextLoaderServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
</servlet>

通过上面的配置,web容器会自动加载applicationcontext.xml初始化。
如果需要指定配置文件的位置,可通过context-param加以指定:

<context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath: myApplicationContext.xml</param-value>
</context-param>

之后,可以通过
WebApplicationContextUtils.getWebApplicationContext方法在web应用中获取applicationcontext的引用。

创建包结构及实体

  • com.ssh
    • action
    • service
    • service
    • dao
    • domain //实体类
  • domain
    • 实体类
    • 参数 定义为 private
    • get()和set()方法

Struts整合Spring

创建页面

新建JSP页面
在页面中引入struts2的标签

<%@ taglib uri="/struts-tags" prefix="s" %>
    使用struts的标签:
<s: xxxx />

编写Action、Service和Dao的类

Service.java中创建一个Dao的实例,并创建其set()和get()方法
Action继承ActionSupport类,实现ModelDriven<>结构(模型驱动)
创建Service实例,并创建其set()和get()方法
模型驱动:
创建实体类的实例,重写getModel方法,返回值类型为该实体类的类型

配置Action、Service和Dao的类

Spring的配置文件applicationContext.xml

<!-- 配置业务层的类-->
<bean id="xxxService" class="com.ssh.service.xxxService">
    <property name="xxxDao" ref="xxxDao"/>
</bean>

<!--配置DAO的类-->
<bean id="xxxDao" class="com.ssh.dao.xxxDao">
</bean>

Struts2和Spring整合的两种方式
Action的类由Struts2自身去创建

jsp页面的表单中设置路径

<s:form action="xxxxxx" method="post" namespace="/" theme="simple">
……

在struts.xml配置

<package name="ssh" extends="struts-default" namespace="/">
    <action name="xxxxxx_*" class="action的全路径" method="{1}">

    </action>
</package>

此时,Dao和Service实现自动注入

Action的类由Spring框架去创建
ApplicationContext.xml中配置Action

<!--配置DAO的类-->
<!--singleton 只有一个实例,也即是单例模式。
prototype访问一次创建一个实例,相当于new。 -->
<bean id="xxxDao" class="com.ssh.dao.xxxDao" scope="prototype">
    <!--手动注入Service-->
    <property name="xxxService" ref="xxxService"/>
</bean>

此时,手动注入Service和Dao

Action在Struts.xml中配置

<package name="ssh" extends="struts-default" namespace="/">
    <action name="xxxxxx_*" class="写ApplicationContext.xml中bean的id" method="{1}">
    </action>
</package>

Spring整合Hibernate框架

创建数据库(hibernate中不手动创建数据库也可以)

创建映射文件

在实体类对应的包下面创建实体类对应的hbm.xml配置文件

<hibernate-mapping>
    <class name="实体类全路径" table="表对应的名称">
        <!--主键->
        <id name="pid" column="pid">
            <generator class="native"/>
        </id>

        <property name="xxxx" column="表对应的列"/>
    </class>
</hibernate-mapping>

Spring整合Hibernate

此时不带Hibernate配置文件

新建一个属性文件 jdbc.properties

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssh
jdbc.username=root
jdbc.password=xxxx

在applicationContext.xml中进行配置

<!--引入外部的属性文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置连接池-->
<!--配置C3P0连接池-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPoolerDataSource">
    <property name="driverClass" value="${jdbc.driverClass}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

<!--配置Hibernate的相关属性-->
<bean id="sessionFactory"   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--注入连接池-->
    <property name="dataSource" ref="dataSource"/>
    <!--配置Hibernate的属性-->
    <property name="hibernateProperties">
        <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.ayto">update</prop>
    </property>
    <!--加载Hibernate中的映射文件-->
    <property name="mappingResources">
        <list>
            <value>com/ssh/domain/xxx.hbm.xml</value>
        </list>
    </property>
</bean>

编写Dao类

在DAO中注入SessionFactory:

<bean id="xxxDao" class="com.ssh.dao.xxxDao">
    <!--注入SessionFactory-->
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

在DAO中调用模板完成保存的操作

this.getHibernateTemplate().save(xxxx)

添加事务管理

在ApplicationContex.xml中添加事务管理

<bean id="transactionManager"   class="org.springframework.orm.hibernate3.HibernateTranscationManager" >
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

开启注解事务:
在ApplicationContex.xml中开启注解事务

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

在Service中添加事务注解
在Service类上添加注解@Transactional

发布了21 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Tracy_Yuan2014/article/details/79186084
今日推荐