zoukankan      html  css  js  c++  java
  • SSH web项目说明

      项目本质是使用SSH框架构建J2EE web,同时对各个模块能自动生成MVC各层的文件而自动实现该模块基本的增删改查的功能。

      总体思路是先搭建好了基于SSH的web工程,配置好各个框架的配置文件确定好各层文件的目录。然后根据数据库表使用eclipse的插件

    jboss hibernate tools 根据数据库表生成实体bean以及hibernate 映射文件,然后根据实体bean 使用反射等生成action、dao、logic、jsp

    等文件实现该实体bean的增删改成功能。

      首先是搭建web工程,新建maven工程使用maven来进行项目管理(maven确实值得一用,介绍资料很多这里不多说),修改pom文件引入

    工程依赖,这里使用了struts2.3.16,spring4.1.2,hibernate4.3.7,都是目前最新的release版。

      首先说下三者的集成,struts通过在web.xml配置

    <!-- 定义Struts2的FilterDispathcer的Filter -->
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    </filter>
    <!-- FilterDispatcher用来初始化Struts2并且处理所有的WEB请求。 -->
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

     通过StrutsPrepareAndExecuteFilter进行初始化以及请求拦截。初始化时会在classpath目录下找配置文件struts.xml。

      spring 通过在web.xml里配置

        <!-- 配置Spring配置文件的位置 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml
                </param-value>
        </context-param>
        <!-- 使用ContextLoaderListener初始化Spring容器 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>

    使用Listener进行初始化,并且根据contextConfigLocation参数找配置文件。

    这样sturts和spring就集成在了web项目里。

     Hibernate可以说是作为spring的一个扩展组件集成的,在spring的配置文件applicationContext中配置

        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
            destroy-method="close">
            <!-- 指定连接数据库的驱动 -->
            <property name="driverClass" value="com.mysql.jdbc.Driver"/>
            <!-- 指定连接数据库的URL -->
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
            <!-- 指定连接数据库的用户名 -->
            <property name="user" value="root"/>
            <!-- 指定连接数据库的密码 -->
            <property name="password" value="**"/>
            <!-- 指定连接数据库连接池的最大连接数 -->
            <property name="maxPoolSize" value="40"/>
            <!-- 指定连接数据库连接池的最小连接数 -->
            <property name="minPoolSize" value="1"/>
            <!-- 指定连接数据库连接池的初始化连接数 -->
            <property name="initialPoolSize" value="1"/>
            <!-- 指定连接数据库连接池的连接的最大空闲时间 -->
            <property name="maxIdleTime" value="20"/>
        </bean>
    
        <!-- 定义Hibernate的SessionFactory -->
        <bean id="sessionFactory"
            class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
            <!-- 依赖注入数据源,注入正是上面定义的dataSource -->
            <property name="dataSource" ref="dataSource"/>
            <!-- mappingResouces属性用来列出全部映射文件 -->
            <property name="mappingLocations">
             <list>
             <value>classpath:/com/way/sshweb/beans/*.hbm.xml</value>
             </list>
            </property>
            <!-- 定义Hibernate的SessionFactory的属性 -->
            <property name="hibernateProperties">
                <props>
                    <!-- 指定数据库方言 -->
                    <prop key="hibernate.dialect">
                        org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                    <!-- 是否根据需要每次自动创建数据库 -->
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                    <!-- 显示Hibernate持久化操作所生成的SQL -->
                    <prop key="hibernate.show_sql">true</prop>
                    <!-- 将SQL脚本进行格式化后再输出 -->
                    <prop key="hibernate.format_sql">true</prop>
                </props>
            </property>
        </bean>

    这样hiernate的sessionFactory由spring的factorybean提供。

    之后就是具体某个数据库表的增删改查模块。首先是建立数据库表,写实体bean以及hibernate映射文件;然后写DAO,让dao类集成自HibernateDaoSupport

    通过getHibernateTemplate()继续增删改查操作;之后是Logic,logic类依赖DAO类,业务类方法主要也是获取实体类列表、获取某个实体等,没有特殊

    处理的话直接调用dao类的函数即可;然后是Action,action继承自ActionSupport,且依赖于logic类,struts action作为controller根据不同的请求调用不同的

    方法,返回不同的Result进行页面渲染。

    这里为了简化客户端编码使用了jquery-easyui(很多组件样式,用来做后台管理类界面很容易),它主要是使用json和后台通讯,比如说列表功能,你只需要返回一串

    json给它,前端就能自动解析成表格列出来。struts2返回json是通过struts2-json-Plugin实现的,使用也很简单。

    最后记得配置struts的action,同时配置spring的dao、logic bean用来注入到action里。

    这里可以看出后端基本功能的代码很大程度上是一个同样的模式,这就可能实现自动化。

    从数据库表到实体bean,hibernate tools工具能很好的完成,就不需要重复,出发实现更高层度的自动化,我们需要实现从实体bean到action,dao,logic的自动化。

    基本通过反射能够完成。

    项目地址:https://github.com/littlecoderonway/sshweb

  • 相关阅读:
    php date函数
    jquery AJAX教程
    Magento 批量修改订单状态为 Completed
    php 复习笔记 乱
    正则替换 php js
    magento订单状态修改
    换个心态继续走IT路
    神奇的HTML5,效果超炫,用Google chrome浏览
    PHP $_SERVER参数
    第六章 线程基础
  • 原文地址:https://www.cnblogs.com/coderway/p/4180518.html
Copyright © 2011-2022 走看看