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

时间: 2024-10-25 07:35:23

SSH web项目说明的相关文章

自动化运维工具之Zabbixzabbix发现_自动注册及web页面状态监控(四)

网络发现(Network Discovery) **网络发现是zabbix最具有特色的功能之一,它能根据用户实现定义好的规则自动添加监控主机和服务等 -->speed up Zabbix deployment -->simplify administration -->use Zabbix in rapidly changing environments without excessive administration **Zabbix的网络发现功能可基于如下信息进行: -->IP

SSH(一)架包的引入

一年多未使用了,有些东西真的会忘. 一.ssh的图形化记忆运作流程 二.Struts2.hibernate.spring需要引用的jar包 Struts2: 基本开发:struts-2.3.32\apps\struts2-blank.war解压后的全部jar, 注解开发:struts2-spring-plugin-2.3.32.jar spring整合:struts2-spring-plugin-2.3.32.jar hibernate: 基本开发: hibernate-release-5.2.

corosync+pacemaker+drbd实现web服务高可用

一:实验环境    节点      OS      IP  DRBD_IP  DRBD用硬盘     VIP web1 centos 5.10 192.168.10.11 172.16.1.1 /dev/sdb 192.168.10.100 web2 centos 5.10 192.168.10.12 172.16.1.2 /dev/sdb 注: 1.其中两节点IP地址已按上图设置好 2.两节点已配置相互ssh信任,并已做了时间同步 二:安装相关软件(节点1和2都安装) 1.安装corosync

SSH深度历险记(九) Struts2+DWZ+Uploadify多文件(文件和图片等。)上传

在gxpt_uas系统,为了实现文件(文件和图片等.,灵活配置)批量上传到mongodb,在学习的过程中,知道mongodb,功能,实现思路:在DWZ的基础上參考官方的实例结合现有的GXPT来实现,期间看了非常多的博客,对于这些框架来说,基本的学习还是应该以文档指导为主,多看官方的手冊(即便来说文档非常少),多查资料.总的来看.能够说这是DWZ集成过来的插件,主要是js来实现,逐步的体会到了JS厉害,我们对于这些前端框架的学习都是一个道理的(easyui.DWZ.ExtJs等等),仅仅要我们有个

搭建ssh框架项目(四)

一.创建控制层 (1)创建VO值对象,对应页面表单的属性值 package com.cppdy.ssh.web.form; /** * VO值对象,对应页面表单的属性值 * VO对象与PO对象的关系: * 相同点:都是javabean * 不同点:PO对象中的属性关联数据库的字段 * VO对象中的属性可以随意增加.修改.删除,对应的页面表单属性 * */ @SuppressWarnings("serial") public class ElecTextForm implements j

ssh框架整合详解一

步骤一:三大框架整合原理图 步骤二:导入hibernate相关的jar包 1.我使用的版本hibernate版本是:hibernate-release-5.0.7.Final.zip,解压后再lib目录可以看到下图目录 2.导入lib/required下的jar包:该目录下的jar包是进行hibernate开发所需要的基本jar包 3.导入lib/jpa目录下的jar包. jpa:java persist api java的持久化规范,JPA是需要Provider来实现其功能的,Hibernat

zabbix专题:第九章 zabbix自动发现功能详解

zabbix自动发现功能详解 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.co zabbix自动发现功能详解 网络发现简介 有100台服务器,不想一台台主机去添加,能不能让zabbix自动添加主机呢,当然可以,网络发现便是这个功能,当然前提条件是所有服务器都已经安装了agent或者snmp(其实也可以不用,鉴于我们大部分功能都用agent,所以请安装上agent),server扫描配置好的ip段,自动添加ho

Vagrant常用命令

Vagrant常用命令 Vagrant的几个命令: vagrant box add 添加box的操作 vagrant init 初始化box的操作 vagrant up 启动虚拟机的操作 vagrant ssh 登录拟机的操作 Vagrant还包括如下一些操作: vagrant box list 显示当前已经添加的box列表 $ vagrant box list base (virtualbox) vagrant box remove 删除相应的box $ vagrant box remove

图解ARP协议(三)ARP防御篇-如何揪出&quot;内鬼&quot;并&quot;优雅的还手&quot;

一.ARP防御概述 通过之前的文章,我们已经了解了ARP攻击的危害,黑客采用ARP软件进行扫描并发送欺骗应答,同处一个局域网的普通用户就可能遭受断网攻击.流量被限.账号被窃的危险.由于攻击门槛非常低,普通人只要拿到攻击软件就可以扰乱网络秩序,导致现在的公共网络.家庭网络.校园网.企业内网等变得脆弱无比. 所以,如何进行有效的ARP防御?作为普通用户怎么防御?作为网络/安全管理员又怎么防御?有哪些ARP防御软件?如果被ARP攻击了,如何揪出"内鬼",并"优雅的还手"?