首页 > 代码库 > SSH web项目说明

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

 

SSH web项目说明